AtCoder Regular Contest 068-D
来源:互联网 发布:在线数据库设计工具 编辑:程序博客网 时间:2024/06/06 23:51
(http://www.elijahqi.win/2017/12/22/atcoder-regular-contest-068-d/)
D - Card Eater
Time limit : 2sec / Memory limit : 256MB
Score : 400 points
Problem Statement
Snuke has decided to play a game using cards. He has a deck consisting of N cards. On the i-th card from the top, an integer Ai is written.
He will perform the operation described below zero or more times, so that the values written on the remaining cards will be pairwise distinct. Find the maximum possible number of remaining cards. Here, N is odd, which guarantees that at least one card can be kept.
Operation: Take out three arbitrary cards from the deck. Among those three cards, eat two: one with the largest value, and another with the smallest value. Then, return the remaining one card to the deck.
Constraints
3≦N≦105N is odd.1≦Ai≦105Ai is an integer.
Input
The input is given from Standard Input in the following format:
N
A1 A2 A3 … AN
Output
Print the answer.
Sample Input 1
Copy
5
1 2 1 3 7
Sample Output 1
Copy
3
One optimal solution is to perform the operation once, taking out two cards with 1 and one card with 2. One card with 1 and another with 2 will be eaten, and the remaining card with 1 will be returned to deck. Then, the values written on the remaining cards in the deck will be pairwise distinct: 1, 3 and 7.
Sample Input 2
Copy
15
1 3 5 2 1 3 2 8 8 6 2 6 11 1 1
Sample Output 2
Copy
7
题目要求我们求一个 最多剩下多少 那么就是我统计一下 所有种类 比1多的有多少个 如果这个和是奇数那么答案就是种类数-1 否则答案就是种类数
#include<cstdio>#include<algorithm>using namespace std;inline char gc(){ static char now[1<<16],*S,*T; if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;} return *S++;}inline int read(){ int x=0;char ch=gc(); while(ch<'0'||ch>'9') ch=gc(); while(ch<='9'&&ch>='0') x=x*10+ch-'0',ch=gc(); return x;}int n,cnt[110000];int main(){ freopen("arc.in","r",stdin); n=read();int max1=0,x=0;for (int i=1;i<=n;++i) x=read(),max1=max(max1,x),cnt[x]++;int kind=0,sum=0; for (int i=1;i<=max1;++i) if (cnt[i]) sum+=cnt[i]-1,kind++; if (sum%2) kind--; printf("%d",kind); return 0;}
- AtCoder Regular Contest 068-D
- AtCoder Regular Contest 069 D
- AtCoder Regular Contest 073 D
- AtCoder Regular Contest 077-D
- AtCoder Regular Contest 078 D
- AtCoder Regular Contest 078 D
- AtCoder Regular Contest 078-D
- AtCoder Regular Contest 079-D
- AtCoder Regular Contest 079 D
- AtCoder Regular Contest 080-D
- AtCoder Regular Contest 081 D
- AtCoder Regular Contest 068
- atcoder AtCoder Regular Contest 084 D
- AtCoder Regular Contest 076 D Built?(kruskal)
- 【Atcoder】Regular Contest 079 D E
- AtCoder Regular Contest 079 C D E
- AtCoder Regular Contest 080 C , D
- atcoder regular contest D abs 思路
- Spring微服务视频免费发放
- Yii CDBCriteria常用方法
- 数学老师必看,教您快速画椭圆
- 高并发场景下缓存的常见问题
- CPU的虚拟化技术与优势
- AtCoder Regular Contest 068-D
- css3简单实现页面中出现雪花飘落效果
- pandas层次化索引
- 黎曼猜想的1/2和质子自旋的1/2会不会是一个数?
- 阿里云服务器的Samba配置
- 独行快、众行远,一场架构师的专场汇
- 最短路径:孙悟空找唐僧
- mysql file sort
- 设计模式六大原则(4):接口隔离原则