青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

oyjpArt ACM/ICPC算法程序設計空間

// I am new in programming, welcome to my blog
I am oyjpart(alpc12, 四城)
posts - 224, comments - 694, trackbacks - 0, articles - 6

HOJ 11107

Posted on 2008-01-09 14:11 oyjpart 閱讀(7791) 評論(8)  編輯 收藏 引用 所屬分類: ACM/ICPC或其他比賽
Number of stones
Time Limit: 3000ms, Special Time Limit:7500ms, Memory Limit:32768KB
Total submit users: 13, Accepted users: 1
Problem 11107 : No special judgement
Problem description
There are N baskets rounded in a circle, and numbered as 1、2、3、…….、N-1、N, in clockwise. At the beginning, all of the baskets are empty. Some workers go to the moutain to collect stones. When they are back,they put their stones to some baskets. The workers have a habit, Once a worker come back, he choose a baskets, and choose a direction(clockwise or anticlockwise), he put one stone to this basket and move to the next basket according to the direction he has chosen, he continues doing this until all of the stones they have collected have been put down.
Sometimes the workers ask you how many stone it is in the basket, as there are too many baskets, You are to wirte a program to calculate this.


Input
The input test file will contain multiple cases. Each test case:
In the first line of the input contain two integers N,M(3 <= N <= 100000, 0 <= M <= 300000). Following M lines,each line represents an event. There are only three kinds of events: Q, C, U. And the format is:
“Q x”, query the number of stones in the basket x.
“C x num”, a worker comes back and the number of the stones he has picked up is num, he puts down stones from the basket x in clockwise.
“U x num”, a worker comes back and the number of the stone he has picked up is num, he puts down stones from the basket x in anticlockwise.
(x, num are both integers, 1 <= x <= N, 1 <= num <= 10000)


Output
For each query “Q x”, print the current number of stones in basket x.

Sample Input
5 8
            C 5 8
            Q 5
            Q 4
            U 5 3
            C 2 6
            Q 2
            Q 1
            U 2 8
            
Sample Output
2
            1
            4
            3
            
Problem Source
birdman


上次比賽沒有做..補做一個..挺好的題..重寫了點樹模板
 1/*
 2 * 主程序要作的事情
 3 * 1.確定N :必須是2^n,可以取實際n的上界
 4 * 2.build(left, right);
 5 *
 6 */

 7
 8#include <cstdio>
 9#include <cstring>
10
11const int N = 131072;                //必須是2^n,可以取實際n的上界
12
13int upperbound;
14
15struct Node {
16    int i, j, c, m;                    //left, right
17}
 T[N*2];
18
19void bd(int d, int left, int right) {
20    T[d].i = left, T[d].j = right, T[d].c = 0;
21    if(right > left) {
22        bd(d*2+1, left, T[d].m = (left+right)>>1);
23        bd(d*2+2, T[d].m+1, right);
24    }

25}

26
27void build(int left, int right) {
28    upperbound = 1;
29    while(upperbound < right-left+1) upperbound <<= 1;
30    bd(0, left, left + upperbound-1);
31}

32
33void add(int d, int left, int right, int c) {
34    if(left <= T[d].i && right >= T[d].j) {
35        T[d].c += c;
36    }

37    else {
38        if(left <= T[d].m) add(d*2+1, left, right, c);
39        if(right > T[d].m) add(d*2+2, left, right, c);
40    }

41}

42
43int get(int x) // 獲得點的覆蓋次數
44    int idx = upperbound+x-1, sum = 0;
45    do {
46        sum += T[idx].c;
47        idx = (idx-1)>>1;
48    }
 while(idx != 0);
49    return sum;
50}

51
52int n, m;
53
54void Add(int x, int num) {
55    int laps = (num-(n-x))/n;
56    if(laps > 0{
57        add(00, n-1, laps);
58    }

59    num -= laps*n;
60    if(n->= num) {
61        add(0, x, x+num-11);
62    }

63    else {
64        add(0, x, n-11);
65        add(00, (x+num-1)%n, 1);
66    }

67}

68
69int main() {
70    while(scanf("%d %d"&n, &m) != EOF) {
71        build(0, n-1);
72        while(m--{
73            char cmd;
74            int x, num;
75            scanf(" %c"&cmd);
76            if(cmd == 'Q'{
77                scanf("%d"&x); 
78                --x;
79                printf("%d\n", get(x));
80            }

81            else if(cmd == 'C'{
82                scanf("%d %d"&x, &num);
83                --x;
84                Add(x, num);
85            }

86            else if(cmd == 'U'{
87                scanf("%d %d"&x, &num);
88                --x;
89                int y = (x-num+1% n;
90                if(y < 0) y += n;
91                Add(y, num);
92            }

93        }

94    }

95
96    return 0;
97}

Feedback

# re: HOJ 11107   回復  更多評論   

2008-05-24 21:25 by terence_zhao
good pro
but cant follow you

# re: HOJ 11107   回復  更多評論   

2008-05-25 20:31 by sicheng[I am oyjpArt]
如果我們把這個環放成直線(準確的說是一個區間)來看的話,放入某一個籃子并且按照順時針旋轉一直放num,相當于在這個區間插入很多條線段。而進一步說,我們可以考慮只有3中線段,比如
區間是[0,4] 從3開始插入長度為11的線段 則可以分成
[3,4]
[0,4] * 2
[0,0]
而逆時針的情況很好處理,如果你現算出最后停在哪個點上,換一下起始點和終點就是順時針了.

最后是線段樹了,我們把所有的線段都分別插入.最后統計詢問中的點上有多少線段覆蓋就可以了.

要進行點的線段覆蓋查詢,有很多種做法,我覺得比較好的就是從葉節點向上到根節點,去疊加覆蓋數就可以了.

呵呵~~

# re: HOJ 11107   回復  更多評論   

2008-06-03 14:01 by w
建樹可以非遞歸話吧

# re: HOJ 11107   回復  更多評論   

2008-10-13 10:57 by re: HOJ 11107
謝謝大牛了,我搞了半天終于弄懂了什么原理哈

# re: HOJ 11107   回復  更多評論   

2008-10-13 14:14 by re: HOJ 11107
int get(int x) { // 獲得點的覆蓋次數
44 int idx = upperbound+x-1, sum = 0;
45 do {
46 sum += T[idx].c;
47 idx = (idx-1)>>1;
48 } while(idx != 0);
49 return sum;
50}

貌似這里有個錯誤,你的代碼對這組數據通不過:
5 3
C 1 5
Q 1
Q 5

應改為:

int get(int x) { // 獲得點的覆蓋次數
44 int idx = upperbound+x-1, sum = 0;
45 do {
46 sum += T[idx].c;
47 idx -= 1;
if(idx != -1) idx >>= 1;
48 } while(idx >= 0);
49 return sum;
50}

# re: HOJ 11107   回復  更多評論   

2008-10-16 02:30 by oyjpart
Thx!~

# re: HOJ 11107   回復  更多評論   

2009-03-23 20:41 by 成大才子
絕對大牛

# re: HOJ 11107   回復  更多評論   

2009-03-26 00:27 by alpc12
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜日韩激情| 99精品热视频| 国产精品嫩草影院一区二区| 女同一区二区| 国产午夜精品理论片a级探花| 亚洲国产日韩欧美综合久久| 国产亚洲精品成人av久久ww| 99亚洲一区二区| 亚洲人成在线观看一区二区| 久久久天天操| 久久亚洲一区二区| 国产欧美一区二区色老头 | 久久视频在线视频| 国产精品国产三级国产aⅴ入口| 亚洲国产天堂久久国产91| 狠狠色狠色综合曰曰| 亚洲欧美日韩国产中文在线| 亚洲自拍偷拍麻豆| 国产精品久久久久99| 亚洲美女中出| 亚洲性图久久| 欧美日韩一区二区在线视频| 亚洲精选91| 一区二区三区精品国产| 欧美日产国产成人免费图片| 亚洲黄色精品| 在线性视频日韩欧美| 欧美三级乱码| 亚洲一级一区| 久久九九热re6这里有精品| 国产无一区二区| 久久九九热免费视频| 欧美不卡高清| 日韩视频免费| 欧美色欧美亚洲另类二区| 99国产精品国产精品久久| 亚洲线精品一区二区三区八戒| 欧美日韩一区国产| 亚洲欧美激情视频| 免费高清在线视频一区·| 亚洲福利视频专区| 欧美理论电影网| 中日韩美女免费视频网址在线观看| 亚洲欧美另类在线观看| 国产区精品视频| 久久―日本道色综合久久| 亚洲国产婷婷综合在线精品| 亚洲影院高清在线| 国产一区二区三区四区在线观看| 久久夜色精品一区| 亚洲三级免费观看| 欧美在线中文字幕| 亚洲国产精品尤物yw在线观看| 欧美日韩1080p| 欧美一区二区在线免费观看 | 亚洲国产精品尤物yw在线观看| 日韩一级成人av| 国产九九视频一区二区三区| 久久免费视频在线观看| 99re6热在线精品视频播放速度| 亚洲欧美日韩在线不卡| 亚洲风情亚aⅴ在线发布| 欧美午夜a级限制福利片| 久久国产精品久久w女人spa| 亚洲国产高清自拍| 欧美在线视频a| 日韩视频―中文字幕| 国产日韩欧美精品| 欧美日韩国产成人在线免费| 欧美一区二区三区播放老司机| 亚洲高清一区二| 久久精品色图| 中国女人久久久| 亚洲第一免费播放区| 国产精品久久久久av| 欧美成人一区二区在线| 午夜综合激情| 一区二区欧美激情| 亚洲高清免费视频| 久久久久国产精品厨房| 亚洲午夜日本在线观看| 亚洲国产成人精品女人久久久| 国产精品高精视频免费| 欧美国产日韩精品| 久久精品视频在线| 性刺激综合网| 亚洲小视频在线| 亚洲免费精彩视频| 亚洲激情在线播放| 免费观看30秒视频久久| 久久九九电影| 欧美一级理论片| 亚洲欧美经典视频| 99在线精品观看| 91久久在线视频| 亚洲国产欧美一区| 亚洲电影一级黄| 一区二区在线观看视频在线观看| 国产日韩精品一区二区| 国产乱码精品1区2区3区| 国产精品久久久久久久久久久久久久| 欧美国产视频一区二区| 免费日韩成人| 欧美777四色影视在线| 免费h精品视频在线播放| 久久另类ts人妖一区二区| 久久国产精品亚洲77777| 午夜精品久久久久久久99樱桃 | 国产精品毛片一区二区三区| 国产精品久久久久久久电影| 国产精品成人免费视频 | 亚洲精选视频在线| 亚洲蜜桃精久久久久久久| 日韩亚洲视频在线| 正在播放亚洲| 香蕉久久a毛片| 久久久久久色| 欧美成人黄色小视频| 亚洲国产精品激情在线观看| 久久久天天操| 欧美91福利在线观看| 亚洲国产成人久久综合| 亚洲黄色精品| 中文精品视频| 欧美在线视频在线播放完整版免费观看 | 久久午夜羞羞影院免费观看| 欧美一区二区视频免费观看| 午夜国产精品视频免费体验区| 欧美中文在线观看| 免费不卡在线观看| 欧美日韩国产麻豆| 国产女主播一区二区三区| 黄色精品在线看| 亚洲美女91| 亚洲欧美日韩精品久久久久| 欧美一二区视频| 女女同性女同一区二区三区91| 欧美激情一区| 亚洲午夜一区二区三区| 久久久久久穴| 欧美日韩亚洲一区二区三区| 国产一区激情| 在线亚洲自拍| 久久不射电影网| 亚洲高清不卡一区| 午夜精品一区二区三区电影天堂| 噜噜噜在线观看免费视频日韩| 欧美午夜精品久久久久久人妖 | 国产精品久久久久久久久久免费 | 久久精品视频免费| 亚洲国内欧美| 欧美一区激情| 欧美久久久久久蜜桃| 国产亚洲欧美一区二区三区| 9久re热视频在线精品| 久久久精品一品道一区| 99视频在线精品国自产拍免费观看| 欧美自拍偷拍| 国产精品二区在线| 亚洲精选一区二区| 麻豆精品在线视频| 亚洲欧美日韩第一区| 欧美日韩aaaaa| 亚洲国产精品一区在线观看不卡| 欧美一区二区大片| 日韩视频免费在线观看| 免费视频一区| 激情久久久久久| 欧美尤物一区| 中文在线一区| 欧美日韩精品系列| 亚洲乱码国产乱码精品精98午夜 | 欧美激情成人在线| 亚洲大片免费看| 久久精品亚洲热| 午夜日韩视频| 国产精品一级| 性欧美大战久久久久久久久| 日韩视频在线观看一区二区| 裸体女人亚洲精品一区| 悠悠资源网亚洲青| 久久女同精品一区二区| 性欧美1819性猛交| 国产日韩一级二级三级| 欧美一区二区三区四区在线观看| 99在线|亚洲一区二区| 欧美精品电影| 宅男66日本亚洲欧美视频| 亚洲国产精品第一区二区三区 | 久久久精品国产免大香伊| 国产日韩精品在线播放| 欧美资源在线| 欧美一区二区三区视频| 国产人久久人人人人爽| 久久精品亚洲精品| 久久成人久久爱| 亚洲成色777777女色窝| 亚洲电影免费观看高清| 欧美高清一区| 亚洲一区二区欧美|