首页 > 代码库 > hihocoder-1223-不等式

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 }

 

hihocoder-1223-不等式