CodeForces 490E Restoring Increasing Sequence
来源:互联网 发布:golang java 性能对比 编辑:程序博客网 时间:2024/05/16 04:58
题意:
一个严格递增序列 某些数字的某些位被盖住了 求 恢复后的序列
思路:
贪心 让每个数在大于前一个的基础上尽量的小
先讨论数字长度
len[i]<len[i-1] 一定是NO
len[i]>len[i-1] 除了第一位如果是?就填1以外 其他?全填0
len[i]==len[i-1] dfs搜索num[i]格式下大于num[i-1]的最小的数
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<string>#include<algorithm>#include<map>#include<set>#include<vector>#include<queue>#include<cstdlib>#include<ctime>#include<cmath>using namespace std;typedef long long LL;#define N 100010int n, ans = 1;char a[N][10];int len[N];bool dfs(int i, int j, int big) { if (j == len[i]) { if (big) return true; return false; } if (a[i][j] != '?') { if (!big && a[i][j] < a[i - 1][j]) return false; return dfs(i, j + 1, big | (a[i][j] > a[i - 1][j])); } else { if (big) { a[i][j] = '0'; if (dfs(i, j + 1, 1)) return true; a[i][j] = '?'; return false; } else { for (char k = a[i - 1][j]; k <= '9'; k++) { a[i][j] = k; if (dfs(i, j + 1, k > a[i - 1][j])) return true; } a[i][j] = '?'; return false; } }}int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%s", a[i]); len[i] = strlen(a[i]); } for (int i = 1; i <= n; i++) { if (len[i] < len[i - 1]) { ans = 0; break; } else if (len[i] == len[i - 1]) { if (!dfs(i, 0, 0)) { ans = 0; break; } } else { if (a[i][0] == '?') a[i][0] = '1'; for (int j = 1; j < len[i]; j++) { if (a[i][j] == '?') a[i][j] = '0'; } } } if (ans) { puts("YES"); for (int i = 1; i <= n; i++) puts(a[i]); } else puts("NO"); return 0;}
0 0
- CodeForces 490E Restoring Increasing Sequence
- CodeForces 490E Restoring Increasing Sequence
- Codeforces 490E Restoring Increasing Sequence(贪心)
- Codeforces 490E. Restoring Increasing Sequence 二分
- CodeForces 490E Restoring Increasing Sequence(贪心)
- CodeForces 490E Restoring Increasing Sequence
- codeforces 490E Restoring Increasing Sequence(贪心)
- Codeforces 490E Restoring Increasing Sequence【二分+模拟】细节题
- Codeforces Round #279 (Div. 2) E. Restoring Increasing Sequence
- Codeforces Round #279 (Div. 2)E. Restoring Increasing Sequence
- Codeforces Round #279 (Div. 2) E. Restoring Increasing Sequence
- Codeforces Round #279 (Div. 2) E. Restoring Increasing Sequence 二分
- CodeForces - 11A Increasing Sequence
- codeforces 11A - Increasing Sequence
- CodeForces 11A - Increasing Sequence
- Codeforces Beta Round #11 A. Increasing Sequence
- Increasing Sequence
- Codeforces Beta Round #11 A. Increasing Sequence 贪心
- html固定浮动在底部div的实现效果
- 一张图帮你看懂 iPhone 6 Plus 的屏幕分辨率
- 第十三周上机项目一(5)数据大折腾
- Mantle with CoreData
- 第十三周项目五字符串操作(2)将str1和str2接起来存放到str3中
- CodeForces 490E Restoring Increasing Sequence
- 监听器
- 第13周项目4-数组的排序-(2)
- switch语句中的常量
- 中水处理设备:城市中水回用工艺及其途径详细说明
- Popupwindow的使用 -- 区别于Dialog, 显示位置可以自定义
- virtualbox中ubuntu和windows共享文件夹设置
- 习以为常
- 音视频文章参考