(省赛系列――团队第三场)
今天大家配合的非常好 1度获得第1名 虽然最后只拿了第3 但是和大1学弟1起配合让我似乎找回了点久背的东西 yes,I do
【nyist】TeamContest - 3 第A题---卡路里 1道水体。很简单,相信大家大1的时候做过很多这类题。题目大意就是告知你N个数,然后让你求N个数的和是不是大于1500,如果大于就输出“NO”,否则输出“YES”。 直接贴代码
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm>
using namespace std; int main() { int n,s,x; while (~scanf("%d",&n)){ s=0; while (n--){ scanf("%d",&x); s+=x; } if (s>1500) printf("NO "); else printf("YES "); } return 0; } 【nyist】TeamContest - 3 第B题---阿基米德螺线 这道题就是1道简单的数学题,由给出的极坐标方程可以求出弧度制,然后再由区间可以看出1个区间是2*pi;便可得出所在的是第几个区间; 附代码: #include<stdio.h>
int main() { int test; scanf("%d",&test); while(test--) { double r,a,oo; int kk; scanf("%lf%lf",&r,&a); oo=r/a; kk=oo/(2.0*3.1415926); printf("%d ",kk+1);
} }
【nyist】TeamContest - 3 第C题---Serious 这题也是这次比赛众多水题中的1个了,就是1道简单的摹拟。 题意大致是告知你4个点,前两个点是哥哥弟弟的位置,后两个点是墙的两头,并且告知你这堵墙和哥哥弟弟间的连线肯定有交点,让你求哥哥到弟弟的最短路(弟弟到哥哥?)。 OK。思路很简单。如果是在纸上的话大家都会求。用哥哥弟弟两点和墙的两边连线,求出两条连线的距离,比较大小。首先计算哥哥弟弟两点和某1边连线,记录为dz和dzz,然后计算哥哥弟弟两点和另外一边连线,记录为dy和dyy,比较dz+dzz和dy+dyy大小,求最小的,也就是哥哥和弟弟之间的最短路。 仍然是帖代码:
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; struct point { double x,y; };
double dis(point a,point b) { return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); }
int main() { int t; scanf("%d",&t); while(t--) { point a,b,c,d;//dd gg z y scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y); scanf("%lf%lf%lf%lf",&c.x,&c.y,&d.x,&d.y); /*zuo*/ double dz=dis(a,c); dz=sqrt(dz); double dzz=dis(b,c); dzz=sqrt(dzz); double dy=dis(a,d); dy=sqrt(dy); double dyy=dis(b,d); dyy=sqrt(dyy); double ans=min(dz+dzz,dy+dyy); printf("%.3lf ",ans); } } 【nyist】TeamContest - 3 第D题-- Number theory! 看到这个题,首先想到的会是先将9进制转换为10进制,但是看1下数据范围就能够看出这题不是让我们去算,然后又可以想到oj上9的余数问题(虽然现在好不懂为啥),然后就大胆的去写代码,写完代码又测了1组自己数据就过了, 附代码: #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int M=1e7+5; char a[M]; int main() { int d=1; while(~scanf("%s",a)) { if(strcmp(a,"0")==0) break; int len=strlen(a); int sum=0; for(int i=0;i<len;i++) { sum+=a[i]-'0'; } printf("Case %d: %d ",d++,sum%8); } }
【nyist】TeamContest - 3 第E题---干了这桶冰红茶! 这道题也算是1道简单的动态。 题意大概是有1桶N升的“超级冰红茶”,每次能喝1L,2L或3L,问喝完有几种喝法。 很简单,将0L赋值为1种喝法,以后的第i升可以用i⑴,i⑵,i⑶的和来求,也就是“喝1L之前的方案数”加“喝2L之前的方案数”加“喝3L之前的方案数”就是第i升的方案数。1个循环求出1~30升的方案数,然后输出需要的。 照旧照例贴代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; long long a[50];
int main() { int n,x; memset(a,sizeof(0)); a[0]=1; for (int i=1; i<=30; i++) { if (i>=1) a[i]=a[i]+a[i⑴]; if (i>=2) a[i]=a[i]+a[i⑵]; if (i>=3) a[i]=a[i]+a[i⑶]; } scanf("%d",&n); while (n--) { scanf("%d",&x); printf("%lld ",a[x]); } return 0; } 【nyist】TeamContest - 3 第F题---Araleii & Bill的冠名权争取战 先理解题意--题意大致如此 给你1个n 从1~n随机选两堆石子 取石子问后手赢的几率 分析:1 (1,1)后手 1/1 2 (1,2)先手 (2,1)先手 (2,2)后手1/2 3 (1,3)先 (2,3)先 (3,3)后 (2,1)先 3/9 1/3 4(1,4)先 (2,4)先 (3,4)先 (4,1)先 (4,2)先 (4,3) 先 (4,4)先 4/16 1/4 (根据变动1次之前的状态 是后手赢 那末这次先手就可以成功,例如3,4可以从地儿堆取1,使后手的状态为另外一人必胜)1开始推理了很久最后大家1起推 发现之前判前后手赢的情况出了毛病 最后ac 感觉很棒。 每次输出 1/n 代码自写吧。
【nyist】TeamContest - 3 第H题---Pair 先解题意---题意大致如此。给你1个数N,让你从1~N中任意选取两个数,并求出他们的和为pair的值,问你最多有多少对pair。其中要求1.pair的值不能重复。2.选取的数不能重复。 思路:开始用了1种方法,选取1和n⑴组合,选取2和n⑶组合,以此类推。Wrong几次。 然后采取了第2种方法,选取n/2和n/2⑴组合,n/2+1和n/2⑶组合,以此类推,最后使n/2⑵和n/2⑷等等这些再组合。又被队友找到反例。 结果队友找到8这个反例14,26,35. 怒打表,找规律,打表代码: #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std;
bool b[1000],c[1000]; int s,n; int fun(int r,int x){ if (x>s) s=x; for (int i=r; i<n; i++){ for (int j=i+1; j<n; j++){ if (i+j<=n && c[i+j]==0 && b[i]==0 && b[j]==0){ b[i]=1;b[j]=1;c[i+j]=1; fun(i+1,x+1); b[i]=0;b[j]=0;c[i+j]=0; } } } }
int main() { int t; memset(b,sizeof(b)); //while (~scanf("%d",&n)){ for (n=0; n<100; n++){ s=0; fun(1,0); printf("%d=%d ",n,s); } return 0; } 找出规律并总结出数学规律(想看规律自己运行代码),总结以下代码: #include<iostream> #include<stdio.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); if(n<3) printf("0 "); else { int id,s; if(n%5==0) id=n/5; else id=n/5+1; if (n%5==1 || n%5==2) s=id*2⑵; else s=id*2⑴; printf("%d ",s); } } } OK 。。。AC
【nyist】TeamContest - 3 第I题---nonodog! 这题题意是1个人附近有n个冷气团,冷气团与本身的寒冷程度公式又给出了,直接算出每天的感受之和便可,如进程度大于界定值就停止。注意,不要误认为是求所有天的和; 附代码: #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std;
int dis(int x,int y) { return (x*x+y*y); }
double gs(double ci,double ri)//寒冷度 { return ci/ri; }
int main() { int n; double t; int x[1005],y[1005],vx[1005],vy[1005]; double ci[1005]; while(~scanf("%d%lf",&n,&t)) { double sum=0.0; bool flag=0;
for(int i=1; i<=n; i++) { scanf("%d%d%d%d%lf",&x[i],&y[i],&vx[i],&vy[i],&ci[i]); }
for(int j=1; j<=1000; j++) {sum=0.0; for(int i=1; i<=n; i++) { double di=dis(x[i]+vx[i]*j,y[i]+vy[i]*j); sum+=gs(ci[i],di); // printf("%lf ",sum); if(sum>t) { printf("%d ",j); flag=1; goto th; } } } th: if(!flag) printf("Nono/Stay Panda "); } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |