
zoj
YYlxid
这个作者很懒,什么都没留下…
展开
-
zoj 1004 Anagrams by Stack
栈的模拟题给出进栈字符串和出栈字符串顺序,求所有可能的进栈出栈顺序。。且输出顺序按照字典顺序输出 由此可知 i<o 故一定是进栈优先 相当于dfs 先都进栈。。后判断是否出栈 注意格式 输出 对于每个进出栈可能中每个字符都要带空格 且结尾也有一个空格再回车 否则会pe #include#include#includeusing namespace std;#原创 2014-01-20 15:24:03 · 1040 阅读 · 0 评论 -
zoj 1760 Doubles
水题~~#includeusing namespace std;int main(){ int num[100],i,sum,x; while(cin>>x,x!=-1) { for(i=0;i<100;i++)num[i]=0; sum=0; num[x]++; while(cin>>x,x)num[x]++; for(i=0;i<50;原创 2013-02-14 16:42:46 · 430 阅读 · 0 评论 -
zoj 1494 Climbing Worm
水题~~不多说#includeusing namespace std;int main(){ int n,u,d,t; while(cin>>n>>u>>d) { if(n==0&&u==0&&d==0)break; if((n-u)%(u-d)==0)t=(n-u)/(u-d)*2+1; else t=t=(n-u)/(u-d)*2+3;原创 2013-02-14 00:05:07 · 435 阅读 · 0 评论 -
zoj 1405 Tanning Salon
水题,求顾客离开的人数 标记顾客来为1,离开为0,计算已占的beds数,和总的相比较。。。。#include#includeint main(){ int n,num,flag[26],i,leave,l; char s[26]; while(scanf("%d",&n)!=EOF,n) { for(i=0;i<26;i++)flag[i]=0;原创 2013-02-13 23:22:43 · 600 阅读 · 0 评论 -
zoj 1402 Magnificent Meatballs
水题~~~输出一个位置 可以使左右两边之和相等#includeusing namespace std;int main(){ int n,i,a[50],s,sn; while(cin>>n,n) { s=0; for(i=1;i<=n;i++) { cin>>a[i]; s+=a[i]; } sn=0; for(原创 2013-02-13 17:15:14 · 417 阅读 · 0 评论 -
zoj 1394 Polar Explorer
Using this information along with how much gasoline is available for your planet-rover (which gets a measley 5 miles per gallon), you have to determine if you can possibly get to the crash site and ba原创 2013-02-13 16:57:46 · 511 阅读 · 0 评论 -
zoj 1337 Pi
题目要求给n个数,从中选出两个数,不考虑次序,则个数为s,这些对中两个数不存在公因子,即最大公约数为1,的个数为num,有6/PI^2=num/s即可求出PI。。。#include#includeint gcf(int x,int y) //最大公约数{ if(x<y)return gcf(y,x); if(x%y==0)return y;原创 2013-02-11 01:45:53 · 447 阅读 · 0 评论 -
zoj 1334 Basically Speaking
进制间的转换。。。主要是题目有限制数大小范围只会是7位,因此int就够了。。。故可以先转换为十进制,再转换成相应的进制#include#includeint get10(char s[],int a){ int l,i,sum=0; l=strlen(s); for(i=0;i<l;i++) if(s[i]>='A'&&s[i]<='F')sum=sum*a+原创 2013-02-11 01:23:50 · 498 阅读 · 0 评论 -
zoj 1251 Box of Bricks
水题~~#includeint main(){ int n,height[105],i,sum,num,ans=0; while(scanf("%d",&n)!=EOF,n) { sum=num=0; for(i=0;i<n;i++) { scanf("%d",&height[i]); sum+=height[i]; } sum原创 2013-02-10 23:43:39 · 537 阅读 · 0 评论 -
zoj 1242 Carbon Dating
公式对了 但是提交老是错。。#include#includeint main(){ int w,d,t,ans=0; double year; while(scanf("%d%d",&w,&d)!=EOF) { if(w==0&&d==0)break; printf("Sample #%d\n", ++ans); year=5730*(log原创 2013-02-10 23:31:15 · 482 阅读 · 0 评论 -
zoj 1889 Ones
给一个数n 不会被2或5整除 为了保证存在可以输出结果输出n的最小倍数,十进制表示时为全1 #includeint main(){ int digit,m,n; while(scanf("%d",&n)!=EOF) { if(n==1) { printf("1\n"); continue; } if(n<11) {原创 2013-02-14 18:21:24 · 530 阅读 · 0 评论 -
zoj 1622 switch
水题。。。。最少步使得10相间。。。。to make the lights on and off alternatively.#includeusing namespace std;int main(){ int n,i,num,a[1005],ans; while(cin>>n) { for(i=0;i>a[i]; num=0; ans=1-a[原创 2013-02-14 00:33:40 · 593 阅读 · 0 评论 -
zoj 2417 Lowest Bit
水题~~。。#includeint main(){ int n,m; while(scanf("%d",&n)!=EOF,n) { m=1; while(!(n&1)) { n=n>>1; m*=2; } printf("%d\n",m); } return 0;}原创 2013-02-14 22:05:26 · 471 阅读 · 0 评论 -
zoj 1002 Fire Net
用dfs来做~~但注意每次dfs回来后需要恢复到进入dfs前的状态。。。 /** map 0表示无wall houseblock 1表示 houseblock -1表示wall flagr 0 表示指定行无wall houseblock 1表示指定行有houseblock -1表示指定行有wall 当指定行有wall时,优先级最高,一定为原创 2014-01-19 08:11:40 · 1193 阅读 · 3 评论 -
zoj 1024Calendar Game
初看这题,以为要用复杂的bfs或dfs,但看了某大神的解题报告后,才知道原来很简单。。题目意思是最终谁先到达2001.11,4,就算赢。可以操作的要么月份+1,要么日+1.。而终点 是 11+4=15 那么 之前一个一定是偶数 所以如果开始为偶数时,则Adam一定走到的是奇数的,所以一定可以到达终点但是还有几个特殊的 和为奇数,但是下一步确可以到达奇数的 为 9.3原创 2013-05-11 00:07:13 · 909 阅读 · 0 评论 -
zoj 1012Mainframe
之前想到的以为要分两个队列 一个用来装等待job,一个用来装时间还没到的 可是后来看了别人的思路,原来只要用flag来标记job工作状态就可以了 http://blog.youkuaiyun.com/glorywu/article/details/3666983学习了。。。注意要在f内完成。。。。#include#include#include#includeusing name原创 2013-05-01 23:00:45 · 1006 阅读 · 0 评论 -
zoj 1005Jugs
刚开始以为要爆搜,把所有可能的结果都寻找下,后来看了别人的解题报告后,有点懂。。。主要考虑A和n的关系来分 #includeint main(){ int a,b,n,temp,ta,tb; while(scanf("%d%d%d",&a,&b,&n)!=EOF) { if(b==n) { printf("fill B\n"); continue;原创 2013-04-21 23:39:54 · 1064 阅读 · 0 评论 -
zoj 1016 Parencodings
题目意思是 p串 代表 第i个右括号左边左括号的个数 w串 代表 第i个右括号匹配后括号内包含的已匹配的括号数加上自身 给你一个p串 求w串一看到题目就想直接用堆栈 可是感觉那样耗的空间很大,而且好像没必要。。后来想到直接记录下 括号数 第i个右括号 遍历每个右括号,向前遍历找最近的左括号,此位置之后的右括号数就是当前右括号内所包含的括号数如原创 2013-04-26 21:46:52 · 885 阅读 · 0 评论 -
zoj 1006 Do the Untwist
题目意思是给你密文,要你输出明文给你明文加密成密文方法:ciphercode[i] = (plaincode[ki modn] - i) mod 28.可以得出plaincode[ki mod n]= ( ciphercode[i] +i) mod 28. #include#includechar s[305];int a[305],b[305];int main(原创 2013-04-16 00:29:09 · 1503 阅读 · 0 评论 -
Grading 2011浙大机试
模拟题。。。。。主要c++中浮点型abs在cmath头文件中,其他abs在cstdlib中。。。。控制小数点位数 #include cout#include#include#include#includeusing namespace std;/*Each case occupies a line containing six positive integers:原创 2013-03-18 23:34:57 · 846 阅读 · 0 评论 -
Median 2011年浙大机试
求两个矩阵相加后整行或整列为0的数量。。。。#include#includeusing namespace std;int main(){ int a[20][20],i,j,n,m,row[20],column[20],t,s; while(cin>>m,m) { cin>>n; for(i=0;i<m;i++) { row[i]=0; for(j原创 2013-03-18 23:16:00 · 691 阅读 · 0 评论 -
2011浙大上机题 Median
尝试用c++写链表。。。。。。这样对向量再次存数据时,要清空上一组的数据。。。clear#include#includeusing namespace std;int main(){ vectorv1,v2,v3; long n1,n2,i,t; vector::iterator p1,p2; while(cin>>n1) { v1.clear()原创 2013-03-17 23:31:20 · 627 阅读 · 0 评论 -
zoj 1216 Deck
其实题目没看懂 但是知道输入为n 则输出 (1/2)+(1/4)+(1/6)+(1/8).。+(1/(2×n))格式有要求 n要右对齐于第5列,长度的小数点要和第12列对齐。。。所以有printf("%5d%10.3lf\n",n,s); #includeint main(){ int n,i; double s; printf("# Cards原创 2013-02-10 21:52:06 · 520 阅读 · 0 评论 -
zoj 1152 A Mathematical Curiosity
水题~~~~水过~~~#includeint main(){ int cas,count,num,m,n,i,j; scanf("%d",&cas); while(cas--) { count=1; while(scanf("%d%d",&n,&m)!=EOF&&n) { num=0; for(i=1;i<n;i++) for原创 2013-02-10 15:23:25 · 431 阅读 · 0 评论 -
zoj 2405 Specialized Four-Digit Numbers
水题~~ #includeint get(int n,int b){ int s=0; while(n) { s+=n%b; n/=b; } return s;}int main(){ int i,s10,s12,s16; for(i=1000;i<10000;i++) { s10=get(i,10); s12=g原创 2013-02-14 21:56:23 · 408 阅读 · 0 评论 -
zoj 1414 Number Steps
从开始得出后面。。 n=0 (0,0) n=1 (1,1) n%4为0或1 xn=xn-1 ,yn=yn-1 +2 n%4为2或3 xn=xn-1原创 2013-02-13 23:50:32 · 401 阅读 · 0 评论 -
zoj 1383 Binary Numbers
输出二进制表示的数中1的位置。。注意输出结束直接换行,不能多空格。。。#includeusing namespace std;int main(){ int t,n,i; cin>>t; while(t--) { cin>>n; i=0; while(n) { if(n%2) if(n!=1)cout<<i<<" ";原创 2013-02-12 12:39:06 · 409 阅读 · 0 评论 -
zoj 1382 A Simple Task
水题~~~#includeint main(){ int n,p,t; scanf("%d",&t); while(t--) { scanf("%d",&n); p=0; while(n%2==0) { n/=2; p++; } printf("%d %d\n",n,p); } return 0;}原创 2013-02-12 12:27:13 · 352 阅读 · 0 评论 -
zoj 1365 Mileage Bank
水题。。。。 注意四舍五入可以通过 (int)(x+0.5)来实现对x的四舍五入。。。 #include#includeint main(){ char b[20],s[20]; int sum=0,x; while(scanf("%s",s)!=EOF,strcmp(s,"#")) { if(!strcmp(s,"0")) { pri原创 2013-02-12 12:19:21 · 624 阅读 · 0 评论 -
zoj 1331 Perfect Cubes
水题 暴力搜索#include#includeint main(){ int a,b,c,d; for(a=2;a<=200;a++) { for(b=2;b<a;b++) { for(c=b;b*b*b+c*c*c<a*a*a;c++) { for(d=c;a*a*a>=b*b*b+c*c*c+d*d*d;d++)原创 2013-02-11 00:30:10 · 352 阅读 · 0 评论 -
zoj 1241 Geometry Made Simple
水题。。#include#includeint main(){ int a,b,c,ans=0; while(scanf("%d%d%d",&a,&b,&c)!=EOF&&(a||b||c)) { printf("Triangle #%d\n",++ans); if(a==0||b==0||c==0) { printf("Impossible.原创 2013-02-10 22:22:36 · 376 阅读 · 0 评论 -
zoj 1240 IBM Minus One
水题~~~~~#include#includeint main(){ char s[55]; int i,l,t,ans=0; scanf("%d",&t); getchar(); while(t--) { gets(s); l=strlen(s); for(i=0;i<l;i++) if(s[i]=='z')s[i]='a';原创 2013-02-10 21:58:49 · 391 阅读 · 0 评论 -
zoj 1201 Inversion
题目意思 如果输入的是p类串,则输出i类串;如果输出的是i类,则输出p类串。。。p转i:寻找在p串中在j左边的比j大的数的个数,i串中的第j个数填为该数。。i转p:从尾部开始,若第j个数的值为x,则说明在p串中j的左边有x个数大于j,通过从后到前一个个插入,即可得到p串。。例如:2 3 6 4 0 2 2 1 01、9 0 0 0 0 0 0 0 02、第8位原创 2013-02-10 20:26:31 · 482 阅读 · 0 评论 -
zoj 1205 Martian Addition
题目意思很简单,两个数相加,按照二十进制的。。。。看了别人的文章,发现了这题应该注意的地方:~~~注意输出时要去掉前导零。。。#include#includechar str[105];char getsum(char str1[],char str2[]){ int l,i,of,j,a,b,t; l=strlen(str1); of=0; for(i原创 2013-02-10 20:17:36 · 421 阅读 · 0 评论 -
zoj 1755 Clay Bully
水题~~~每个学生所发的泥土是一样的,说明体积一定相同。。#includeusing namespace std;int main(){ int a[10],i,j,sum,t,x,y,z; char s[10][10]; while(cin>>t,t!=-1) { sum=0; for(i=0;i<t;i++) { cin>>x>>y原创 2013-02-14 16:33:20 · 548 阅读 · 0 评论 -
zoj 1796 Euchre Results
水题~~#includeusing namespace std;int main(){ int a,b,x1,y1,x2,y2,x3,y3,x,y; while(cin>>x1>>y1>>x2>>y2>>x3>>y3) { if(x1==0&&y1==0&&x2==0&&y2==0&&x3==0&&y3==0)break; a=x1-y1+x2-y2+x3-原创 2013-02-14 17:10:14 · 436 阅读 · 0 评论 -
zoj 1514 Fake Tickets
水题~~输出假票的数目,注意不重复计算,即若存在3张号码相同的,假票数目也只是加1#includeusing namespace std;int main(){ int n,m,sum,flag[10005],i,x; while(cin>>n>>m) { if(n==0&&m==0)break; for(i=1;i<=n;i++)flag[i]=0;原创 2013-02-14 00:19:30 · 590 阅读 · 0 评论 -
zoj 2345 Gold Coins
和poj2000题目基本一样,就是zoj上有要求先输入块数t,且每个输出块间以空行分隔。。。#includeint ans[10005];void f(){ int i,s,j,k; ans[0]=0; for(i=1,j=1;;j+=i,i++) { for(k=0;k<i;k++) ans[k+j]=ans[k+j-1]+i; if(k+j>原创 2013-02-14 21:35:36 · 695 阅读 · 0 评论 -
zoj 2208 To and Fro
模拟题。。。 #include#includeusing namespace std;int main(){ char s[205]; int l,i,j,t,n,a,b; while(cin>>n,n) { cin>>s; l=strlen(s); for(i=0,j=2*n-1;j>=1&&i<n;j-=2,i++) {原创 2013-02-14 21:25:06 · 426 阅读 · 0 评论 -
zoj 2099 Frame Polygonal Line
水题~~~求出 maxx minx maxy miny#include#define MAX 0x07fffffffint main(){ int x,y,maxx=0,maxy=0,minx=MAX,miny=MAX,flag=0; while(scanf("%d%d",&x,&y)!=EOF) { if(x==0&&y==0) { if(fl原创 2013-02-14 20:51:24 · 646 阅读 · 0 评论