Codeforces Round #220 (Div. 2) D 树状数组 && 二分_html/css_WEB-ITnose
/*题目*/
题意:给了n,m,然后一个包含m个数的数组nnum,数组默认从小到大排序,然后是 n个操作,输入一个数x,若x为0,把0加到这个字符串的末尾,若x为1,把1加到这个字符串的末尾,若x为-1,那么把字符串里的 下标 与 nnum数组里的元素相等的 给删除,字符串一开始是空的,问你最后字符串里有什么,若为空 就输出 POOR STACK
这题目看这操作一般都很容易联想到线段树,树状数组,一开始我建了个树状数组,但是超时了,毕竟操作很多,而且 在删除操作里,若nnum数组很大,等同于10^12的复杂度,只能优化,一般来说是用二分了,直接以这个串的某个位置是否为空来建立树状数组,每一次加在最后就不用说了,直接加就可以,关键在于删除,首先删除,要第一步二分查找出 要删除的最后一位,比如字符串长度为7,而nnum数组里 有个8,其实8这个位置不需要删除的,但是这个还是超时,于是想到在树状数组里删除的时候也需要二分,可是写了一直错,后来借鉴了杰哥的发现,原来WA在这里,比如 当前字符串为01010,需要删除 1,3,4位置的字符,要轮着来,当你删除1号位置的时候,字符串变成了1010,你在树状数组里也是要删除1节点的状态,所以原来的3号位置在当前变成了2号位置,当你删了3号以后变成了110 ,原来的4号位置变成了2号位置,所以每删除一次,下标会发生变化,但是没事,发现前面操作了几次而你原来的下标就比当前 减少了几,所以 nnum[i] - i 其实就是 当前需要删除的 元素 在 树状数组里的位置
int n,m;int c[1000000 + 55];int nnum[1000000 + 55];int aa[1000000 + 55];int sum[1000000 + 55];int len;void init() { memset(c,0,sizeof(c)); memset(aa,-1,sizeof(aa));}bool input() { while(cin>>n>>m) { for(int i=0;i<m>>nnum[i]; return false; } return true;}int lowbit(int x) { return x&(-x);}void add(int i,int val) { while(i 0) { sum += c[i]; i -= lowbit(i); } return sum;}void binary_find(int pos,int id) { int l = 1; int r = n; while(l >1; int ret = get_sum(mid); if(aa[mid] == -1) { if(ret >= nnum[pos] - id) r = mid - 1; else l = mid + 1; } else if(ret == nnum[pos] - id) { add(mid,-1); aa[mid] = -1; len--; break; } else if(ret > nnum[pos] - id) r = mid - 1; else if(ret >type; if(type == -1) { if(len == 0)continue; if(nnum[0] > len)continue; int now = lower_bound(nnum,nnum + m,len) - nnum; for(int i=0;i <br> <br> <p></p> <p><br> </p> </m>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.
