hihocoder-1223-不等式

输入n个不等式,求同时成立的不等式最多有多少个,数据范围n<=50,不等式右边的数据[0,1000]

分析:这题得转换思路来做,已知数据不超过1000,所以枚举0~1000以内的数,依次计算有多少个不等式满足,然后更新答案,也就是二重循环,1000*50

不过这题没有说一定是整数,如x>2,x<3,如果要求x一定是整数,那么这两个不等式不同时成立,但是这题没有说,所以x可以是浮点数,那么这两个不等式可以同时成立。

因此我们做得到时候把数据扩大一倍,也就是变成[0,2000]来做,不过考虑到边界问题,再变成[-2,2002]枚举

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5
 6 int n;
 7 string s;
 8 struct node{
 9     int fg;
10     int x;
11     node(int fg=0,int x=0):fg(fg),x(x){}
12 };
13 vector<node> v;
14
15 int main()
16 {
17     cin>>n;
18     while(n--){
19         char c;
20         cin>>c;
21         cin>>s;
22         int x;
23         cin>>x;
24         int fg;
25         if(s=="=") fg=0;
26         if(s==">") fg=1;
27         if(s=="<") fg=-1;
28         if(s=="<=") fg=-2;
29         if(s==">=") fg=2;
30         node no(fg,2*x);
31         v.push_back(no);
32     }
33     int ans=0;
34     for(int i=-2;i<=2002;i++){
35         int cnt=0;
36         for(int j=0;j<v.size();j++){
37             int fg=v[j].fg;
38             int x=v[j].x;
39             if(fg==0&&i==x) cnt++;
40             else if(fg==-1&&i<x) cnt++;
41             else if(fg==1&&i>x) cnt++;
42             else if(fg==-2&&i<=x) cnt++;
43             else if(fg==2&&i>=x) cnt++;
44         }
45         ans=max(ans,cnt);
46     }
47     cout<<ans<<endl;
48 }
时间: 2024-10-16 12:32:33

hihocoder-1223-不等式的相关文章

hihocoder #1223 : 不等式 水题

#1223 : 不等式 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1223 Description 给定n个关于X的不等式,问最多有多少个成立. 每个不等式为如下的形式之一: X < C X <= C X = C X > C X >= C Input 第一行一个整数n. 以下n行,每行一个不等式. 数据范围: 1<=N<=50,0<=C&l

hiho #1223 不等式

#1223 : 不等式 时间限制: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 &g

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然后统计成立的不等式数目

hihoCoder挑战赛14-1223 不等式

题目链接 时间限制: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 样例

hihoCoder挑战赛14 题目1 : 不等式

题目1 : 不等式 时间限制: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 >

hihocoder 1341 Constraint Checker【string】

hihocoder 1341 解释:这道题题目还是比较容易理解,就是根据输入的若干个不等式,校验后面输入的数据是否都满足前面的不等式,满足就输出Yes,只要有一个不满足就输出No.如“A<B<=E,3<=E<5”这个两个关系式,对于输入A=1,B=2,E=3肯定满足,因为1<2<=3,3<=3<5.而A=3, B=5,E=10就不满足,因为3<=10<5不成立. 思路: 将一串表达式拆分为每两个数比较大小,读取操作数[字母/数字], 读取运算符[

[HIHO1223]不等式(离散化,枚举)

题目链接:http://hihocoder.com/problemset/problem/1223 这题不难,难点在于小数的处理.可以0.5为步长枚举,也可以扩大偶数倍枚举. 1 /* 2 ━━━━━┒ギリギリ♂ eye! 3 ┓┏┓┏┓┃キリキリ♂ mind! 4 ┛┗┛┗┛┃\○/ 5 ┓┏┓┏┓┃ / 6 ┛┗┛┗┛┃ノ) 7 ┓┏┓┏┓┃ 8 ┛┗┛┗┛┃ 9 ┓┏┓┏┓┃ 10 ┛┗┛┗┛┃ 11 ┓┏┓┏┓┃ 12 ┛┗┛┗┛┃ 13 ┓┏┓┏┓┃ 14 ┃┃┃┃┃┃ 15 ┻┻┻┻

四边形不等式优化

四边形不等式优化条件(转自这里) 在动态规划中,经常遇到形如下式的转台转移方程: m(i,j)=min{m(i,k-1),m(k,j)}+w(i,j)(i≤k≤j)(min也可以改为max) 上述的m(i,j)表示区间[i,j]上的某个最优值.w(i,j)表示在转移时需要额外付出的代价.该方程的时间复杂度为O(N^3). 下面我们通过四边形不等式来优化上述方程,首先介绍什么是"区间包含的单调性"和"四边形不等式" (1)区间包含的单调性:如果对于i≤i'<j≤

四边形不等式(石子合并)

动态规区间dp做这道题的话应该是n^3,下面的代码优化到了n^2,用四边形不等式优化. 设mid[i][j]是dp[i][j]的最优解的断点,即它左区间的右端点,那么mid[i][j-1]<=mid[i][j]<=mid[i+1][j],所以在求解dp[i][j]时,枚举k可以只枚举这两个值之间枚举就好, 程序要先枚举区间长度,在枚举左端点,枚举每个区间长度时,他们的k总是只从1到n,只走一遍,所以这就相当于优化了一层,变成了O(n2)的. 比如len长度为3时,dp[1][3]只会枚举mid

[hihoCoder#1381]Little Y&#39;s Tree

[hihoCoder#1381]Little Y's Tree 试题描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块.小J想知道每个连通块中最远点对距离的和. 这里的询问是互相独立的,即每次都是在小Y的原树上进行操作. 输入 第一行一个整数n,接下来n-1行每行三个整数u,v,w,其中第i行表示第i条边边权为wi,连接了ui,vi两点. 接下来一行一个整数q,表示有q组询问. 对于每组询问,第一行一个正整数k,接下来一