CSUOJ1238--兵临城下

这个题目的难点在于p操作时快速确定没预热炮中的最小编号.我是用线段树为每门炮维护了一个最后可开炮时间,然后每次需要预热一门炮时就用二分加线段树查询满足要求的最小编号.要注意如果一门炮可以开炮时间的结尾恰好是我们查询的时间,我们也要将其看成不可以开炮需要重新预热的(我就在这WA了好几发).

代码如下:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;

int const maxn=31000;
long long Min[maxn*4],Max[maxn*4];

void Build(int rt,int l,int r)
{
       if(l>=r)
       {
            Min[rt]=0;
            return ;
       }
       int m=(l+r)/2;
       Build(rt*2,l,m);
       Build(rt*2+1,m+1,r);
       Min[rt]=min(Min[2*rt],Min[2*rt+1]);
}

void update(int rt,int l,int r,int x,int num)
{
        if(l>=r)
        {
               Min[rt]=num;
               return ;
        }
        int m=(l+r)/2;
        if(m>=x)
           update(rt*2,l,m,x,num);
        if(m<x)
           update(rt*2+1,m+1,r,x,num);
        Min[rt]=min(Min[rt*2],Min[2*rt+1]);
}

long long query(int rt,int l,int r,int ql,int qr)
{
        long long ans=0x7fffffff;
        if(ql<=l&&qr>=r)
        {
             return Min[rt];
        }
        int m=(l+r)/2;
       if(m>=ql)
           ans=min(ans,query(rt*2,l,m,ql,qr));
       if(m<qr)
           ans=min(ans,query(rt*2+1,m+1,r,ql,qr));
       return ans;
}

int main()
{
      //freopen("test0.in","r",stdin);
      //freopen("out.txt","w",stdout);
       int n,t,p;
       while(scanf("%d%d%d",&n,&t,&p)!=EOF)
       {
               memset(Min,0,sizeof(Min));
               while(p--)
               {
                     int x,y;
                     char str[10];
                     scanf("%d%s",&x,str);
                     if(str[0]==‘p‘)
                     {
                            int l=1,r=n;
                            int tmp;
                            while(l<=r)
                            {
                                  int m=(l+r)/2;
                                  if(query(1,1,n,l,m)<=x)
                                      r=m-1,tmp=m;
                                  else
                                      l=m+1;
                            }
                            update(1,1,n,tmp,x+t*60);
                            printf("%d\n",tmp);
                     }
                     else
                     {
                            scanf("%d",&y);
                            int k=query(1,1,n,y,y);
                            //cout<<k<<endl;
                            if(k<=x)
                                 printf("Cannot\n");
                            else
                            {
                                  printf("Fire!\n");
                                  update(1,1,n,y,x+t*60);
                            }
                     }
               }
       }
   return 0;
}
时间: 2024-10-05 05:03:14

CSUOJ1238--兵临城下的相关文章

待我兵临城下,许你半世繁华

春意未尽,微凉的晚风在空中轻轻摇曳着点点星芒间藏匿着的夙愿.从音乐播放器中流淌出那首你最爱的钢琴曲,温暖着无数爱情中的童话:在耳边起伏跳跃着我所有的伤痛. 因为想念,我再一次在深夜失眠:安静的伏在窗前.用触碰过爱情的心跳,慢慢的为自己燃起香烟.拿起一碟浅墨,在纯白的宣纸上雕刻着关于爱情的回忆.只怕时间的仓促消逝,凌乱了字句间华丽的故事:用着最无可奈何的身影,躲避着寂寞的无限侵袭. 爱情犹如镜中月,水中花:又怎会去惧怕刹那间的芳华.跟着心跳的轨迹径直前行.有些爱情是用来相遇,有的感情是用来遗忘的.

二战经典影片【珍珠港】【兵临城下】免费在线看下载地址

雷夫(本·阿弗莱克饰)与丹尼(乔什·哈奈特饰)是从小一起长大的死党,两人对于飞行从小就十分有兴趣.长大之后,时间正值二次大战时空,两人一同加入美军飞行的队伍.在1941年12月7日,雷夫突然出现在伊夫林与丹尼驻扎的珍珠港.正当三人不知如何面对这个难题时,日军也悄悄地准备偷袭珍珠港.雷夫与丹尼这对好朋友又是情敌,还得一起并肩作战,随着太平洋战争的开打,两人只能将儿女私情暂时抛在一旁,共同为自由.正义而战 观看地址:http://t.cn/Rt5wIn8

[编程题] 兵临城下

卢卡斯的驱逐者大军已经来到了赫柏的卡诺萨城,赫柏终于下定决心,集结了大军,与驱逐者全面开战.卢卡斯的手下有6名天之驱逐者,这6名天之驱逐者各赋异能,是卢卡斯的主力.为了击败卢卡斯,赫柏必须好好考虑如何安排自己的狂战士前去迎战.狂战士的魔法与一些天之驱逐者的魔法属性是相克的,第i名狂战士的魔法可以克制的天之驱逐者的集合为Si(Si中的每个元素属于[0,5]).为了公平,两名狂战士不能攻击同一个天之驱逐者.现在赫柏需要知道共有多少种分派方案.例:S1={01},S2={23},代表编号为0的狂战士的

为什么媒体集体唱衰迪信通转型

7月8日在国内有着21年历史的移动通讯连锁迪信通将在港交所挂牌上市.此前迪信通,曾经两度谋求海内外市场上市,一次是2005年前后准备香港上市最后因特殊原因取消筹备,另一次是2011年国内A股IPO失败.虽然此次在香港因获得虚拟运营商牌照终于成挂牌上市,但国内众多媒体都对曾经号称业界"手机连锁之王" 的迪信通转型并不看好,甚至出现了集体唱衰.其关键原因就是迪信通核心业务因持续盈利能力不足.毛利依赖率高,转型不明.且不管是实体连锁还是电商业务等在业内竞争都十分激烈,摆在其眼前,不管是对内还

你必须先行上路

有个穷人,很穷,一个富人见他可怜,就起了善心,想帮他致富.富人送给他一头牛,嘱他好好开荒,等春天来了撒上种子,秋天就可以远离那个"穷"字了. 穷人满怀希望开始奋斗.可是没过几天, 牛要吃草,人要吃饭,日子比过去还难. 穷人就想,不如把牛卖了,买几只羊,先杀一只吃,剩下的还可以生小羊,长大了拿去卖,可以赚更多的钱. 穷人的计划如愿以偿,只是吃了一只羊之后,小羊迟迟没有生下来,日子又艰难了,忍不住又吃了一只. 穷人想:这样下去不得了,不如把羊卖了,买成鸡,鸡生蛋的速度要快一些,鸡蛋立刻可以

一个不知道体谅难处,一个说话伤人自尊,矛盾的种子已悄悄埋下

860年9月,英法联军兵临城下,咸丰帝下令顺天府征集数百辆马车,对外宣称要率军亲政,实则是准备外逃.当时的上谕这样写道:“即将巡幸之预备,作为亲征之举.”熟料,消息一出,各位王公大臣纷纷上奏,劝说皇帝不要离开北京,民间也是谣言满天飞,“众情益涣,岌岌可危”.咸丰为了稳定大局,不得不又下令把所有车马“分别发还”.没想到,局势迅速恶化,不得不逃往热河,而仓促之间,根本无法聚集那么多宫廷车马,除了皇帝以外,其他人一律乘坐从民间雇佣来的车马. 这可坑苦了一帮佳丽妃嫔,平常颐指气使,享尽荣华富贵,哪遭过这

CPU使用率终于正常了——记一次订餐统事故处理

引子 经过漫长的等待,儿子终于出生了.欣喜之余,就是各种手足无措,顾此失彼了.因为不懂,心里总是慌慌的,有点小毛病,恨不得一步就到医院. 婆媳育儿观念的差异,让心乱如麻的我,又成了风箱里的老鼠,两个不服软的女人都在考验我的智慧,虽是极力从中斡旋,还是免不了爆发了一场婆媳冲突. 还是智慧少了,估计四大名著还得再读一遍(唬一下人应该还是可以的:-D). 不过话说回来了,虽然苦点,累点(当然了,主要还是媳妇和妈累,媳妇放弃工作,放弃辣椒,放弃方便面,也蛮拼了,我也就打打酱油),但抱着娃,看他那惹人爱的

互联网金融的前世、今生和未来-系列三(今生):一场跨界的战争

互联网金融的前世.今生和未来--系列一:山雨欲来 互联网金融的前世.今生和未来-系列二(前世):金融与技术的首次亲密接触之金融电子化 今生:金融与互联网的深度融合--互联网金融 传统金融业与信息技术行业的首次亲密接触无疑取得了举世瞩目的成就,信息技术的进步极大地提高了金融机构的业务处理能力.然而,银行家们万万没有想到,进入21世纪后,新兴的互联网技术威力如此巨大,互联网公司竟然跨界进军金融业(尤其在中国),而且迅速做大规模,成为金融业的搅局者.微软公司创始人比尔·盖茨先生曾预言:"传统的银行业如

全球100部最佳影片排行

全球100部最佳影片排行 以下是IMDB(美国著名影评网站)网民评出全球100部最佳影片 :  1. <教父>The Godfather 1972年 8.9 分  科波拉黑帮经典<教父>的首部,派拉蒙公司最成功的影片之一,坐稳IMDB头把交椅应属,众望所归.虽然评论界一致对<教父>系列的第2集推崇有佳,但大多数影迷似乎还是对<教父>情有独钟,这可能与马龙·白兰度极具个力的表演有关,直到今天他那种含 糊沙哑的声音与神秘莫测的表情都依然叫人着迷.  2. <

曹操仓亭破本初 玄德荆州依刘表

却说曹操乘袁绍之败,整顿军马,迤逦追袭.袁绍幅巾单衣,引八百余骑,奔至黎阳北岸,大将蒋义渠出寨迎接.绍以前事诉与义渠.义渠乃招谕离散之众,众闻绍在,又皆蚁聚.军势复振,议还冀州.军行之次,夜宿荒山.绍于帐中闻远远有哭声,遂私往听之.却是败军相聚,诉说丧兄失弟,弃伴亡亲之苦,各各捶胸大哭,皆曰:"若听田丰之言,我等怎遭此祸!"绍大悔曰:"吾不听田丰之言,兵败将亡:今回去,有何面目见之耶!"次日,上马正行间,逢纪引军来接.绍对逢纪曰:"吾不听田丰之言,致有此败