标签:
时间限制: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,最后枚举X,找出最多可以同时成立的不等式个数,注意X没有说是整数
#pragma comment(linker,"/STACK:102400000,102400000")
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <fstream>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAX = 0x7fffffff;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const ll LMAX = 0x7fffffffffffffff;
const double pi=acos(-1.0);
const int maxn = 100000+5;
const int maxm = 100000+5;
const int mod = 1000000007;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
struct node
{
int op;
int c;
} data[50+5];
int strToint(string s,int index)
{
int re=0;
for(int i=index; i<s.length(); ++i)
{
re=re*10+s[i]-‘0‘;
}
return re;
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
int n;
//while(cin>>n)
cin>>n;
{
getchar();
string s;
int c;
for(int i=1; i<=n; ++i)
{
cin>>s>>s>>c;
data[i].c=c;
if(s=="<")
{
data[i].op=1;
}
else if(s=="<=")
{
data[i].op=2;
}
else if(s=="=")
{
data[i].op=3;
}
else if(s==">=")
{
data[i].op=4;
}
else
{
data[i].op=5;
}
}
int ans=0;
for(double x=-0.5; x<=1000.5; x+=0.5)
{
int num=0;
for(int j=1; j<=n; ++j)
{
switch(data[j].op)
{
case 1:
if(x<data[j].c)
num++;
break;
case 2:
if(x<=data[j].c)
num++;
break;
case 3:
if(x==data[j].c)
num++;
break;
case 4:
if(x>=data[j].c)
num++;
break;
case 5:
if(x>data[j].c)
num++;
break;
}
}
ans=max(num,ans);
}
cout<<ans<<endl;
}
return 0;
}
犯了好多错误,都是一些细节问题.
开始采用getline()读入,把X当成整数处理,X从零枚举到1000,错了三次,4A
标签:
原文地址:http://www.cnblogs.com/glb666/p/4779361.html