hihoCoder挑战赛14 题目1 : 不等式

题目1 : 不等式

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

给定n个关于X的不等式,问最多有多少个成立。

每个不等式为如下的形式之一:

X < C

X <= C

X = C

X > C

X >= C

输入

第一行一个整数n。

以下n行,每行一个不等式。

数据范围:

1<=N<=50,0<=C<=1000

输出

一行一个整数,表示最多可以同时成立的不等式个数。

样例输入
4
X = 1
X = 2
X = 3
X > 0
样例输出
2

这题没说C是整数,但是提交代码把C当成整数可以AC,解法:枚举 X= -0.5,0,0.5,......1000.5 检查满足条件的不等式有多少个,ans就是这个最大值
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
using namespace std;

char s[10];
char st[10];
int n;
int a[2020];
int main(){
    scanf("%d",&n);
    int x;
    for(int i=0;i<n;i++){
        scanf("%s",s);
        scanf("%s",s);
        scanf("%s",st);
        sscanf(st,"%d",&x);
        if(strcmp(s,"=")==0){
            a[2*(x+1)]++;
        }
        else if(strcmp(s,">")==0){
            for(int j=2*(x+1)+1;j<2010;j++)
                a[j]++;
        }else if(strcmp(s,">=")==0){
            for(int j=2*(x+1);j<2010;j++)
                a[j]++;
        }else if(strcmp(s,"<")==0){
            for(int j=2*x+1;j>=0;j--)
                a[j]++;
        }else if(strcmp(s,"<=")==0){
            for(int j=2*(x+1);j>=0;j--)
                a[j]++;
        }
    }
    int ans = 0;
    for(int i=0;i<2010;i++){
        if(ans<a[i]) ans = a[i];
    }
    printf("%d
",ans);
    return 0;
}


原文地址:https://www.cnblogs.com/zhjou/p/4771638.html