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

oyjpArt ACM/ICPC算法程序設(shè)計(jì)空間

// 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 閱讀(7783) 評(píng)論(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


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

 7
 8#include <cstdio>
 9#include <cstring>
10
11const int N = 131072;                //必須是2^n,可以取實(shí)際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) // 獲得點(diǎn)的覆蓋次數(shù)
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   回復(fù)  更多評(píng)論   

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

# re: HOJ 11107   回復(fù)  更多評(píng)論   

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

最后是線段樹了,我們把所有的線段都分別插入.最后統(tǒng)計(jì)詢問中的點(diǎn)上有多少線段覆蓋就可以了.

要進(jìn)行點(diǎn)的線段覆蓋查詢,有很多種做法,我覺得比較好的就是從葉節(jié)點(diǎn)向上到根節(jié)點(diǎn),去疊加覆蓋數(shù)就可以了.

呵呵~~

# re: HOJ 11107   回復(fù)  更多評(píng)論   

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

# re: HOJ 11107   回復(fù)  更多評(píng)論   

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

# re: HOJ 11107   回復(fù)  更多評(píng)論   

2008-10-13 14:14 by re: HOJ 11107
int get(int x) { // 獲得點(diǎn)的覆蓋次數(shù)
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}

貌似這里有個(gè)錯(cuò)誤,你的代碼對(duì)這組數(shù)據(jù)通不過:
5 3
C 1 5
Q 1
Q 5

應(yīng)改為:

int get(int x) { // 獲得點(diǎn)的覆蓋次數(shù)
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   回復(fù)  更多評(píng)論   

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

# re: HOJ 11107   回復(fù)  更多評(píng)論   

2009-03-23 20:41 by 成大才子
絕對(duì)大牛

# re: HOJ 11107   回復(fù)  更多評(píng)論   

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| 欧美日韩国产天堂| 久久一区二区三区av| 久久午夜av| 久久久综合激的五月天| 美女国产一区| 欧美国产专区| 欧美三级免费| 国产麻豆精品在线观看| 国产一区二区剧情av在线| 在线精品视频一区二区| 91久久久在线| 亚洲小说区图片区| 久久久久.com| 亚洲国产一区二区三区高清| 亚洲精品欧美极品| 亚洲一区日韩| 蜜臀99久久精品久久久久久软件| 欧美日本不卡| 国产精品专区第二| 亚洲电影在线看| 亚洲视频在线看| 久久夜色撩人精品| 亚洲精品国产系列| 欧美一区二区三区在| 牛牛影视久久网| 国产女主播在线一区二区| 亚洲人精品午夜| 性欧美长视频| 最新成人av网站| 久久久久一区二区三区| 国产精品s色| 亚洲人成小说网站色在线| 欧美中文在线视频| 日韩亚洲欧美高清| 蜜臀a∨国产成人精品| 狠狠色综合网站久久久久久久| 亚洲亚洲精品在线观看| 欧美电影免费观看高清| 性色一区二区| 国产精品扒开腿爽爽爽视频 | 亚洲视频免费在线观看| 久久亚洲欧美| 国产视频精品网| 欧美黄色一区| 国产在线视频欧美一区二区三区| 中文一区在线| 亚洲精品在线视频观看| 欧美黑人多人双交| 91久久精品美女| 嫩模写真一区二区三区三州| 欧美一区二区视频在线观看2020| 国产精品久久久久永久免费观看 | 午夜精彩视频在线观看不卡| 亚洲人人精品| 欧美高清视频一二三区| 亚洲激情视频在线| 欧美国产精品日韩| 久久中文字幕一区| 在线观看三级视频欧美| 久久深夜福利免费观看| 久久精品国产免费观看| 一区二区三区自拍| 蜜桃伊人久久| 欧美成人一区二区三区在线观看 | 国产欧美精品| 久久av二区| 久久久国产精彩视频美女艺术照福利| 国产一区二区三区精品欧美日韩一区二区三区 | 久久精精品视频| 午夜精品免费| 国产日本欧美一区二区三区在线| 午夜精品久久久久久久蜜桃app| 一卡二卡3卡四卡高清精品视频| 欧美国产亚洲视频| 亚洲图片欧美午夜| 亚洲一区二区三区在线视频| 国产欧美一区二区三区另类精品 | 精品成人久久| 欧美成人中文| 欧美日本免费一区二区三区| 亚洲一区二区免费看| 亚洲午夜久久久| 国模精品一区二区三区色天香| 蜜臀va亚洲va欧美va天堂| 欧美成人免费播放| 一本色道精品久久一区二区三区| 99精品国产在热久久| 国产欧美日韩激情| 亚洲国产精品热久久| 久久九九免费视频| 亚洲日韩中文字幕在线播放| 蜜臀av一级做a爰片久久| 欧美成人午夜视频| 欧美一区二区三区精品| 久久影视精品| 正在播放日韩| 久久久精品视频成人| av成人黄色| 小黄鸭精品aⅴ导航网站入口 | 韩国av一区二区| 亚洲激情中文1区| 国产日韩精品视频一区| 亚洲欧洲在线一区| 国产小视频国产精品| 日韩一区二区精品| 在线播放日韩欧美| 亚洲免费人成在线视频观看| 一本久道久久综合狠狠爱| 欧美一区二区三区的| 亚洲最快最全在线视频| 久久精品国产精品| 亚洲欧美成人精品| 欧美高清视频免费观看| 麻豆国产精品777777在线| 国产精品福利在线观看网址| 亚洲国产一区视频| 国产在线视频欧美| 亚洲午夜视频| 99国产精品99久久久久久粉嫩| 欧美亚洲午夜视频在线观看| 国产精品青草久久久久福利99| 亚洲国产另类 国产精品国产免费| 国产在线播放一区二区三区| 一区二区三区欧美视频| 亚洲精品在线视频| 久久亚洲一区二区三区四区| 欧美在线亚洲在线| 国产精品美女久久| av成人福利| 夜夜爽夜夜爽精品视频| 欧美福利视频网站| 亚洲成色777777女色窝| 在线观看日韩专区| 久久综合精品国产一区二区三区| 久久久久久久网| 国产午夜亚洲精品羞羞网站| 欧美在线视频免费播放| 久久精品免费电影| 国产主播一区二区| 久久精品国产69国产精品亚洲| 久久精品国产欧美激情| 国产一区99| 久久久99国产精品免费| 免费高清在线视频一区·| 在线观看视频一区| 男女视频一区二区| 最新成人在线| 亚洲无线视频| 国产精品视频第一区| 欧美有码在线视频| 欧美xxx成人| 一区二区毛片| 国产女主播一区| 久久亚洲午夜电影| 亚洲精品乱码久久久久久按摩观| 欧美午夜电影在线| 午夜精品美女久久久久av福利| 国产精品老牛| 欧美一区二区观看视频| 欧美高清一区| 国产精品99久久久久久久女警| 国产精品一区二区久激情瑜伽| 久久国产精品免费一区| 亚洲国产视频一区| 午夜国产精品视频| 韩国三级在线一区| 欧美美女喷水视频| 欧美在线欧美在线| 亚洲精品在线观看免费| 久久国产一二区| 日韩亚洲精品视频| 国产日韩精品入口| 欧美激情视频在线播放| 午夜精品在线看| 亚洲国产综合在线| 欧美亚洲免费在线| 最新69国产成人精品视频免费| 国产精品日韩欧美一区二区三区| 久久婷婷蜜乳一本欲蜜臀| 亚洲免费网站| 亚洲高清视频的网址| 久久精品国产77777蜜臀| 99日韩精品| 雨宫琴音一区二区在线| 国产精品分类| 欧美高清在线播放| 欧美在线观看视频在线| 日韩网站在线观看| 女女同性精品视频| 久久九九免费| 欧美一区二区三区久久精品| 一区二区高清在线| 亚洲人午夜精品| 在线成人av| 国产一级久久| 国产日韩av一区二区| 国产精品综合视频| 欧美色精品在线视频|