L. The Heaviest Non-decreasing Subsequence Problem -最长不降子序列变形nlogn-2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
来源:互联网 发布:mac虚拟机连校园网 编辑:程序博客网 时间:2024/06/13 13:08
Let SSS be a sequence of integers s1s_{1}s1,s2s_{2}s2,.........,sns_{n}sn Each integer is is associated with a weight by the following rules:
(1) If is is negative, then its weight is 000.
(2) If is is greater than or equal to 100001000010000, then its weight is 555. Furthermore, the real integer value of sis_{i}si is si−10000s_{i}-10000si−10000 . For example, if sis_{i}si is 101011010110101, then is is reset to 101101101 and its weight is 555.
(3) Otherwise, its weight is 111.
A non-decreasing subsequence of SSS is a subsequence si1s_{i1}si1,si2s_{i2}si2,.........,siks_{ik}sik, with i1<i2 ... <iki_{1}<i_{2}\ ...\ <i_{k}i1<i2 ... <ik, such that, for all 1≤j<k1 \leq j<k1≤j<k, we have sij<sij+1s_{ij}<s_{ij+1}sij<sij+1.
A heaviest non-decreasing subsequence of SSS is a non-decreasing subsequence with the maximum sum of weights.
Write a program that reads a sequence of integers, and outputs the weight of its
heaviest non-decreasing subsequence. For example, given the following sequence:
808080757575737373939393737373737373101011010110101979797−1-1−1−1-1−1114114114−1-1−1101131011310113118118118
The heaviest non-decreasing subsequence of the sequence is <73,73,73,101,113,118><73, 73, 73, 101, 113, 118><73,73,73,101,113,118> with the total weight being 1+1+1+5+5+1=141+1+1+5+5+1 = 141+1+1+5+5+1=14. Therefore, your program should output 141414 in this example.
We guarantee that the length of the sequence does not exceed 2∗1052*10^{5}2∗105
Input Format
A list of integers separated by blanks:s1s_{1}s1,s2s_{2}s2,.........,sns_{n}sn
Output Format
A positive integer that is the weight of the heaviest non-decreasing subsequence.
样例输入
80 75 73 93 73 73 10101 97 -1 -1 114 -1 10113 118
样例输出
14
/*题意:给你一个数列,当该数数值<0时该数无价值,当该数数值>=10000时 该数值-=10000,其价值为5,其余情况价值为1问价值和最大的非降子序列是多少题解:价值可以转换为长度>=10000的数,就在数组中存5次<0的数因为没价值,并且求得是子序列不是子串,不影响最后序列的选取,所以根本不用存最后求得的长度即为答案*/#include <bits/stdc++.h>#include <cstdio>using namespace std;int a[1000010];int f[1000010];int d[1000010];int _bsearch(const int *f, int len, const int &a){ int l = 0, r = len - 1; while(l <= r) { int mid = (l + r) / 2; if(a >= f[mid - 1] && a < f[mid]) return mid; else if(a < f[mid]) r = mid - 1; else l = mid + 1; }}int LIS(const int *a, const int &n){ int i,j,len = 1; f[0] = a[0]; d[0] = 1; for(i = 1; i < n; i++) { if(a[i] < f[0]) j = 0; else if(a[i] >= f[len - 1]) j = len++; else j = _bsearch(f, len, a[i]); f[j] = a[i]; d[i] = j + 1; } return len;}int main(){ int temp; int len = 0; while(cin>>temp) { if(temp > 0 && temp < 10000) { a[len++] = temp; } else if(temp >= 10000) { for(int i = 0; i < 5; i++) a[len++] = temp - 10000; } } int ans = LIS(a,len); cout<<ans<<endl; return 0;}
- L. The Heaviest Non-decreasing Subsequence Problem -最长不降子序列变形nlogn-2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem(最长不下降子序列变形)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L.The Heaviest Non-decreasing Subsequence Problem 权值最大的最长带权非递减子序列
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem(最长非减子序列+思路)
- The Heaviest Non-decreasing Subsequence Problem 最长非递减子序列 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem (LIS)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛-L. The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:L. The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L. The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 L.The Heaviest Non-decreasing Subsequence Problem
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem 最长不下降序列
- The Heaviest Non-decreasing Subsequence Problem 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 常见问题
- 计蒜客 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 The Heaviest Non-decreasing Subsequence Problem
- 有了进程还引入线程的本质原因
- bzoj 5048: 塌陷的牧场
- Vagrant入门系列(1)
- 我的订单(分页查询所有) 查询单个订单 权限过滤器 在线支付接口跳转 支付结果处理 网上商城(四)
- 一个字符串的最大回文前缀长度(搜狗2017秋招真题)
- L. The Heaviest Non-decreasing Subsequence Problem -最长不降子序列变形nlogn-2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- LeetCode 0682
- CodeForces
- Merge Two Sorted Lists
- PopupWindow半透明背影
- 观察者模式
- 游戏中纹理压缩格式之自动压缩纹理
- Hbase写数据,存数据,读数据的详细过程
- Queue