HDU 5742 It's All In The Mind

It's All In The Mind

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 409    Accepted Submission(s): 189


Problem Description
Professor Zhang has a number sequence a1,a2,...,an. However, the sequence is not complete and some elements are missing. Fortunately, Professor Zhang remembers some properties of the sequence:

1. For every i ∈{1,2,...,n}, 0≤ai≤100.
2. The sequence is non-increasing, i.e. a1≥a2≥...≥an.
3. The sum of all elements in the sequence is not zero.

Professor Zhang wants to know the maximum value of (a1+a2)/∑ni=1 ai among all the possible sequences.
 
Input
There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:

The first contains two integers n and m (2≤n≤100,0≤m≤n) -- the length of the sequence and the number of known elements.

In the next m lines, each contains two integers xi and yi (1≤xi≤n,0≤yi≤100,xi<xi+1,yi≥yi+1)  indicating that axi = yi.
 
Output
For each test case, output the answer as an irreducible fraction "p/q", where p,q are integers, q>0.
 
Sample Input
2
2 0
3 1
3 1
 
Sample Output
1/1
200/201
 
Author
zimpha
 
Source
 
 
 
解析:
 
 
 
 
 
#include <bits/stdc++.h>

int a[105];

int gcd(int a, int b)
{
    return b == 0 ? a : gcd(b, a%b);
}

int main()
{
    int T, n, m;
    scanf("%d", &T);
    while(T--){
        scanf("%d%d", &n, &m);
        memset(a, -1, sizeof(a));
        int x, y;
        while(m--){
            scanf("%d%d", &x, &y);
            a[x] = y;
        }
        if(a[1] == -1)
            a[1] = 100;
        if(a[2] == -1)
            a[2] = a[1];
        int p = a[1]+a[2], q = p;
        a[n+1] = 0;
        for(int i = n; i >= 3; --i){
            if(a[i] == -1)
                a[i] = a[i+1];
            q += a[i];
        }
        int g = gcd(p, q);
        printf("%d/%d
", p/g, q/g);
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/inmoonlight/p/5693965.html