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

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜


MiYu原創(chuàng), 轉(zhuǎn)帖請注明 : 轉(zhuǎn)載自 ______________白白の屋    

 

題目地址:

 http://acm.hdu.edu.cn/showproblem.php?pid=2795

題目描述:

Billboard

Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 733    Accepted Submission(s): 340


Problem Description
At the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are posted: nearest programming competitions, changes in the dining room menu, and other important information.

On September 1, the billboard was empty. One by one, the announcements started being put on the billboard.

Each announcement is a stripe of paper of unit height. More specifically, the i-th announcement is a rectangle of size 1 * wi.

When someone puts a new announcement on the billboard, she would always choose the topmost possible position for the announcement. Among all possible topmost positions she would always choose the leftmost one.

If there is no valid location for a new announcement, it is not put on the billboard (that's why some programming contests have no participants from this university).

Given the sizes of the billboard and the announcements, your task is to find the numbers of rows in which the announcements are placed.
 

Input
There are multiple cases (no more than 40 cases).

The first line of the input file contains three integer numbers, h, w, and n (1 <= h,w <= 10^9; 1 <= n <= 200,000) - the dimensions of the billboard and the number of announcements.

Each of the next n lines contains an integer number wi (1 <= wi <= 10^9) - the width of i-th announcement.
 

Output
For each announcement (in the order they are given in the input file) output one number - the number of the row in which this announcement is placed. Rows are numbered from 1 to h, starting with the top row. If an announcement can't be put on the billboard, output "-1" for this announcement.
 

Sample Input
3 5 5 2 4 3 3 3
 

Sample Output
1 2 1 3 -1
 

 

一開始沒想明白怎么做 ,  仔細(xì)想了想,   再次 讀題后 發(fā)現(xiàn) , n <= 200000;  也就是說  最多 也就 200000 條廣告 , 你就算每行貼一張 ,

最多也就貼到 200000 行,  所以  不要被  h <= 10^9  次方嚇到了  ,認(rèn)為 線段樹開不了那么大的數(shù)組  . 只要開 200000 就可以了 .

 

其他的 沒什么 好說的 , 知道這個(gè) 就直接 暴 吧 ............將近 7000MS .=水過.................   g++提交 還華麗的 送出了 一次 TLE....

C++  水過了 ............

 

//    一直沒明白 為什么我的 代碼速度 那么 慢,  查詢后 更新 的時(shí)間是 2000MS 左右  , 我的 是 查詢 就更新了,

竟然要 將近 7000MS ? 非常 郁悶 ,  不信邪的 繼續(xù) 檢查 代碼, 在 瞪了 1哥小時(shí)后 , 忽然想到 : 把 cout 改成

printf 會(huì)怎樣?   結(jié)果 :  1640 MS  AC ..............鬼知道他的 數(shù)據(jù)量有多大..... cout 和 printf

竟然 差了 5000 MS 的時(shí)間 ...........無語

代碼如下 :

 

 /*

Coded By  : MiYu

Link      : http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu

Author By : MiYu

Test      : 1

Program   : 2795

*/

//#pragma warning( disable:4789 )

#include <iostream>

#include <algorithm>

#include <string>

#include <set>

#include <map>

#include <utility>

#include <queue>

#include <stack>

#include <list>

#include <vector>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

using namespace std;


struct ADV {

       int left, right, val;

       int mid () { return ( left + right ) >> 1; }     

}adv[800000];

int N, W, H, w;

void creat ( int l, int r, int rt = 1 ){

     adv[rt].left = l;

     adv[rt].right = r;

     adv[rt].val = W;

     if ( l == r )

        return ;

     int mid = adv[rt].mid();

     creat ( l, mid, rt << 1 );

     creat ( mid + 1, r, ( rt << 1 ) + 1 );

}

void add ( int rt = 1, int wei = w ){

    if ( wei <= adv[rt].val ){

         if ( adv[rt].left == adv[rt].right ){

              adv[rt].val -= wei;

              //cout << adv[rt].left << endl;  //杯具的 地方

printf ( "%d\n", adv[rt].left ); 

              return ;     

         } else if ( adv[rt<<1].val >= wei ) {

                add ( rt << 1 );

                adv[rt].val = max ( adv[rt<<1].val, adv[(rt<<1)+1].val );     

         } else {

                add ( ( rt << 1 ) + 1 );

                adv[rt].val = max ( adv[rt<<1].val, adv[(rt<<1)+1].val );        

         }   

    } else {

           //cout << -1 << endl;      //杯具的地方

puts ( "-1" );   

    }   

}

inline bool scan_ud(int &num)

{

    char in;

    in=getchar();

    if(in==EOF) return false;

    while(in<'0'||in>'9') in=getchar();

    num=in-'0';

    while(in=getchar(),in>='0'&&in<='9'){

        num*=10,num+=in-'0';

    }

    return true;

}

int main ()

{

    while ( scan_ud (H)&&scan_ud (W)&&scan_ud (N) ) {

           if ( H > 200000 )

               H = 200010;

           creat ( 1, H );

           for ( int i = 1; i <= N; ++ i ) {

                scan_ud (w);

                add ( );     

           }      

    }

    return 0;

}

 

 

 

 

另 附上 傻崽  神牛 代碼 :

 

#include <iostream>

#include <algorithm>

#include <string>

#include <set>

#include <map>

#include <utility>

#include <queue>

#include <stack>

#include <list>

#include <vector>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#define FF(i,a) for( int i = 0 ; i < a ; i ++ )

#define FOR(i,a,b) for( int i = a ; i < b ; i ++ )

#define LL(a) a<<1

#define RR(a) a<<1|1

template<class T> inline void checkmin(T &a,T b) {if(a < 0 || a > b)a = b;}

template<class T> inline void checkmax(T &a,T b) {if(a < b) a = b;}

using namespace std;

struct Node {

int val;

int idx;

friend bool operator < (Node a , Node b) {

if(a.val == b.val) {

return a.idx > b.idx;

}

return a.val < b.val;

}

}error;

 

struct Seg_Tree{

int left,right;

Node node;

int mid() {

return (left + right)>>1;

}

}tt[800000];

 

int n , h , m;

 

void build(int l,int r,int idx) {

tt[idx].left = l;

tt[idx].right = r;

tt[idx].node.idx = l;

tt[idx].node.val = h;

if(l == r) return ;

int mid = tt[idx].mid();

build(l,mid,LL(idx));

build(mid+1,r,RR(idx));

}

 

void update(int l,int r,int val,int idx) {

if(l <= tt[idx].left && r >= tt[idx].right) {

tt[idx].node.val += val;

return ;

}

int mid = tt[idx].mid();

if(l <= mid) update(l,r,val,LL(idx));

if(mid < r) update(l,r,val,RR(idx));

tt[idx].node = max(tt[LL(idx)].node,tt[RR(idx)].node);

}

 

Node query(int w,int idx) {

if(tt[idx].node.val < w) {

return error;

}

if(tt[idx].left == tt[idx].right) {

return tt[idx].node;

}

if(tt[LL(idx)].node.val >= w) {

return query(w,LL(idx));

} else {

return query(w,RR(idx));

}

}

 

int main() {

error.idx = -1;

while(scanf("%d%d%d",&n,&h,&m) == 3) {

checkmin(n,m);

build(1,n,1);

while(m --) {

int w;

scanf("%d",&w);

Node ret = query(w,1);

printf("%d\n",ret.idx);

if(ret.idx != -1) {

update(ret.idx,ret.idx,-w,1);

}

}

}

return 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>
            制服丝袜亚洲播放| 亚洲综合另类| 男同欧美伦乱| 亚洲第一免费播放区| 猛男gaygay欧美视频| 老司机午夜精品视频在线观看| 韩国一区二区在线观看| 美女国内精品自产拍在线播放| 久久av免费一区| 伊人成年综合电影网| 欧美电影美腿模特1979在线看| 另类国产ts人妖高潮视频| 最新国产精品拍自在线播放| 亚洲精选视频免费看| 欧美图区在线视频| 性欧美1819性猛交| 欧美主播一区二区三区美女 久久精品人 | 影音先锋另类| 欧美激情久久久久| 欧美日韩免费一区二区三区视频| 亚洲在线观看免费| 欧美一区二区视频免费观看| 亚洲激情婷婷| 亚洲免费观看在线观看| 国产欧美视频在线观看| 亚洲国产精品一区二区第四页av| 欧美成年视频| 欧美在线观看一区| 麻豆久久婷婷| 午夜性色一区二区三区免费视频| 久久精品欧美日韩精品| 一本一本a久久| 翔田千里一区二区| 亚洲九九爱视频| 羞羞色国产精品| 99视频日韩| 久久全球大尺度高清视频| 一本色道婷婷久久欧美| 久久久久久欧美| 亚洲综合欧美日韩| 另类激情亚洲| 久久久久久欧美| 欧美日韩妖精视频| 欧美+日本+国产+在线a∨观看| 欧美三级午夜理伦三级中视频| 久久综合色婷婷| 国产精品久久婷婷六月丁香| 欧美激情第9页| 黄色成人在线网址| 亚洲欧美激情一区| 亚洲午夜激情| 欧美韩日高清| 欧美国产日韩精品免费观看| 国产一区免费视频| 亚洲午夜伦理| 在线视频欧美一区| 欧美成人精品高清在线播放| 久久综合久久综合这里只有精品 | 亚洲欧美www| 一区二区三区日韩| 欧美国产在线观看| 欧美电影在线观看| 精品成人在线视频| 久久精品人人做人人综合 | 伊人久久综合| 久久国产精品第一页| 久久精品国产第一区二区三区最新章节| 欧美久久久久久久| 亚洲福利免费| 亚洲老板91色精品久久| 欧美福利视频一区| 亚洲二区视频在线| 亚洲免费成人av电影| 欧美精品日韩一区| 最新亚洲一区| 亚洲视频在线一区| 欧美午夜精品久久久久久超碰| 亚洲精品偷拍| 亚洲欧美美女| 国产精品天天看| 欧美一区二区三区精品电影| 久久久久一区二区三区| 影音先锋一区| 欧美国产高清| 亚洲美女视频网| 欧美一区二区| 亚洲成色www久久网站| 免费成人av在线| 99国产精品久久久久久久| 亚洲伊人久久综合| 国产一区二区三区在线观看免费视频| 久久国产精品99国产| 欧美国产日产韩国视频| 一区二区欧美激情| 国产欧美日本在线| 蜜桃av噜噜一区二区三区| 日韩视频在线一区二区三区| 欧美在线三级| 亚洲精品久久久久久久久久久| 欧美视频在线观看视频极品| 欧美一区成人| 最新日韩中文字幕| 欧美一区二区三区在线| 在线看成人片| 国产精品剧情在线亚洲| 久久精品最新地址| 亚洲精品在线免费| 久久精品国产在热久久 | 国产精品久久久免费| 久久久久九九九| 日韩一区二区精品| 久久在线视频| 午夜视频在线观看一区二区三区 | 国产一区二区三区自拍| 欧美激情国产日韩精品一区18| 亚洲欧美国内爽妇网| 亚洲国产日韩欧美在线99| 久久gogo国模裸体人体| 亚洲另类在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 欧美区一区二区三区| 久久久噜噜噜久久| 亚洲影音一区| 亚洲理伦在线| 欧美高清在线观看| 久久久精品性| 亚洲欧美韩国| 国产精品99久久久久久有的能看| 在线精品一区| 精品999在线观看| 国产欧美成人| 国产精品扒开腿爽爽爽视频 | 一本久久综合| 91久久精品久久国产性色也91| 久久麻豆一区二区| 久久er精品视频| 亚洲欧美日韩精品| 国产精品99久久久久久久久| 亚洲美洲欧洲综合国产一区| 亚洲第一在线| 伊人久久男人天堂| 影视先锋久久| 在线观看的日韩av| 禁断一区二区三区在线| 国产一区二区三区久久久| 国产麻豆视频精品| 国产精品入口麻豆原神| 国产精品mv在线观看| 欧美视频免费在线| 欧美午夜美女看片| 国产精品成人一区| 国产精品理论片| 国产精品一区二区在线观看| 国产美女精品人人做人人爽| 国产精品一区二区久久国产| 国产精品免费网站在线观看| 国产精品一区毛片| 国产日韩欧美高清免费| 国产一区日韩二区欧美三区| 黄色成人av在线| 在线观看一区欧美| 亚洲国产片色| 一区二区三区精密机械公司| 亚洲香蕉网站| 久久黄金**| 欧美夫妇交换俱乐部在线观看| 亚洲狠狠婷婷| 亚洲午夜免费视频| 久久精品国产77777蜜臀| 久久在线91| 欧美片第1页综合| 国产精品亚洲一区二区三区在线| 国产综合色产| 亚洲国内自拍| 亚洲综合电影| 麻豆精品91| 日韩亚洲不卡在线| 香蕉成人伊视频在线观看| 久久女同互慰一区二区三区| 欧美日韩另类字幕中文| 国产欧美日本| 亚洲免费成人av| 久久精品系列| 亚洲精品免费一二三区| 亚洲摸下面视频| 欧美www在线| 国产午夜精品美女毛片视频| 亚洲精品免费一区二区三区| 性欧美长视频| 91久久久亚洲精品| 性刺激综合网| 欧美人与性动交cc0o| 国内精品久久久久久久97牛牛| 日韩视频一区二区三区在线播放| 欧美在线免费视屏| 99视频一区二区三区| 久久久免费av| 国产伦精品一区二区三区高清| 亚洲人成网站在线播| 久久久精品性|