Codeforces 569B Inventory
来源:互联网 发布:高洛峰 php教程 编辑:程序博客网 时间:2024/05/17 21:48
Inventory
题目链接:
http://codeforces.com/contest/569/problem/B
解题思路:
Let's look at the problem from another side: how many numbers can we leave unchanged to get permutation? It is obvious: these numbers must be from 1 to n and they are must be pairwise distinct. This condition is necessary and sufficient.
This problem can be solved with greedy algorithm. If me meet the number we have never met before and this number is between 1 and n, we will leave this number unchanged. To implement this we can use array where we will mark used numbers.
After that we will look over the array again and allocate numbers that weren't used.
Complexity — O(n).
AC代码:
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;int n;int a[100005];int vis[100005];int main(){ while(~scanf("%d",&n)){ memset(vis,0,sizeof(vis)); queue<int> q; for(int i = 1; i <= n; i++){ scanf("%d",&a[i]); if(!vis[a[i]] && a[i] <= n) vis[a[i]] = 1; else q.push(i); } int tmp; for(int i = 1; i <= n; i++){ if(!vis[i]){ tmp = q.front(); q.pop(); a[tmp] = i; } } for(int i = 1; i < n; i++) printf("%d ",a[i]); printf("%d\n",a[n]); } return 0;}
0 0
- Codeforces 569B Inventory
- codeforces 569B - Inventory
- Codeforces 569 B. Inventory
- Codeforces 569 B. Inventory
- 【40.17%】【codeforces 569B】Inventory
- CodeForces 569B Inventory 货物编号
- Codeforces Round #315 (Div. 2)569B Inventory(队列)
- coderforce 569B Inventory
- B. Inventory-Codeforces Round #315 (Div. 2)
- Codeforces Round #315 (Div. 2) B. Inventory
- Codeforces Round #315 (Div. 2) B. Inventory
- Codeforces Round #315 (Div. 2)-B. Inventory
- B. Inventory
- Codeforces Round #315 div2 B-Inventory 标记,水题
- Codeforces Round #315 (Div. 2) B. Inventory (STL)
- Codeforces Round #315 (Div. 2) B. Inventory (水题)
- B. Inventory(Codeforces Round #315 (Div. 2)水题)
- inventory
- A1029. Median (25)
- Spring MVC 中 HandlerInterceptorAdapter的使用
- ecshop的订单状态都是在ecs_order_info表中的字段里
- mov eax, dword ptr [esi]指令区别
- Android UI 主线程,啥玩意?还有Handler+Looper+MessageQueue几个意思?
- Codeforces 569B Inventory
- 第23章:GridView的用法
- 计蒜客 难题题库 220 线段的总长
- ios 单例模式的写法
- C语言 指针的新理解
- 15-StringBuffer-10-常用对象API(StringBuffer类-插入&删除&查找&修改)
- [J2EE]命令行删除、安装tomcat服务器
- 计蒜客 难题题库 221 N的-2进制表示
- js判断上传文件大小 (尝试网上解决方案后结果....)