码迷,mamicode.com
首页 > 其他好文 > 详细

hihoCoder挑战赛14-1223 不等式

时间:2015-09-02 20:37:43      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

题目链接

时间限制: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

hihoCoder挑战赛14-1223 不等式

标签:

原文地址:http://www.cnblogs.com/glb666/p/4779361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!