给定n个关于X的不等式,问最多有多少个成立。
每个不等式为如下的形式之一:
X < C
X <= C
X = C
X > C
X >= C
标签:
Time Limit: 1 Sec
Memory Limit: 256 MB
给定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
题意
题解:
直接枚举每一个数就好了,对于每一个数,判断有多少个数据是满足的
当然对于数据范围比较大的题的话,那就得离散化加区间更新呢,最后查询最大值就好了
总体来说思路是一样的
代码:
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <bitset> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 1200051 #define mod 10007 #define eps 1e-9 int Num; //const int inf=0x7fffffff; //нчоч╢С const int inf=~0u>>1; 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; } //************************************************************************************** string str[100],X; int num[100]; int main() { int n=read(); for(int i=1;i<=n;i++) { cin>>X>>str[i]>>num[i]; num[i]*=2; } int ans=0; for(int i=-2;i<=2002;i++) { int tmp = 0; for(int j=1;j<=n;j++) { int ok = 1; if(str[j]=="<") if(i>=num[j]) ok=0; if(str[j]=="<=") if(i>num[j]) ok=0; if(str[j]=="=") if(i!=num[j]) ok=0; if(str[j]==">") if(i<=num[j]) ok=0; if(str[j]==">=") if(i<num[j]) ok=0; if(ok) tmp++; } ans=max(tmp,ans); } printf("%d\n",ans); }
标签:
原文地址:http://www.cnblogs.com/qscqesze/p/4772873.html