zoukankan      html  css  js  c++  java
  • An Easy Task(简箪题)

    B. An Easy Task

    1000ms
    1000ms
    65536KB
    64-bit integer IO format: %lld      Java class name: Main
    Font Size:  

    You are given an easy task by your supervisor -- to find the best value of X, one of the parameters in an evaluation function, in order to improve the accuracy of the whole program.

    However, after a few days' analysis, you realize that it is far harder than you imagine. There are so many values X can be, and the only way to find the best one among them is to try all these possible values one after another!

    Fortunately, you know that X is an integer and thanks to the previous works by your senior fellow apprentices, you have got n constraints on X. Each constraint must be in one of the following forms:
    1. < k: means that X is less than integer k;
    2. > k: means that X is greater than integer k;
    3. <= k: means that X is less than or equal to integer k;
    4. >= k: means that X is greater than or equal to integer k;
    5. = k: means that X is equal to integer k.

    Now, you are going to figure out how many possible values X can be, so that you can estimate whether it is possible to finish your task before deadline.


    Input

    The first line contains an integer T (1 ≤ T ≤ 10) -- the number of test cases.

    For each test case:
    The first line contains an integer n. 0 ≤ n ≤ 10 000.
    Then follows n lines, each line contains a comparison operator o and an integer k, separated by a single space. o can be one of “>”, “<”, “>=”, “<=”, and “=”. 0 ≤ | k | ≤ 1 000 000 000.
    There is no contradictory between these constraints, in other word, at least one integer value meets all of them.

    Output

    For each test case, output one integer in a single line -- the number of possible values of X, or “-1” if the answer is infinite.

    Sample Input

    1
    2
    > 2
    <= 5

    Sample Output

    3
    #include<stdio.h>
    #define ll long long
    #define inf 9999999999
    int main()
    {
        ll t,n,a,l,r;
        char s[5];
        scanf("%lld",&t);
        while(t--)
        {
            scanf("%lld",&n);
            l=-inf; r=inf;
            int flag=1;
            while(n--)
            {
                scanf("%s%lld",s,&a);
                if(s[1]!=''&&flag)
                {
                    if(s[0]=='>')if(l<a)l=a;
                    if(s[0]=='<'&&r>a)r=a;
                }
                else if(flag)
                {
                    if(s[0]=='>'&&l<a+1)l=a+1;
                    if(s[0]=='<'&&r>a-1)r=a-1;
                    if(s[0]=='=')
                    if(l<=a&&a<=r)l=r=a;else flag=0;
                }
            }
            if(flag==0||l>r)printf("0
    ");
            else if(l==-inf||r==inf)printf("-1
    ");
            else printf("%lld
    ",r-l+1);
    
        }
    }
    


  • 相关阅读:
    P2762 [网络流24题]太空飞行计划问题(最小割)
    poj2987 Firing[最小割]
    P2051 [AHOI2009]中国象棋[线性DP]
    poj1637 Sightseeing tour[最大流+欧拉回路]
    hdu3739 Anti LIS[最小割]
    P2766 [网络流24题]最长不下降子序列问题
    P2764 [网络流24题]最小路径覆盖问题[最大流]
    P2936(BZOJ3396) [USACO09JAN]全流Total Flow[最大流]
    BZOJ4278 [ONTAK2015]Tasowanie[后缀数组+贪心]
    Robot framework之元素定位实战
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6715111.html
Copyright © 2011-2022 走看看