#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int M =1100;
int a[M];
int gcd(int a,int b)
{
if(a%b==0)
return b;
else
{
return gcd(b,a%b);
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
int a1,a2,sum=0;
int n,m;
cin>>n>>m;
memset(a,-1,sizeof(a)); // a[i]==-1 代表没有被确定
while(m--)
{
int x,y;
cin>>x>>y;
a[x]=y;
}
//(a1+a2)/sum(a); //要最大 所以使 a1,a2尽量大 sum尽量小
//The sequence is non-increasing 非递增 从右边开始确定
a[n+1]=0;// 如果a[n]没确定 sum要小,则an为0
for(int i=n;i>2;i--)
{
// a[i+1]<=a[i] 当a[i+1]确定时 a[i]最小值为a[i+1]
if(a[i]==-1)
{
a[i]=a[i+1];
}
sum+=a[i];
}
if(a[1]==-1&&a[2]==-1)
{
a[1]=a[2]=100;
}
else if(a[1]!=-1&&a[2]==-1)
{
a[2]=a[1]; // a[2]尽量大
// 小于1的分数 分子分母同加一个数 值增大 !!
}
else if(a[1]==-1)
{
a[1]=100;
}
sum+=a[1]+a[2];
int d=gcd(a[1]+a[2],sum); //约分
cout<<(a[1]+a[2])/d<<'/'<<sum/d<<endl;
}
return 0;
}
hdu 5742 简单贪心
最新推荐文章于 2017-05-12 11:03:46 发布