uestc oj 1868 Condorcet Winners

其实是一个模拟比较的题目,求出最优解,主要困难在于读懂题目的意思。

题目的意思是求出最后的获胜者,是指能够击败所有候选者的人。

只要挨个遍历,利用一点哈希思想,将最后的”max“  求出,此时max要么

是最优解(其他的不可能是最优解,因为都曾有人将其击败)

要么还有人将其击败或者说与其打了个平手,此时都输出无解就行了

还有题目时间很紧,预计有500*2500*50的数据输入量可以进行优化

#include
int b ,c ,temp,cas=0,ans;
int site[550][2550];

inline int compare(int a1,int a2)
{
    int suma1,suma2;
    suma1 = 0;
    suma2 = 0;
    for(int i =0;i0)
         suma2++;
    }
    int ans2 = suma1 -suma2;
    return ans2;
}

int Scan()
{
    int res = 0 , ch;
    while( !( ( ch = getchar() ) >= '0' && ch <= '9' ) )
    {
        if( ch == EOF )  return 1 << 30 ;
    }
    res = ch - '0' ;
    while( ( ch = getchar() ) >= '0' && ch <= '9' )
        res = res * 10 + ( ch - '0' ) ;
    return res ;
}

int main()
{
   //freopen("1.txt","r",stdin);
   while(scanf("%d%d",&b,&c)==2)//b是选民数 c是候选人
   {
       cas ++;
       if(b==0&&c==0) break;
       int i,j,a;
       for(i=0;i

你可能感兴趣的:(模拟)