hihoCoder挑战赛14 -1223
描述
给定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
题目并没有要求X一定是整数。所以如果算法是枚举X然后统计成立的不等式数目的话,需要每次+0.5枚举所有可能X。
//作者:1085422276 #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include<bits/stdc++.h> #include <map> #include <stack> typedef long long ll; using namespace std; const int inf = 10000000; inline ll Read() { ll x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f; } ll exgcd(ll a,ll b,ll &x,ll &y) { ll temp,p; if(b==0) { x=1; y=0; return a; } p=exgcd(b,a%b,x,y); temp=x; x=y; y=temp-(a/b)*y; return p; } //******************************* #define N 101 int ans=0,a[N],n,s[N];char b[N][20]; int main() { n=Read(); for (int i=1;i<=n;i++) { scanf("%s%s%d",b[i],b[i],&a[i]); s[i]=strlen(b[i]); } for(double t=-0.5;t<=1004; t+=0.5) { int k=0; for (int i=1;i<=n;i++) if ((t==a[i]&&b[i][0]=='=')||(t==a[i]&&s[i]==2&&b[i][1]=='=')) k++; else if (t>a[i]&&b[i][0]=='>') k++; else if (t<a[i]&&b[i][0]=='<') k++; ans=max(ans,k); } cout <<ans<<endl; return 0; }