hdu_5742_It's All In The Mind

题目链接:hdu_5742_It's All In The Mind

题意:

有一个部分的数列,让你找一个满足他给的三个条件的数列,使前两个数的和除这个数列的sum最大

题解:

xjb贪心一下就行了。

 1 #include<cstdio>
 2 #include<cmath>
 3 #define F(i,a,b) for(int i=a;i<=b;i++)
 4 
 5 int gcd(int a,int b){return b?gcd(b,a%b):a;}
 6 
 7 int a[110],t,n,m,x,y;
 8 
 9 int main()
10 {
11     scanf("%d",&t);
12     while(t--)
13     {
14         scanf("%d%d",&n,&m);
15         F(i,1,n)a[i]=-1;
16         F(i,1,m)scanf("%d%d",&x,&y),a[x]=y;
17         int sum=0,pre=0,zi=0,gc;
18         for(int i=n;i>2;i--)
19         {
20             if(a[i]==-1)a[i]=pre;
21             else pre=a[i];
22             sum+=a[i];
23         }
24         pre=100;
25         F(i,1,2)if(a[i]==-1)sum+=pre,zi+=pre;
26         else pre=a[i],sum+=a[i],zi+=a[i];
27         gc=gcd(sum,zi),sum/=gc,zi/=gc;
28         printf("%d/%d
",zi,sum);
29     }
30 }
View Code
原文地址:https://www.cnblogs.com/bin-gege/p/5695853.html