標籤:
時間限制:10000ms單點時限:1000ms記憶體限制:256MB
描述
給定n個關於X的不等式,問最多有多少個成立。
每個不等式為如下的形式之一:
X < C
X <= C
X = C
X > C
X >= C
輸入
第一行一個整數n。
以下n行,每行一個不等式。
資料範圍:
1<=N<=50,0<=C<=1000
輸出
一行一個整數,表示最多可以同時成立的不等式個數。
-
範例輸入
-
4X = 1X = 2X = 3X > 0
-
範例輸出
-
2
題意,給出一些不等式,要求,能滿足的不等式的個數。
由於,x不一這定整數,直接枚舉所有的1 - 1000 和 加上0.5所有的最大值就可以了,也就是映射成-1 -0.5 0 0.5 1 1.5... 等號,直接加1,其它成段的加1就可以了。複雜度o(n * n );
#define N 2050#define M 100005#define maxn 205#define MOD 1000000000000000007int n,m,num[N];char str[20];int getIndex(int x,bool has){ if(has){ return (x + 1) * 2; } else { return (x + 1) * 2 - 1; }}int main(){ //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); while(S(n)!=EOF) { fill(num,0); FI(n){ SS(str); SS(str); S(m); if(str[0] == '<'){ if(str[1] == '='){ int x = getIndex(m,true); For(j,0,x+1){ num[j]++; } } else { int x = getIndex(m,false); For(j,0,x+1){ num[j]++; } } } else if(str[0] == '>'){ if(str[1] == '='){ int x = getIndex(m,true); for(int j = x;j<N;j++) num[j]++; } else { int x = getIndex(m,false); for(int j = x;j<N;j++) num[j]++; } } else if(str[0] == '='){ int x = getIndex(m,true); num[x]++; } } int ans = 0; FI(N) ans = max(ans,num[i]); printf("%d\n",ans); } //fclose(stdin); //fclose(stdout); return 0;}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
hihoCoder挑戰賽14 題目1 : 不等式