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

隨筆 - 97, 文章 - 22, 評(píng)論 - 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.對(duì)于每個(gè)Z,Y < Z < X,Z的降水量小于X的降水量。
    可能正確的判斷條件是:
其中有一年的降水量不知道。
    錯(cuò)誤的判斷條件是:
其他情況。

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

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

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

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

三.如果Y能查到,這個(gè)條件就比較隱秘了,因?yàn)樾枰獫M足(Yr >= Xr && Zr < Xr),而Zr
和Xr無從得知,但是我們可以知道Yr >= Xr > Zr,于是只要判斷當(dāng)前的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) {
                    
// 當(dāng)前兩年連續(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 英雄哪里出來 閱讀(1459) 評(píng)論(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>
            欧美大片第1页| 久久精品国产免费观看| 在线免费高清一区二区三区| 午夜日韩福利| 亚洲尤物视频在线| 99精品久久久| 99国内精品| 亚洲免费观看在线观看| 91久久精品国产91久久性色| 老司机一区二区| 猛男gaygay欧美视频| 玖玖玖国产精品| 欧美成人免费一级人片100| 你懂的国产精品| 亚洲电影av在线| 亚洲伦伦在线| 亚洲一区尤物| 久久精品国产清自在天天线| 久久精品国产69国产精品亚洲| 一区二区三欧美| 亚洲午夜精品| 欧美影院精品一区| 欧美一区2区三区4区公司二百 | 亚洲精品视频一区| 亚洲一区二区免费在线| 久久人人97超碰精品888| 最新亚洲激情| 在线视频亚洲一区| 小处雏高清一区二区三区| 欧美a级在线| 亚洲香蕉成视频在线观看| 久久精品综合一区| 欧美日韩一区二区在线观看 | 国产视频在线观看一区二区| 亚洲精品欧美在线| 久久久久国内| 亚洲一区二区三区精品视频| 欧美高清视频免费观看| 国模大胆一区二区三区| 亚洲影院污污.| 日韩视频一区二区| 欧美激情亚洲综合一区| 玉米视频成人免费看| 欧美在线短视频| 国产精品99久久久久久人| 欧美日产在线观看| 亚洲美女免费精品视频在线观看| 麻豆免费精品视频| 久久国产精品一区二区三区| 国产视频亚洲精品| 欧美一级黄色录像| 亚洲欧美日韩在线| 国产伦精品一区二区三区高清版| 一区二区三区视频在线播放| 亚洲激情综合| 欧美看片网站| 亚洲最新色图| 一区二区三区www| 国产精品成人va在线观看| 一二三区精品福利视频| 日韩一区二区精品| 国产精品第2页| 欧美一区二区三区成人| 午夜国产精品视频| 国产在线不卡视频| 欧美www在线| 欧美大片在线观看一区| 日韩亚洲精品视频| 亚洲香蕉在线观看| 国产日本精品| 母乳一区在线观看| 欧美精品久久久久久久| 亚洲午夜精品| 欧美一区=区| 亚洲日本一区二区三区| 日韩午夜激情| 国产欧美日韩一区二区三区| 久久久久久久综合| 欧美精品v日韩精品v韩国精品v| 一区二区三区日韩精品| 亚洲欧美日韩国产另类专区| 国内外成人免费激情在线视频网站| 开心色5月久久精品| 欧美高清视频一区| 欧美一区二区视频97| 久久人人97超碰人人澡爱香蕉| 亚洲三级国产| 久久久国产一区二区三区| 久久资源在线| 欧美wwwwww| 欧美日韩www| 欧美一区二区久久久| 久久在线观看视频| 亚洲视屏一区| 久久久久久久久久久久久女国产乱 | 欧美刺激性大交免费视频| 亚洲夜间福利| 欧美伊人久久| 一本色道**综合亚洲精品蜜桃冫 | 欧美高清在线视频| 亚洲永久网站| 美女被久久久| 欧美在线观看你懂的| 免费av成人在线| 性一交一乱一区二区洋洋av| 久久中文欧美| 久久精品国产精品 | 亚洲人午夜精品| 国产一区二区三区四区五区美女| 91久久精品日日躁夜夜躁欧美| 国产精品永久| 亚洲毛片网站| 亚洲精品影院| 美女爽到呻吟久久久久| 久久久久久综合网天天| 欧美视频三区在线播放| 亚洲国产精品专区久久 | 亚洲欧美国产一区二区三区| 老司机免费视频久久| 久久久久久精| 国产精品三上| 一本久久a久久免费精品不卡| 亚洲国产免费看| 久久久久久久久久久久久9999| 欧美一区二区免费| 国产精品久久毛片a| 亚洲免费观看高清完整版在线观看熊 | 久久中文字幕导航| 久久精品72免费观看| 国产精品久久久久一区二区三区| 亚洲欧洲一区二区三区久久| 亚洲国产精品久久久久婷婷884| 久久激情五月丁香伊人| 欧美午夜精品久久久久久孕妇| 91久久精品国产| 99国产精品国产精品毛片| 久久综合中文| 欧美高清成人| 亚洲精品韩国| 欧美日韩亚洲一区二区三区四区| 亚洲老司机av| 亚洲一区二区视频在线| 欧美日韩中国免费专区在线看| 亚洲精选大片| 亚洲女同性videos| 国产精品一二一区| 欧美一区二区三区视频| 久久亚洲影院| 亚洲黄色有码视频| 欧美人与性禽动交情品| 一本一本a久久| 欧美在线观看一区二区三区| 国产亚洲成av人在线观看导航| 性做久久久久久| 狂野欧美激情性xxxx欧美| 亚洲国产专区| 欧美性片在线观看| 欧美一区二区免费视频| 欧美成人国产va精品日本一级| 亚洲精品在线免费观看视频| 欧美日产在线观看| 亚洲综合第一页| 葵司免费一区二区三区四区五区| 91久久精品国产91久久| 欧美午夜视频在线| 欧美专区亚洲专区| 亚洲精品欧美| 亚洲欧美国产制服动漫| 一区精品在线播放| 欧美日韩中文在线观看| 欧美一区二视频| 91久久精品美女| 久久久免费av| 亚洲一区二区欧美| 亚洲电影观看| 国产精品一区=区| 欧美国产一区二区在线观看| 亚洲欧美成人综合| 亚洲国产日韩在线| 久久欧美中文字幕| 亚洲性xxxx| 亚洲国产视频a| 国产日韩欧美精品一区| 欧美成人午夜激情视频| 午夜精品国产| 99热免费精品| 亚洲国产精品成人综合色在线婷婷| 香蕉成人伊视频在线观看| 亚洲人成毛片在线播放| 国产一区二区三区黄| 欧美日韩在线一区二区三区| 久久美女艺术照精彩视频福利播放| 99综合视频| 亚洲日本中文字幕| 欧美高清视频一区| 久久一区二区三区国产精品| 午夜精品久久久久久久久久久久久| 99re这里只有精品6| 亚洲黄色在线| 亚洲欧洲美洲综合色网|