嘛。。。。活(和谐)捉大摸(和谐)你题一道。。。

零零散散码了10k。。。。。。等等CTL学长是怎么做到5k的QAQ。。在这里送上蒟蒻未来初三一年的膝盖!!!CTL是我学长我是他小号!!!

construnx:array[1..4]of longint=(-1,0,1,0);runy:array[1..4]of longint=(0,1,0,-1);
typenodebomb=recordleixing,x,y,time:longint;end;noderat=recordx,y,sex,think,waketime,adulttime,alivetime,borntime:longint;toward:longint;alive,awake,adult:booleanend;node4=recordx,y:longint;end;
varbomb:array[0..200]of nodebomb;rat:array[0..10000]of noderat;map:array[0..100,0..100,1..4]of boolean;bombu:array[0..51,0..51]of boolean;dl:array[0..10000]of node4;dep:array[0..10000]of longint;num:array[0..50,0..50]of longint;i,j,k,n,m,temp,ratnum,maxrat,bombnum:longint;qianglizhadandegongjifanwei,shenmizhadandegongjifanwei,endtime,lll,time,tot,preee:longint;ch:char;
procedure qsort1(l,r:longint);
var i,j,mid:longint;t:nodebomb;
begini:=l;j:=r;mid:=bomb[(l+r)shr 1].time;repeatwhile bomb[i].time<mid do inc(i);while bomb[j].time>mid do dec(j);if i<=j thenbegint:=bomb[i];bomb[i]:=bomb[j];bomb[j]:=t;inc(i);dec(j)enduntil i>j;if i<r then qsort1(i,r);if l<j then qsort1(l,j)
end;
procedure init;
beginreadln(qianglizhadandegongjifanwei,shenmizhadandegongjifanwei,m,n);for i:=1 to m dofor j:=1 to n dobeginread(temp);if temp>=8 thenbegindec(temp,8);map[i,j,4]:=trueend;if temp>=4 thenbegindec(temp,4);map[i,j,3]:=trueend;if temp>=2 thenbegindec(temp,2);map[i,j,2]:=trueend;if temp>=1 thenbegindec(temp);map[i,j,1]:=trueendend;readln(ratnum);for i:=1 to ratnum dobeginread(temp);rat[i].x:=temp;read(temp);rat[i].y:=temp;read(ch);read(ch);if ch='N' then rat[i].toward:=1;if ch='E' then rat[i].toward:=2;if ch='S' then rat[i].toward:=3;if ch='W' then rat[i].toward:=4;read(ch);readln(ch);if ch='X' then rat[i].sex:=1else rat[i].sex:=0;rat[i].alive:=true;rat[i].adult:=true;rat[i].awake:=true;rat[i].think:=0;rat[i].waketime:=0;rat[i].borntime:=-1;rat[i].alivetime:=0;end;readln(bombnum,maxrat);for i:=1 to bombnum dobeginreadln(bomb[i].leixing,bomb[i].time,bomb[i].x,bomb[i].y);if bomb[i].leixing=3 then inc(bomb[i].time,3)end;readln(endtime);qsort1(1,bombnum);
//  for i:=1 to bombnum do writeln(bomb[i].leixing,' ',bomb[i].time,' ',bomb[i].x,' ',bomb[i].y);
end;
function can:boolean;
var i:longint;tot:longint;
begintot:=0;for i:=1 to ratnum doif rat[i].alive then inc(tot);if tot>maxrat then exit(false)else exit(true)
end;
procedure bfs1;
var l,r:longint;now:node4;i,j,k,depp,nowx,nowy:longint;
beginfillchar(bombu,sizeof(bombu),false);
//  fillchar(dep,sizeof(dep),0);l:=0;r:=1;dl[1].x:=bomb[lll].x;dl[1].y:=bomb[lll].y;bombu[dl[1].x,dl[1].y]:=true;{dep[1]:=0;while l<r dobegininc(l);now:=dl[l];if dep[l]<qianglizhadandegongjifanwei thenfor i:=1 to 4 doif (map[now.x,now.y,i])and((now.x+runx[i]>=1)and(now.x+runx[i]<=m)and(now.y+runy[i]>=1)and(now.y+runy[i]<=n))and(not bombu[now.x+runx[i],now.y+runy[i]]) thenbeginbombu[now.x+runx[i],now.y+runy[i]]:=true;inc(r);dep[r]:=dep[l]+1;dl[r].x:=now.x+runx[i];dl[r].y:=now.y+runy[i]endend;      }for i:=1 to 4 dobeginnowx:=bomb[lll].x;nowy:=bomb[lll].y;depp:=0;while map[nowx,nowy,i]dobeginnowx:=nowx+runx[i];nowy:=nowy+runy[i];bombu[nowx,nowy]:=true;inc(depp);if depp>=qianglizhadandegongjifanwei then breakend;end;for i:=1 to ratnum doif rat[i].alive thenif bombu[rat[i].x,rat[i].y]then rat[i].alive:=false
end;
procedure bombrun;
var i,j,k,l,r:longint;
beginwhile (lll<=bombnum)and(bomb[lll].time=time) dobeginif bomb[lll].leixing=1 thenbfs1;if bomb[lll].leixing=2 thenbeginfor i:=1 to ratnum doif (sqrt(sqr(rat[i].x-bomb[lll].x)+sqr(rat[i].y-bomb[lll].y))<=shenmizhadandegongjifanwei)and(rat[i].alive) thenbeginrat[i].awake:=false;inc(rat[i].waketime,3);if rat[i].borntime>time then inc(rat[i].borntime,3)endend;if bomb[lll].leixing=3 thenbeginfor i:=1 to ratnum doif (rat[i].x=bomb[lll].x)and(rat[i].y=bomb[lll].y)and(rat[i].alive)thenrat[i].alive:=falseend;if bomb[lll].leixing=4 thenbeginfor i:=1 to ratnum doif (rat[i].x=bomb[lll].x)and(rat[i].y=bomb[lll].y)and(rat[i].alive)thenrat[i].sex:=rat[i].sex xor 1end;inc(lll)end
end;
procedure bornrun;
var i,j:longint;
beginfillchar(num,sizeof(num),0);for i:=1 to ratnum doif rat[i].alive then inc(num[rat[i].x,rat[i].y]);for i:=1 to ratnum doif (rat[i].alive)and(rat[i].sex=1)and(num[rat[i].x,rat[i].y]=2)and(rat[i].borntime=-1)and(rat[i].adult)and(rat[i].waketime<=0)thenfor j:=1 to ratnum doif (rat[j].alive)and(rat[j].sex=0)and(rat[j].x=rat[i].x)and(rat[j].y=rat[i].y)and(rat[j].borntime=-1)and(rat[j].adult)and(rat[j].waketime<=0)thenbegin
//          writeln(i,'XXOO',j,'//',time);inc(rat[i].waketime,3);rat[i].borntime:=time+2;inc(rat[j].waketime,3);rat[j].borntime:=time+2;breakend;
//  if time=8 then writeln(rat[9].x,' ',rat[13].x,' ',rat[9].y,' ',rat[13].y,' ',rat[9].borntime,' ',rat[13].borntime,' ',rat[9].waketime,' ',rat[13].waketime,' ',rat[9].sex,' ',rat[13].sex);for i:=1 to ratnum doif (rat[i].borntime=time)and(rat[i].sex=1)and(rat[i].alive) thenbegin
//    writeln(' ',i);preee:=ratnum;if map[rat[i].x,rat[i].y,1] thenbegininc(ratnum);rat[ratnum].x:=rat[i].x;rat[ratnum].y:=rat[i].y;rat[ratnum].alive:=true;rat[ratnum].borntime:=-1;rat[ratnum].toward:=1;rat[ratnum].sex:=1;rat[ratnum].adult:=false;rat[ratnum].alivetime:=0;rat[ratnum].waketime:=0;rat[ratnum].think:=0;rat[ratnum].awake:=trueend;if map[rat[i].x,rat[i].y,3]thenbegininc(ratnum);rat[ratnum].x:=rat[i].x;rat[ratnum].y:=rat[i].y;rat[ratnum].alive:=true;rat[ratnum].borntime:=-1;rat[ratnum].toward:=3;rat[ratnum].sex:=1;rat[ratnum].adult:=false;rat[ratnum].alivetime:=0;rat[ratnum].waketime:=0;rat[ratnum].think:=0;rat[ratnum].awake:=trueend;if map[rat[i].x,rat[i].y,2]thenbegininc(ratnum);rat[ratnum].x:=rat[i].x;rat[ratnum].y:=rat[i].y;rat[ratnum].alive:=true;rat[ratnum].borntime:=-1;rat[ratnum].toward:=2;rat[ratnum].sex:=0;rat[ratnum].adult:=false;rat[ratnum].alivetime:=0;rat[ratnum].waketime:=0;rat[ratnum].think:=0;rat[ratnum].awake:=trueend;if map[rat[i].x,rat[i].y,4]thenbegininc(ratnum);rat[ratnum].x:=rat[i].x;rat[ratnum].y:=rat[i].y;rat[ratnum].alive:=true;rat[ratnum].borntime:=-1;rat[ratnum].toward:=4;rat[ratnum].sex:=0;rat[ratnum].adult:=false;rat[ratnum].alivetime:=0;rat[ratnum].waketime:=0;rat[ratnum].think:=0;rat[ratnum].awake:=trueendend
end;
procedure ratrun;
var i,j,k:longint;
beginfor i:=1 to ratnum doif (rat[i].alive) thenif rat[i].waketime<=0 thenbeginrat[i].awake:=true;rat[i].borntime:=-1;if map[rat[i].x,rat[i].y,rat[i].toward] thenbeginrat[i].x:=rat[i].x+runx[rat[i].toward];rat[i].y:=rat[i].y+runy[rat[i].toward]endelsebeginif map[rat[i].x,rat[i].y,(rat[i].toward+1-1)mod 4+1]and(map[rat[i].x,rat[i].y,(rat[i].toward+3-1)mod 4+1])thenbegininc(rat[i].think);if rat[i].think mod 2=1 then rat[i].toward:=(rat[i].toward+3-1)mod 4+1else rat[i].toward:=(rat[i].toward+1-1)mod 4+1endelseif map[rat[i].x,rat[i].y,(rat[i].toward+1-1)mod 4+1]then rat[i].toward:=(rat[i].toward+1-1)mod 4+1elseif map[rat[i].x,rat[i].y,(rat[i].toward+3-1)mod 4+1]then rat[i].toward:=(rat[i].toward+3-1)mod 4+1else rat[i].toward:=(rat[i].toward+1-1)mod 4+1end;inc(rat[i].alivetime);if rat[i].alivetime=5 then rat[i].adult:=true;endelse dec(rat[i].waketime)
end;
procedure beat;
var lll:longint;
beginlll:=1;for time:=0 to endtime dobeginbombrun;bornrun;if not can then begin writeln(-1); halt end;if time<endtime thenratrunend
end;
begininit;beat;tot:=0;for i:=1 to ratnum do if rat[i].alive then begin inc(tot);{write(i,'&&');}end;
//  writeln;writeln(tot);
end.

​其实也不长吧。。。。。。液体战争随便500+。。。。。。QAQ

不知道为什么百度空间里说“内容包含不合适内容,请检查后再发”= =

【bzoj2548】灭鼠行动解题报告相关推荐

  1. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  2. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  3. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  4. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  8. 解题报告(一)E、(BZOJ4589)Hard Nim(博弈论 + FWT)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. MD5算法之C#程序
  2. 基于SpringAop 的统一验证
  3. poj3784 Running Median查找中位数
  4. Fedora安装Texlive2013时出现Can't locate Digest/MD5.pm的解决方法
  5. matlab 计算汉明距_matlab实现滑动平均滤波
  6. HTML+CSS+JS实现 ❤️HTML5图片幻灯片轮播切换❤️
  7. python内建模块函数_Python中一些内建函数及os等模块的用法
  8. Matlab 变量保存csv:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xfb in position 4: illegal multiby
  9. JSP转译成Servlet详细过程
  10. ContextCapture(CC)/Smart3D集群搭建笔记
  11. Presto(即席查询)笔记
  12. 阿里重要开源项目汇总(更新中)
  13. seo网站优化,SEO优化费用
  14. HDU - 5855 Less Time, More profit 最大权闭合子图 + 二分
  15. 装mysql电脑网卡不见了_网络适配器不见了怎么办【解决方法】
  16. 台式计算机无线接入,台式电脑可以无线连接wifi吗
  17. opencv:图像的放大与缩小
  18. 【深度好文】python加速库cython简介
  19. 嵌入式Linux--驱动ST7789驱动芯片的TFT屏(一)
  20. windows linux 共享鼠标,Synergy工具 共享Windows系统电脑Linux系统电脑 鼠标键盘

热门文章

  1. 电子计算机技术在60多年中,下列()部件可构成计算机的主机。
  2. html icon 引入emoji,给自己网站增加Emoji表情图标(可以在百度显示类
  3. 周海汉:Alexa 深入研究
  4. A Man Called Ove
  5. Arch Linux 安装
  6. 音频单通道转双通道算法
  7. 历史最全自然语言处理测评基准分享-数据集、基准(预训练)模型、语料库、排行榜
  8. Word 2016 撰写论文(4): 批量修改MathType公式字体大小
  9. 透视变换原理实例代码详解
  10. Spring Data JPA简单使用