今天大家配合的非常好 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,s,x;
memset(a,0,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,3)先 (3,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,0,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 ");
}
}