zoj 3279【樹狀陣列+二分】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3618
很蛋疼,用cin輸入字母竟然TLE!!!
#include<iostream> #include<vector> #include<map> #include<stack> #include<algorithm> #include<queue> #include<list> #include<set> #include<string.h> #include<stdlib.h> #include<math.h> #include<stdio.h> #include<ctype.h> #include<iomanip> using namespace std; #define LL long long #define pi acos(-1) #define N 100010 #define INF 999999999 #define eps 1e-8 //**************************************** //zoj 3279 //
[email protected] All rights reserved. //**************************************** int level[N],tree[N]; int n; int lowbit(int t) { return t&(-t); } void update(int pos,int num) { while(pos<=n) { tree[pos]+=num; pos+=lowbit(pos); } } int sum(int i) { int tot=0; while(i>0) { tot+=tree[i]; i-=lowbit(i); } return tot; } int find(int a) { int i,j,k; int low=1,up=n,mid; while(low<=up) { mid=(low+up)>>1; if(sum(mid)>=a) { up=mid-1; } else low=mid+1; } return low; } char str[10]; char c[100]; int main() { //freopen("a.txt","r",stdin); while(scanf("%d",&n)!=EOF) { int i; for(i=0;i<=n;i++)tree[i]=0; for(i=1;i<=n;i++) { scanf("%d",&level[i]); update(i,level[i]); } int m; scanf("%d",&m); while(m--) { scanf("%s",str); if(str[0]=='p') { int a,b; scanf("%d%d",&a,&b); update(a,-level[a]); level[a]=b; update(a,level[a]); } if(str[0]=='q') { int a; scanf("%d",&a); printf("%d\n",find(a)); } } } return 0; }
相關推薦
zoj 3279【樹狀陣列+二分】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3618很蛋疼,用cin輸入字母竟然TLE!!!#include<iostream> #include<vector> #inclu
CodeForces540E【樹狀陣列+二分】
思路: 1:變換的做一次樹狀陣列求逆序就好了 2:然後就是對於變換的求前面有多少個比他大,後面有多少個比他小 具體: 對於當前位置,前面有多少比他大,然後減去被佔多少位置(二分就好) 對於後面位置,後面有多少比他小,然後減去被佔多少位置(二分就好)
HDU2852【樹狀陣列+二分】
額。。有點遺忘了樹狀陣列特性了。。印象中一直是字首和,然後一定要記住樹狀陣列是把給出的值(值太大可能可以離散化)也就是點到了區間,然後這個點存的值就是由自己來定了。 題意: 百度。 思路: 樹狀陣列是用來標記的!值->區間點! 因為這裡值重複是算的,所有樹狀陣列存的是
【動態主席樹】ZOJ 2112【樹狀陣列+主席樹】
題意: 給定一個區間,求這個區間第k小的數,支援單點修改。 思路: 動態主席樹裸題。 我們先來回顧一下靜態主席樹的做法,對於陣列中每一個位置
BZOJ3155/LNSYOJ96 preprefix【樹狀陣列x2】【做題報告】
這道題是樹狀陣列+數學題,然而我數學並不好 題目描述 對於一個長度為nn的序列a1,a2,a3……ana1,a2,a3……an,其字首和(Prefix Sum)SiSi為前ii個元素的和,即∑k=1iai∑k=1iai。而字首和的字首和(Preprefix Sum)就是把字首和序列S1,S2,S3……Sn
LNSYOJ203最大值【樹狀陣列應用】【做題報告+樹狀陣列深刻理解】
這道題是一個典型的樹狀陣列查詢有幾個比某個數大/小的數的應用 題目描述 給定NN個區間,選定一個固定整數值TT,對於一個區間[ai,bi][ai,bi]. 如果T<aiT<ai,那麼T在這個區間的得分為X, 如果T>biT>bi,那麼T在這個區間的得分為Z, 如果ai≤
牛客練習賽7 E 題 珂朵莉的數列 【樹狀陣列 + 思維】
傳送門 //對於一個數n, 它有n*(n+1)/2個子區間, 問這些子區間的逆序對數之和. //那麼這個區間問題一般都是計算貢獻問題, 所以先分析問題如果有 i < j 且 a[i] > a[j] 那麼區間1<= l <=i, j &
HDU 5592 ZYB's Game 【樹狀陣列】+【二分】
<題目連結> 題目大意: 給你一個由1~n,n個數組成的序列,給出他們每個的字首逆序數,現在要求輸出這個序列。 解題分析: 由字首逆序數很容易能夠得到每個數的逆序數。假設當前數是i,它前面比它小的數為a[i]( i - 1 - i的逆序數即可),我們不難知道,i在前i個數中是第i+1大的。
ZOJ-3279 Ants 樹狀數組 + 二分
char 前綴 owb ons 修改 using print tps clu 題目鏈接: https://cn.vjudge.net/problem/ZOJ-3279 題目大意: 有1到n 那個level 每一個level有a[i]只螞蟻兩種操作 p a b 把第a個le
UOJ276 [清華集訓2016] 汽水 【二分答案】【點分治】【樹狀數組】
答案 很多 right turn lower pair first upper sizeof 題目分析: 這種亂七八糟的題目一看就是點分治,答案有單調性,所以還可以二分答案。 我們每次二分的時候考慮答案會不會大於等於某個值,註意到系數$k$是無意義的,因為我們可以通過轉化使
【11.2校內測試】【狀壓】【矩陣字首和】【樹狀陣列逆序對(題意轉換)】
Solution 簽到水題,直接狀壓列舉所有情況算出答案即可。 Code #include<bits/stdc++.h> #define LL long long using namespace std; inline LL read() { LL x =
【區間偶數異或和】【好題】【離線】【樹狀陣列】【字首和】【前驅思想】
【連結】 http://hznu.club/OJ/problem.php?cid=1227&pid=2 【題意】 求區間出現偶數次的數的異或和 【思路】 首先,沒有修改,可以離線查詢,減少複雜度。 其次,我們容易知道的是:區間出現奇數次的數的異或和,即為區間異或和。
題解 P3374 【【模板】樹狀陣列 1】
恩,這是AC的第一道樹狀陣列呢。 本蒟蒻以前遇到RMQ問題一般都用線段樹或ST表,可惜ST表不支援線上修改,而線段樹程式碼量又太大。 如今終於找到了折中方案:樹狀陣列!!!!程式碼量小,還支援修改! 樹狀陣列也就是二叉索引樹,又被稱為Fenwick樹,然而我個人認為它不能被嚴謹地成為
DNA Evolution 【CodeForces - 828E(827C)】【樹狀陣列】
題目連結 很難的一道題吧,算是挺難了,就是想到挺複雜,作為我這麼個Ju蒻來說。 題目給你一串字串,是初始的字串,然後告訴你一系列操作,問你: (一)、改變點Xi上的字元; (二)、查詢【l,r】區間上的對應與新給的字串匹配的個數是幾個?例如“ACGTC
codeforce828E. DNA Evolution【樹狀陣列統計貢獻】
文章目錄 題目連結: 題目連結: http://codeforces.com/problemset/problem/828/E 題意:先給一個DNA序列,然後有兩種操作 操作1:把 x 位置的鹼基改成 c 操作2:給一個 L 和一個 R ,以及
REQ 【CodeForces - 594D】【樹狀陣列+離線查詢+區間思維】
題目連結 很好的一道題,昨晚上推的,今天由於程式碼能力太弱敲了半天,再不斷的找到自己思維的BUG,於是RE了一發、T了一發、WA了一發,就Ac了,還不錯,那我們來講解一下題目的思路。 我們知道對於一個值的尤拉函式值,就是它的值去乘上它所有的質數-1除以質數:如
歷屆試題 小朋友排隊【樹狀陣列】
歷屆試題 小朋友排隊 時間限制:1.0s 記憶體限制:256.0MB 問題描述 n 個小朋友站成一排。現在要把他們按身高從低到高的順序排列,但是每次只能交換位置相鄰的兩個小朋友。 每個小朋友都有一個不高興的程度。開始的時候,所有小朋友的不高興程度
CHOJ 4201 樓蘭圖騰【樹狀陣列】
描述 在完成了分配任務之後,西部314來到了樓蘭古城的西部。相傳很久以前這片土地上(比樓蘭古城還早)生活著兩個部落,一個部落崇拜尖刀(‘V’),一個部落崇拜鐵鍬(‘∧’),他們分別用V和∧的形狀來代表各自部落的圖騰。 西部314在樓蘭古城的下面發現了一幅巨大的壁畫,壁畫上被
2016 大連區域賽 現場賽 E—Aninteresting game【樹狀陣列】
Aninteresting game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 120 Acce
BZOJ P1103 「POI2007」大都市meg【dfs序】【樹狀陣列+差分】
#include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include &