51nod 1294 :修改数组 && HDU 5256:序列变换
来源:互联网 发布:怎么找淘宝小二电话 编辑:程序博客网 时间:2024/05/29 15:53
1294 修改数组
题目来源: HackerRank
基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题
收藏
取消关注
给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数?
Input
第1行:一个数N表示序列的长度(1 <= N <= 100000)。第2 - N + 1行:每行1个数,对应数组元素。(0 <= A[i] <= 10^9)
Output
输出最少需要修改几个数使得整个数组是严格递增的。
Input示例
512234
Output示例
3
剩下的那些a[i]-i就是要找最长的非严格递增序列了。
代码:
#include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #pragma warning(disable:4996) using namespace std;int n;int val[100005];int f[100005];int soar[100005];int main(){//freopen("i.txt", "r", stdin);//freopen("o.txt", "w", stdout);int i, k, num, ans;scanf("%d", &n);num = 0;ans = 0;for (i = 0; i < n; i++){scanf("%d", &val[i]);val[i] = val[i] - (i + 1);if (val[i] < 0){ans++;}else{f[num++] = val[i];}}fill(soar,soar+num,-1);k = 0;for (i = 0; i < num; i++){if (f[i] >= soar[k]){soar[++k] = f[i];}else{int pos = upper_bound(soar, soar + k + 1, f[i]) - soar;soar[pos] = f[i];}}printf("%d\n", num - k + ans);//system("pause");return 0;}
序列变换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 952 Accepted Submission(s): 375
Problem Description
我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。
请输出最少需要修改多少个元素。
请输出最少需要修改多少个元素。
Input
第一行输入一个T(1≤T≤10) ,表示有多少组数据
每一组数据:
第一行输入一个N(1≤N≤105) ,表示数列的长度
第二行输入N个数A1,A2,...,An 。
每一个数列中的元素都是正整数而且不超过106 。
每一组数据:
第一行输入一个
第二行输入N个数
每一个数列中的元素都是正整数而且不超过
Output
对于每组数据,先输出一行
Case #i:
然后输出最少需要修改多少个元素。
Case #i:
然后输出最少需要修改多少个元素。
Sample Input
221 1032 5 4
Sample Output
Case #1:0Case #2:1
代码:
#include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #pragma warning(disable:4996) using namespace std;int n;int val[100005];int f[100005];int soar[100005];int main(){//freopen("i.txt", "r", stdin);//freopen("o.txt", "w", stdout);int i, k, num;int test, cas = 1;scanf("%d", &test);while (test--){scanf("%d", &n);num = 0;for (i = 0; i < n; i++){scanf("%d", &val[i]);val[i] = val[i] - (i + 1);f[num++] = val[i];}fill(soar, soar + num, -1000005);k = 0;for (i = 0; i < num; i++){if (f[i] >= soar[k]){soar[++k] = f[i];}else{int pos = upper_bound(soar, soar + k + 1, f[i]) - soar;soar[pos] = f[i];}}printf("Case #%d:\n", cas++);printf("%d\n", num - k);}//system("pause");return 0;}
0 0
- 51nod 1294 :修改数组 && HDU 5256:序列变换
- 51Nod-1675-序列变换
- 51nod 1675 序列变换
- 【51NOD 1675】序列变换
- 51nod 1294 修改数组
- 51Nod-1294-修改数组
- 【51Nod 1294】修改数组
- 【51 nod 1294】 修改数组
- [51nod 1294]修改数组
- Hdu 5256 序列变换
- hdu 5256 序列变换
- HDU 5256 序列变换
- HDU 5256 序列变换
- HDU 5256 序列变换
- HDU 5256 序列变换
- 51nod 1294 修改数组(dp,逆向思维,最大上升子序列)
- 51nod 1294 修改数组 dp
- 51NOD 1294 修改数组 【LIS】
- Android webView打不开一些网页的解决办法
- 9.Python标准库_当前进程信息 (os包)
- IOS-10-详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy,mutableCopy
- OC方面的基础笔记
- 解决在eclipse中无法查看引用jar包的源码
- 51nod 1294 :修改数组 && HDU 5256:序列变换
- Android -- Facebook -- HashKey的生成
- OC学习笔记——OC中的类
- 反射
- 大数据的生态圈 Hadoop,hive,spark
- 拉伸图片的指定区域
- MySQL学习笔记8:函数查询
- Python:类方法、静态方法、实例方法
- maven跳过插件