It‘s All In The Mind HDU - 5742(贪心,)

原题链接 

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
int a[maxn];
int main(){
	int t;
	cin>>t;
	while(t--){
		memset(a,0,sizeof(a));//一定要初始化,这里WA了好多次
		int n,m;
		cin>>n>>m;
		int flag1=0,flag2=0;
		for(int i=1;i<=m;i++){
			int x,y;
			cin>>x>>y;
			a[x]=y;
			if(x==1)flag1=1;
			if(x==2)flag2=1;
		}
		if(!flag1&&flag2)a[1]=100;
		if(flag1&&!flag2)a[2]=a[1];
		if(!flag1&&!flag2)a[1]=a[2]=100;
		//if(flag1&&flag2);
		int temp=0,flag=0;
	    for(int i=n;i>=3;i--){
	    	if(a[i]==0&&flag==0)a[i]=0;
	    	else{
	    		if(a[i]){
	    			flag=1;
	    			temp=a[i];
				}
	    		else if(!a[i]&&flag)a[i]=temp;
			}
		}
		int sum2=0;
		for(int i=n;i>=1;i--){
			sum2+=a[i];
		}
		int sum1=a[1]+a[2];
		int gcd=__gcd(sum1,sum2);//__gcd()是两个下划线
		cout<<sum1/gcd<<"/"<<sum2/gcd<<endl;
	}
} 

猜你喜欢

转载自blog.csdn.net/Alanrookie/article/details/107152789