标签:793 cout int CF cin tie 观察 ri define
题目大意: 通过任意排序,让数列的 min(最大上升,下降子序列)的值最大
思路:
- 将数分为3种类型, 上升的,下降的,2者都可以的. 贪心的让 2者都可以的数多
- 对于重复出现的数,放在2者都可以的
- 对于单个出现的数,可以选着一个数,让他成为2者的公共数,
- 所以就是 asn+num/2(向上去整数)
// 15.26 #include <bits/stdc++.h> using namespace std; #define ri register int #define M 200005 int n,m; int T; int p[M]; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>T; while(T--) { cin>>n; for(ri i=1;i<=n;i++) cin>>p[i]; sort(p+1,p+1+n); if(n==1) { cout<<1<<endl; continue; } int flag=0; int num=0,ans=0; for(ri i=2;i<=n;i++) { if(p[i]!=p[i-1]) { if(flag==0) { num++; } else { ans++; } flag=0; } else { flag=1; } } if(flag==0) { num++; } else { ans++; } if(num&1) { cout<<ans+num/2+1<<endl; continue; } cout<<ans+num/2<<endl; } return 0; }View Code
标签:793,cout,int,CF,cin,tie,观察,ri,define 来源: https://www.cnblogs.com/Lamboofhome/p/16435647.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。