11点40左右感到新校,我们到的时候才几个人啊.
期间随便看了看网站,也就是苹果的发布会,等到12点开始做题了,不过队友还没有来啦,首先A了一道水水水题
A Computer Graphics Problem
按格式输出不同的符号而已
直接贴代码了
#include <iostream> #include <cstdio> using namespace std; int main() { int n,x; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&x); x = x/10; printf("Case #%d: ",i); printf("*------------* "); for(int j=10-x;j>0;j--) printf("|............| "); for(int k=x;k>0;k--) printf("|------------| "); printf("*------------* "); } return 0; }
The Number Off of FFF
做完这道呢,队友也都来了,就进入了正式的比赛节奏,我先准备做最后一道The Number Off of FFF,WA了很久不知道错在哪里
最后马骋A过了,看了下,基本思路一样啊
我为什么WA了啊,题目意思很简单啊,就是报数,后面一个跟着前面一个报数,每次加一,有且只有一个报错了
我用的数组存了,马骋用的直接用的两个int 保存前后的,时间也快多,开始没想到
先贴AC代码
#include<cstdio> #include<cstring> #include<string> #include<iostream> using namespace std; int main() { int t; cin>>t; for(int i=1; i<=t; i++) { printf("Case #%d: ",i); int n,a,b,j; bool iff=0; cin>>n>>a; for(j=2; j<=n; j++) { cin>>b; if(b!=a+1) { printf("%d ",j); iff=1; break; } a=b; } for(; j<n; j++) scanf("%d",&a); if(!iff) printf("1 "); } return 0; }
然后是我的WA
#include <iostream> #include <cstdio> typedef long long ll; using namespace std; int num[10005]; int main() { int t,n,x; scanf("%d",&t); for(int ii=1;ii<=t;ii++) { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&num[i]); } x=1; for(int i=2;i<=n;i++) { if(num[i]!=num[i-1]+1) { x=i; break; } } printf("Case #%d: %d ",ii,x); } return 0; }
明天继续写,室友要碎觉了
有些东西不写下来就会忘记的
这道题目不会做,开始随便写了个暴力测试数据,发现一个规律,就是所有以0结尾的数x,从0到x各位上的数的和为10的倍数的数的数量为x/10-1
就是用这个规律,碰巧过了这一道题目,有人说可以用什么数位dp,表示实在不会的说
贴代码
#include <iostream> #include <cstdio> using namespace std; long long c; bool isGood(long long x) { long long count = 0; while(x!=0) { count += x % 10; x=x/10; } if(count % 10 == 0) return true; return false; } long long NUM(long long a , long long b) { long long cc=0; for(long long i = a; i<=b; i++) { if(isGood(i)) { cc++; } } return cc; } int main() { long long t; long long x,y; scanf("%I64d",&t); for(long long ii=1; ii<=t; ii++) { c=0; scanf("%I64d %I64d",&x,&y); long long xa = (x-1) / 10 * 10; long long ya = y / 10 * 10; long long aa = (x-1) /10 - 1 + NUM(xa,x-1); long long bb = y/10 - 1 + NUM(ya,y); c = bb - aa; printf("Case #%I64d: %I64d ",ii,c); } return 0; }
Naive and Silly Muggles
这道题是最小包围圆,几何体,直接上模版
#include<stdio.h> #include<math.h> /*求三点的圆心和半径的函数*/ void sdi(double x1,double y1,double x2,double y2,double x3,double y3,double *x0,double *y0,double *r) { *x0=((y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1)+(y2-y1)*(y1* y1-y3*y3+x1*x1-x3*x3))/(2*(x2-x1)*(y3-y1)-2*(x3-x1)*(y2-y1)); *y0=((x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1)+(x2-x1)*(x1*x1-x3*x3+y1*y1-y3*y3))/(2*(y2-y1)*(x3-x1)-2*(y3-y1)*(x2-x1)); *r=sqrt((x1-*x0)*(x1-*x0)+(y1-*y0)*(y1-*y0)); } /*求两点间的距离*/ void ldi(double x1,double y1,double x2,double y2,double *r) { *r=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } /*判断三点构成的圆是否包含其他的任意点*/ int bji(int n,double *x,double *y,double r) { int i; for(i=1; i<=n; i++) { if(r<sqrt((x[0]-x[i])*(x[0]-x[i])+(y[0]-y[i])*(y[0]-y[i]))) return 0; } return 1; } int main() { int n,i,j,k,t; double xx,yy; double x[120],y[120],x0,y0,r,s; scanf("%d",&t); for(int ti = 1;ti<=t;ti++) { n=3; /*输入所有点*/ for(i=1; i<=n; i++) { scanf("%lf %lf",&x[i],&y[i]); } r=0; s=0; x[0]=x[1]; y[0]=y[1]; /*先求出两点间的最长距离。以这两点的距离为直径画一个圆。*/ for(i=1; i<n; i++) { for(j=i+1; j<=n; j++) { ldi(x[i],y[i],x[j],y[j],&s); if(s>r) { r=s; x[0]=(x[i]+x[j])/2; y[0]=(y[i]+y[j])/2; } } } /*如果包含了所有的点那么 就是所求的解*/ if(bji(n,x,y,r/2)) { scanf("%lf %lf",&xx,&yy); printf("Case #%d: ",ti); double disss; ldi(x[0],y[0],xx,yy,&disss); if(disss <= r/2) puts("Danger"); else puts("Safe"); } /*如果不包含所有的点那么 就是三点所确定的圆是我们所求的解*/ else { s=1000; r=0; for(i=1; i<=n-2; i++) { for(j=i+1; j<=n-1; j++) { for(k=j+1; k<=n; k++) { sdi(x[i],y[i],x[j],y[j],x[k],y[k],&x[0],&y[0],&r); if(bji(n,x,y,r)&&r<s) { s=r; x0=x[0]; y0=y[0]; } } } } scanf("%lf %lf",&xx,&yy); printf("Case #%d: ",ti); double disss; ldi(x0,y0,xx,yy,&disss); if(disss <= s) puts("Danger"); else puts("Safe"); } } return 0; }
现场就做出来了4个题目,给上交的AK大神们跪了