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

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

// 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 閱讀(7775) 評論(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) // 獲得點的覆蓋次數(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ù)  更多評論   

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

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

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

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

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

呵呵~~

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

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

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

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

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

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

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

應(yīng)改為:

int get(int x) { // 獲得點的覆蓋次數(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ù)  更多評論   

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

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

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

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

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>
            久久婷婷麻豆| 久久高清国产| 欧美日韩一区二区三区高清| 一区久久精品| 欧美激情一区二区三区四区 | 麻豆精品在线视频| 美女国产精品| 日韩视频在线一区二区三区| 亚洲精品在线看| 国产精品久久久久久久久久直播| 欧美在线视频一区二区| 亚洲欧美综合另类中字| 国产免费观看久久| 免费观看欧美在线视频的网站| 免费黄网站欧美| 亚洲欧美中文日韩v在线观看| 亚洲欧美日韩精品久久亚洲区| 国内精品伊人久久久久av一坑| 毛片av中文字幕一区二区| 欧美国产日韩一区二区在线观看| 亚洲一区二区三区高清| 欧美一区二区精品| 亚洲电影下载| 亚洲小少妇裸体bbw| 在线日韩欧美视频| 亚洲午夜精品国产| 亚洲国产日韩欧美综合久久 | 久久精品中文字幕一区二区三区| 久久久视频精品| 亚洲网站视频| 久久久午夜视频| 一区二区免费在线视频| 亚洲尤物精选| 日韩视频专区| 久久免费国产精品1| 亚洲无亚洲人成网站77777| 欧美亚洲一区二区在线| 激情成人中文字幕| 亚洲天堂网站在线观看视频| 亚洲成在人线av| 亚洲欧美激情四射在线日 | 国产日韩精品综合网站| 亚洲国产综合视频在线观看| 欧美午夜精品一区| 农夫在线精品视频免费观看| 欧美视频福利| 欧美国产日本| 国产一区二区精品久久| 日韩写真在线| 亚洲国产专区| 欧美自拍偷拍午夜视频| 亚洲欧美日本精品| 欧美另类69精品久久久久9999| 久久久水蜜桃av免费网站| 欧美日韩一区二区在线播放| 久久免费精品日本久久中文字幕| 欧美午夜不卡在线观看免费 | 亚洲国产成人在线播放| 国产一区二区中文| 亚洲一区影院| 亚洲一区二区三区四区在线观看 | 国产女人aaa级久久久级| 亚洲精品你懂的| 亚洲日本va午夜在线影院| 久久久综合免费视频| 久久免费视频网站| 国产一区二区三区四区老人| 亚洲午夜国产一区99re久久| 亚洲综合色视频| 欧美日韩在线观看一区二区三区| 亚洲国产精品电影在线观看| 91久久午夜| 久久天天躁夜夜躁狠狠躁2022 | 欧美成人精品| 91久久精品久久国产性色也91| 久久久久国产精品一区三寸| 午夜精品一区二区三区在线播放| 国产精品美女午夜av| 99视频在线精品国自产拍免费观看 | 欧美特黄一区| 99日韩精品| 亚洲欧美一区二区视频| 国产精品日韩久久久久| 亚洲在线黄色| 久久久国产精彩视频美女艺术照福利| 国产九色精品成人porny| 午夜精品成人在线| 久久亚洲精选| 亚洲日本va午夜在线电影| 欧美日韩亚洲不卡| 亚洲综合欧美日韩| 久久综合色88| 亚洲日本在线观看| 欧美视频1区| 性欧美暴力猛交另类hd| 欧美 日韩 国产精品免费观看| 亚洲高清一二三区| 欧美午夜久久久| 欧美亚洲一区在线| 亚洲青色在线| 香蕉久久久久久久av网站| 国内久久精品| 欧美日韩在线免费观看| 欧美伊久线香蕉线新在线| 欧美成人免费全部| 亚洲一区视频在线观看视频| 国产日韩欧美亚洲| 欧美国产精品日韩| 亚洲欧美国产另类| 亚洲经典一区| 久久久国产亚洲精品| 一区二区欧美在线观看| 国内精品久久久久久久97牛牛| 欧美成人一品| 欧美一区二区三区日韩视频| 亚洲国产专区| 久久中文字幕导航| 亚洲欧美大片| 99综合电影在线视频| 国产在线精品自拍| 欧美日韩在线大尺度| 麻豆国产精品一区二区三区| 亚洲女人天堂成人av在线| 欧美国产日韩一区二区三区| 欧美中文字幕精品| 亚洲午夜激情免费视频| 在线成人免费观看| 国产精品有限公司| 欧美精选午夜久久久乱码6080| 久久成人免费电影| 亚洲一区精品在线| 日韩亚洲欧美综合| 91久久极品少妇xxxxⅹ软件| 久久视频在线看| 欧美亚洲在线| 午夜一区二区三区不卡视频| 一区二区免费在线观看| 亚洲免费av网站| 在线观看中文字幕亚洲| 国产一区二区三区直播精品电影| 欧美午夜视频在线观看| 欧美护士18xxxxhd| 欧美高清在线观看| 免费欧美日韩国产三级电影| 久久久久久免费| 久久精品国产96久久久香蕉| 香蕉免费一区二区三区在线观看 | 亚洲一区在线观看视频| 一区二区三区精品在线| 日韩亚洲国产精品| 99视频精品全国免费| 亚洲视频第一页| 在线视频欧美一区| 亚洲天堂视频在线观看| 亚洲制服av| 欧美在线观看视频| 久久精品欧洲| 久久综合五月| 欧美大片免费久久精品三p | 久久噜噜亚洲综合| 久久婷婷一区| 欧美激情亚洲一区| 欧美日韩精品免费在线观看视频| 欧美日韩一卡| 国产精品久久影院| 国产亚洲欧美一区| 曰韩精品一区二区| 亚洲精品国产视频| 亚洲一区精彩视频| 久久精品99国产精品| 女生裸体视频一区二区三区| 91久久国产自产拍夜夜嗨| 亚洲精品免费在线| 午夜影视日本亚洲欧洲精品| 久久精品123| 免费日韩av片| 国产精品www| 狠狠色丁香婷婷综合影院| 91久久久久久| 欧美一级精品大片| 亚洲第一精品久久忘忧草社区| 91久久精品国产91性色| 亚洲一区二区三区四区五区午夜| 欧美一区二区三区在线观看视频| 久久久精品免费视频| 欧美色图麻豆| 在线日韩日本国产亚洲| 在线综合亚洲| 麻豆精品视频在线| 亚洲网站在线看| 久久天天狠狠| 国产伦精品一区二区| 亚洲欧洲日韩女同| 欧美伊人久久久久久久久影院| 欧美波霸影院| 性欧美1819性猛交| 国产精品video| 亚洲精品美女91| 久久久久久香蕉网| 在线亚洲+欧美+日本专区|