codeforces 569B - Inventory
2015-08-11 10:30
393 查看
题目链接:Click here
题意:给你t个数,合法的数为只出现在1~t之间,没有重复出现的数。要求你将不合法的数该为合法的数。
思路:将给的数中出现的数标记起来,重复或出界的数存到另一个数组中,在从1~t循环查找未标记的数,将不合法的数改为该数。
题意:给你t个数,合法的数为只出现在1~t之间,没有重复出现的数。要求你将不合法的数该为合法的数。
思路:将给的数中出现的数标记起来,重复或出界的数存到另一个数组中,在从1~t循环查找未标记的数,将不合法的数改为该数。
#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <cstdlib> using namespace std; int a[100005]; int b[100005]; int f[100005]; int main() { int t, x; while(scanf("%d", &t)!= EOF) { x = 1; memset(f, 0, sizeof(f)); for(int i = 1; i <= t; i++) { scanf("%d", &a[i]); if(f[a[i]] == 0 && a[i] <= t) f[a[i]] = 1; else { b[x] = i; x++; } } x--; for(int i = t; i > 0; i--) { if(f[i] == 0) { a[b[x]] = i; x--; } } for(int i = 1; i < t; i++) printf("%d ", a[i]); printf("%d\n", a[t]); } return 0; }
相关文章推荐
- String与StringBuffer的区别
- 构造函数delete和default关键字分析
- css font的简写规则
- 察看当前数据库被锁的对象
- 语义分析的一些方法(三)
- HDU 畅通工程 1863
- 日经社説 20150811 粘り強く「イスラム国」掃討を
- ZOJ 题目3870 Team Formation(数学,位运算)
- UVA 531 Compromise
- web.xml配置session过期时间
- 20-03-其他对象API(Math类)
- 20-04-其他对象API(Date类)
- javascript实现倒计时-------Day28
- 输入框回车事件
- WPF Layout 系统概述——Measure
- vmware workstation
- 黑马程序员--java技术blog---第一篇:其他对象
- lamp(一)
- 关于如何在Windows上生成dll库
- CodeForces 569B Inventory 货物编号