2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem

来源:互联网 发布:龙虎榜数据几点出来 编辑:程序博客网 时间:2024/05/17 03:04






痛并快乐着,调了一下午的最长上升子序列,mm,不会树状数组,比完赛后旁边哥们告诉我  ,把一个5拆成5个1就行,gg,日了狗了

ac代码

#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <cmath>#define inf 0x3f3f3f3fusing namespace std;const int maxn=1e6+10;int a[2*maxn]; int dp[2*maxn];int len;int binary_search(int i){int left=1,right=len;int mid;while(left < right){mid=left + (right-left)/2;if(dp[mid] > a[i])right=mid;elseleft=mid+1;}return left;}int main(){int tmp;int n=1;while(~scanf("%d",&tmp)){if(tmp >= 10000){tmp=tmp-10000;for(int i=0;i<5;i++){a[n++]=tmp;}}else if(tmp >=0 && tmp < 10000){a[n++]=tmp;}}len=1;dp[1]=a[1];int flag=0;for(int i=2;i<n;i++){flag=1;if(a[i] >= dp[len]){dp[++len]=a[i];}else{int pos=lower_bound(dp+1,dp+1+len,a[i])-dp;while(dp[pos] <= a[i])pos++;dp[pos]=a[i];}}if(!flag) printf("0\n");else printf("%d\n",len);return 0;}


还准备树状数组搞一下,试试哈




阅读全文
0 0
原创粉丝点击