CodeForces 569B
2015-08-12 22:13
357 查看
题意:有n个物品需要标记,每个物品标号都不能相同,要从1开始,且保证充分利用之前的标记,输出最后每个物品的标记。
题解:先把标号小于等于n的物品已用标号拿走,然后把剩余可用标号赋值给重复标号的物品。
题解:先把标号小于等于n的物品已用标号拿走,然后把剩余可用标号赋值给重复标号的物品。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 100005; int n, a , vis , flag , num ; int main() { scanf("%d", &n); for (int i = 0; i <= n; i++) vis[i] = 0; int cnt = 0, cnt2 = 0; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); if (!vis[a[i]] && a[i] <= n && a[i]) vis[a[i]] = 1; else flag[cnt++] = i; } for (int i = 1; i <= n; i++) if (!vis[i]) num[cnt2++] = i; for (int i = 0; i < cnt; i++) a[flag[i]] = num[i]; printf("%d", a[0]); for (int i = 1; i < n; i++) printf(" %d", a[i]); printf("\n"); return 0; }
相关文章推荐
- Web前端面试中遇到的问题
- [Vijos]P1282 佳佳的魔法照片
- JavaScript 编程
- 【Hadoop系列第十章】(二)数据分析系统Pig
- Java 正则表达式
- 《笨方法学python》-2
- CSS 参考
- 多线程学习(二)
- hdu 3416 最短路+网络流(不重叠最短路径计数)
- [持续更新]JavaScript学习笔记(二)
- 黑马程序员----排序算法分析与总结
- NYOJ 458 小光棍数
- SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误
- 多线程
- Java IO
- Java:日期字符串格式大小比较
- 关于java.util.List.subList用法
- 非旋转Treap
- sprintf函数应用
- [Vijos]P1257 水王争霸