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

隨筆 - 97, 文章 - 22, 評論 - 81, 引用 - 0
數(shù)據(jù)加載中……

PKU 2637 WorstWeather Ever

題目鏈接:http://poj.org/problem?id=2637

/*
題意:
    給定N(N <= 50000)條信息,表示第yi年的降水量是ri,然后給出M(M <= 10000)
條詢問,每條詢問的格式是Y X,表示自從第Y年以來X這一年是最大的降水量,問這句
話正確與否。
    正確的判斷條件是:
1.Y到X這些年的所有年份的降水量已知。
2.Y的降水量 >= X的降水量。
3.對于每個Z,Y < Z < X,Z的降水量小于X的降水量。
    可能正確的判斷條件是:
其中有一年的降水量不知道。
    錯誤的判斷條件是:
其他情況。

題解:
    二分 + 線段樹(區(qū)間最值)

思路:
    邏輯強題。首先記錄下每個信息所在的連續(xù)塊,如果兩個信息的連續(xù)塊相同,說明
它們之間的年份全部連續(xù)。年份的查找可以采用二分查找,然后就是分情況討論了,對、
輸入的兩個年份Y和X,利用二分查找找到最大的小于等于給定年份的那條記錄fY和fX。

一.如果兩者查到的記錄都在輸入數(shù)據(jù)中出現(xiàn)過,然后判斷他們是不是屬于一個連續(xù)的塊,
只需要下標索引即可,然后是兩種情況:
    1. 如果屬于同一個連續(xù)塊,說明中間的年份全部出現(xiàn)過,然后利用線段樹查找fY的
年份的最大降水量Yr,[fY+1, fX-1]的最大降水量Zr和fX的最大降水量Xr,如果滿足以下
條件:(Yr >= Xr && Zr < Xr)則說明條件屬實,是true的情況,否則則是false。
    2.如果不屬于同一個連續(xù)塊,說明中間的年份不是全部出現(xiàn)過,然后利用線段樹查找
fY的年份的最大降水量Yr,[fY+1, fX-1]的最大降水量Zr和fX的最大降水量Xr,如果滿足
以下條件:(Yr >= Xr && Zr < Xr)則說明當前條件屬實,但是也有可能沒出現(xiàn)過的記錄
破壞這個條件,所以是maybe的情況,否則則是false。

二.如果X能夠查到,則利用線段樹查找[fY+1, fX-1]的最大降水量Zr和fX的最大降水量Xr
,如果滿足以下條件:Zr < Xr則說明條件有可能屬實,是maybe的情況,否則則是false。

三.如果Y能查到,這個條件就比較隱秘了,因為需要滿足(Yr >= Xr && Zr < Xr),而Zr
和Xr無從得知,但是我們可以知道Yr >= Xr > Zr,于是只要判斷當前的Zr是否小于Yr。
如果成立,則是maybe,否則就是false。

四.最后一種情況就是X和Y的年份在先前的數(shù)據(jù)中都沒有出現(xiàn)過,這肯定是maybe的情況。

*/

#include 
<iostream>

using namespace std;

#define maxn 50010

int n, m;

struct point {
    
int year, r;
}
pt[maxn];

struct Tree {
    
int Max;
    
int l, r;
}
T[maxn*4];

int MMax(int a, int b) {
    
return a > b ? a : b;
}


void Build(int p, int l, int r) {
    T[p].l 
= l;
    T[p].r 
= r;
    
if(l == r) {
        T[p].Max 
= pt[l].r;
        
return ;
    }

    
int mid = (l + r) >> 1;
    Build(p
<<1, l, mid);
    Build(p
<<1|1, mid+1, r);
    T[p].Max 
= MMax(T[p<<1].Max, T[p<<1|1].Max);
}


int Query(int p, int l, int r) {
    
if(r < T[p].l || l > T[p].r)
        
return 0;
    
if(l <= T[p].l && T[p].r <= r) 
        
return T[p].Max;
    
return MMax(Query(p<<1, l, r), Query(p<<1|1, l, r));
}


int Binary(int val, int l, int r) {
    
int ans = 0;
    
while(l <= r) {
        
int m = (l + r) >> 1;
        
if(pt[m].year <= val) {
            l 
= m + 1;
            ans 
= m;
        }
else
            r 
= m - 1;
    }

    
return ans;
}


// 連續(xù)的塊種類
int Coces[maxn];

int main() {
    
int i;
    
int t = 0;

    
while(scanf("%d"&n) != EOF) {

        
if(t++ && n) {
            puts(
"");
        }

        
for(i = 1; i <= n; i++{
            scanf(
"%d %d"&pt[i].year, &pt[i].r);
            
if(i == 1{
                Coces[i] 
= 1;
            }
else {
                
if(pt[i].year - pt[i-1].year == 1)
                    Coces[i] 
= Coces[i-1];
                
else
                    Coces[i] 
= Coces[i-1+ 1;
            }

        }

        
if(n)
            Build(
11, n);

        scanf(
"%d"&m);
        
int bufM = m;

        
while(bufM--{
            
int Y, X;
            
int ans; // 0 true 1 maybe 2 false
            scanf("%d %d"&Y, &X);
            
int fY = Binary(Y, 1, n);
            
int fX = Binary(X, 1, n);

            
if(pt[fY].year == Y && pt[fX].year == X) {        
                
// 都能找到數(shù)據(jù)中有的年份

                
int Yr = Query(1, fY, fY);
                
int Zr = Query(1, fY+1, fX-1);
                
// Y+1 == X 的情況在這里Zr返回的是0,所以肯定滿足
                int Xr = Query(1, fX, fX);

                
if(Coces[fY] == Coces[fX]) {
                    
// 之間的年份全部連續(xù)
                    if(Yr >= Xr && Zr < Xr) {
                        ans 
= 0;
                    }
else
                        ans 
= 2;
                }
else {
                    
// 之間的年份不連續(xù)
                    if(Yr >= Xr && Zr < Xr) {
                        ans 
= 1;
                    }
else
                        ans 
= 2;
                }

            }
else if(pt[fX].year == X) {
                
// X這一年數(shù)據(jù)中有
                if(Y + 1 == X) {
                    
// 當前兩年連續(xù)
                    ans = 1;
                }
else {
                    
int Zr = Query(1, fY+1, fX-1);
                    
int Xr = Query(1, fX, fX);
                    
if(Zr < Xr)
                        ans 
= 1;
                    
else
                        ans 
= 2;
                }

            }
else if(pt[fY].year == Y) {
                
int Yr = Query(1, fY, fY);
                
int Zr = Query(1, fY+1, fX);
                
if(Yr > Zr) {
                    ans 
= 1;
                }
else
                    ans 
= 2;
            }
else {
                
// X 和 Y 都沒有出現(xiàn),肯定是maybe
                ans = 1;
            }


            
if(!ans)
                puts(
"true");
            
else if(ans == 1)
                puts(
"maybe");
            
else
                puts(
"false");
        }


        
if(!&& !m) {
            
break;
        }

    }

    
return 0;
}

/*
4
2002 4920
2003 5901
2004 2832
2005 3890
2
2002 2005
2003 2005
3
1985 5782
1995 3048
2005 4890
2
1985 2005
2005 2015
*/

posted on 2011-04-09 14:00 英雄哪里出來 閱讀(1470) 評論(0)  編輯 收藏 引用 所屬分類: 線段樹

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线观看精品一区| 欧美 日韩 国产在线| 亚洲全黄一级网站| 久久婷婷久久| 亚洲——在线| 日韩视频永久免费| 国产综合网站| 国产美女精品免费电影| 欧美日韩国产综合视频在线| 久久久久久网| 性欧美激情精品| 亚洲香蕉在线观看| 亚洲狼人综合| 亚洲国产日韩一区二区| 欧美成人精品高清在线播放| 久久精品国产精品亚洲| 亚洲永久免费av| 亚洲私人影院| 这里是久久伊人| 亚洲美女福利视频网站| 亚洲国产日韩欧美| 在线精品观看| 在线观看视频日韩| 有坂深雪在线一区| 精品成人国产| 亚洲第一毛片| 亚洲国产成人高清精品| 影音先锋日韩精品| 激情五月婷婷综合| 一区三区视频| 亚洲电影av| 91久久国产自产拍夜夜嗨| 亚洲国产精品va在线观看黑人 | 免费视频一区二区三区在线观看| 欧美淫片网站| 欧美一区午夜精品| 久久久成人精品| 久久久福利视频| 久久久夜色精品亚洲| 久久久久免费视频| 狼狼综合久久久久综合网| 久久亚洲综合网| 欧美成人综合在线| 欧美国产日韩一区二区三区| 亚洲国产99| 亚洲精品日日夜夜| 一区二区三区国产精品| 亚洲综合清纯丝袜自拍| 欧美一级片一区| 久久久夜色精品亚洲| 欧美成人精品1314www| 欧美成人在线影院| 欧美三区在线视频| 国产精品日日摸夜夜摸av| 国产婷婷97碰碰久久人人蜜臀| 国内精品免费在线观看| 亚洲国产一成人久久精品| 亚洲狼人综合| 午夜综合激情| 免费在线欧美黄色| 亚洲人成亚洲人成在线观看图片 | 欧美精品一区二区三区蜜桃| 欧美日韩一区二区三区四区在线观看| 国产精品久久9| 狠狠色伊人亚洲综合成人| 亚洲黄色成人久久久| 在线亚洲精品| 久久婷婷麻豆| 99精品国产高清一区二区 | 亚洲女爱视频在线| 久久婷婷影院| 最新国产乱人伦偷精品免费网站| 亚洲私人黄色宅男| 久久精品国产综合| 欧美日韩国产综合视频在线观看中文 | 欧美一级艳片视频免费观看| 玖玖玖国产精品| 日韩香蕉视频| 久久九九精品| 欧美视频官网| 亚洲国产精品va在线看黑人动漫| 亚洲一区美女视频在线观看免费| 老司机久久99久久精品播放免费 | 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美精品在线免费| 国产一区二区三区高清 | 久久久久久综合网天天| 亚洲国产天堂久久综合| 亚洲男人av电影| 欧美极品一区二区三区| 国产主播精品在线| 亚洲一区国产| 亚洲风情亚aⅴ在线发布| 亚洲欧美另类国产| 欧美久久一区| 又紧又大又爽精品一区二区| 亚洲在线1234| 91久久精品一区二区三区| 欧美一区网站| 欧美视频在线免费| 亚洲理论在线观看| 欧美va亚洲va香蕉在线| 午夜亚洲精品| 国产精品久久久久久影视| 亚洲精品国产无天堂网2021| 久久免费精品视频| 亚洲欧美日本国产有色| 欧美日韩亚洲免费| 亚洲久久一区| 亚洲福利视频专区| 久久精品视频va| 国产日韩欧美在线看| 亚洲欧美国产日韩天堂区| 亚洲欧洲精品成人久久奇米网| 久久人人爽人人爽| 韩国成人精品a∨在线观看| 欧美亚洲一区二区在线| 一个色综合av| 欧美日韩美女一区二区| 亚洲精品日韩在线观看| 欧美高清视频一区二区三区在线观看| 欧美影院午夜播放| 国产日韩在线视频| 欧美一级精品大片| 亚洲欧美不卡| 国产精品一区毛片| 午夜久久99| 亚洲主播在线播放| 国产精品一香蕉国产线看观看 | 免费国产一区二区| 久久久av网站| 在线视频观看日韩| 欧美/亚洲一区| 美女任你摸久久| 亚洲日本理论电影| 91久久国产自产拍夜夜嗨| 欧美激情bt| 一区二区三区高清在线观看| 99精品99| 国产精品一区二区在线观看网站| 欧美一区二区三区免费看| 亚洲主播在线观看| 国产在线拍偷自揄拍精品| 久久在线播放| 免费日韩av电影| 99精品视频免费全部在线| 亚洲精品之草原avav久久| 欧美三级韩国三级日本三斤| 亚洲欧美日韩视频二区| 午夜一区二区三区在线观看| 黄色精品在线看| 亚洲国产mv| 欧美性猛交一区二区三区精品| 亚洲欧美激情诱惑| 欧美一级欧美一级在线播放| 亚洲电影免费观看高清完整版| 亚洲高清久久网| 国产精品xxxav免费视频| 久久国产精品一区二区三区| 乱人伦精品视频在线观看| 一区二区三区毛片| 亚洲欧美日韩中文视频| 亚洲大片免费看| 夜夜嗨av一区二区三区四区| 国产午夜精品视频免费不卡69堂| 欧美 日韩 国产精品免费观看| 欧美精品国产精品日韩精品| 午夜亚洲视频| 美日韩精品视频| 亚洲欧美日韩天堂| 久久亚洲视频| 亚洲欧美国产毛片在线| 久久久午夜视频| 亚洲亚洲精品在线观看| 久久国产精品99精品国产| 99国产欧美久久久精品| 午夜一区在线| 99热在这里有精品免费| 欧美亚洲免费在线| 日韩一级二级三级| 欧美一区国产在线| 中文亚洲字幕| 久久尤物电影视频在线观看| 亚洲免费在线| 欧美成人免费小视频| 久久精品一区二区三区中文字幕 | 亚洲免费影视| 蜜桃av久久久亚洲精品| 欧美一区二区三区视频免费| 欧美大片第1页| 久久伊人亚洲| 国产精品一区二区男女羞羞无遮挡| 亚洲电影自拍| 一区免费在线| 亚洲欧洲av一区二区三区久久| 一本色道88久久加勒比精品| 久久久青草婷婷精品综合日韩| 欧美伊人久久| 国产精品高潮在线| 亚洲美女在线一区|