A- Bear and Five Cards(codeforces ROUND356 DIV2)
A. Bear and Five Cards
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
A little bear Limak plays a game. He has five cards. There is one number written on each card. Each number is a positive integer.
Limak can discard (throw out) some cards. His goal is to minimize the sum of numbers written on remaining (not discarded) cards.
He is allowed to at most once discard two or three cards with the same number. Of course, he won't discard cards if it's impossible to choose two or three cards with the same number.
Given five numbers written on cards, cay you find the minimum sum of numbers on remaining cards?
Input
The only line of the input contains five integers t1, t2, t3, t4 and t5 (1 ≤ ti ≤ 100) — numbers written on cards.
Output
Print the minimum possible sum of numbers written on remaining cards.
Examples
input
7 3 7 3 20
output
26
input
7 9 3 1 8
output
28
input
10 10 10 10 10
output
20
Note
In the first sample, Limak has cards with numbers 7, 3, 7, 3 and 20. Limak can do one of the following.
Do nothing and the sum would be 7 + 3 + 7 + 3 + 20 = 40.
Remove two cards with a number 7. The remaining sum would be 3 + 3 + 20 = 26.
Remove two cards with a number 3. The remaining sum would be 7 + 7 + 20 = 34.
You are asked to minimize the sum so the answer is 26.
In the second sample, it's impossible to find two or three cards with the same number. Hence, Limak does nothing and the sum is 7 + 9 + 1 + 3 + 8 = 28.
In the third sample, all cards have the same number. It's optimal to discard any three cards. The sum of two remaining numbers is 10 + 10 = 20.
___________________
题意: 给你5个数,只能删除其中2个或3个相同的数,输出最小的和 。
这道题其实只要统计(数字范围小于100,可桶排) 每个数字出现的次数,然后对出现二次以上的数字枚举减去他们的结果,然后输出最小的那个答案就可以了。
我蠢就蠢在 老是想暴力 枚举,并没有换一个思路换一个思想方面考虑问题,所以写的蠢了
我一开始只是排序后删除最大的2 或 3 个相同数字 ( 取决于最大的相同的有几个),当时知道有可能会出现删除2个最大的不如删除3个最小的情况,赌了一下数据会不会比较弱…… 事实证明CF的数据是很强力的。
下次不应该赌……
错误代码:
#include<algorithm> #include<iostream> using namespace std ; bool comp( int a , int b ) { return ( a>b) ; } int main() { int a[5]; for ( int i = 0 ; i < 5 ; i++) cin >> a[i]; sort(a,a+5,comp); for ( int i = 0 ; i < 5 ; i++) {int cnt = 0 ; int flag = 0 ; for( int j = i+ 1 ; j < 5 ; j++ ) {int temp = a[i] ; if( cnt == 2 )break ; if( a[i] == a[j] ) {a[i] = 0 ; cnt++; flag = 1 ; } if( temp == a[j] ) { a[j] = 0 ; cnt++ ; } } if ( flag == 1 ) break ; } cout << a[0]+a[1]+a[2]+a[3]+a[4] << endl ; }
AC代码:
#include<iostream> #include<cstring> using namespace std ; int main() { int a[5] , cnt[110] , s = 0 , ans ; memset(cnt,0,sizeof(cnt)); for( int i = 0 ; i < 5 ; i++) { cin >> a[i] ; cnt[a[i]]++; s+=a[i]; } ans = s ; for ( int i = 0 ; i < 5 ; i++ ) { int k ; if( cnt[a[i]] == 2 ) k = s - (a[i] << 1) ; else if( cnt[a[i]] > 2 ) k = s - a[i] * 3 ; if( k < ans ) ans = k ; } cout << ans << endl ; }
A- Bear and Five Cards(codeforces ROUND356 DIV2)的更多相关文章
- Codeforces Round #356 (Div. 2)A. Bear and Five Cards(简单模拟)
A. Bear and Five Cards time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Codeforces Round #356 (Div. 2) A. Bear and Five Cards 水题
A. Bear and Five Cards 题目连接: http://www.codeforces.com/contest/680/problem/A Description A little be ...
- Codeforces 731 F. Video Cards(前缀和)
Codeforces 731 F. Video Cards 题目大意:给一组数,从中选一个数作lead,要求其他所有数减少为其倍数,再求和.问所求和的最大值. 思路:统计每个数字出现的个数,再做前缀和 ...
- codeforces 680A A. Bear and Five Cards(水题)
题目链接: A. Bear and Five Cards //#include <bits/stdc++.h> #include <vector> #include <i ...
- 【BZOJ1004】Cards(组合数学,Burnside引理)
[BZOJ1004]Cards(组合数学,Burnside引理) 题面 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Su ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- (CodeForces - 5C)Longest Regular Bracket Sequence(dp+栈)(最长连续括号模板)
(CodeForces - 5C)Longest Regular Bracket Sequence time limit per test:2 seconds memory limit per tes ...
- 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)
题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...
- 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...
随机推荐
- bios中断向量表
- JVM方法调用栈
摘自深入分析java web技术内幕
- 一口一口吃掉Hexo(一)
如果你想得到更好的阅读效果,请访问我的个人网站 ,版权所有,未经许可不得转载! 这里是我的个人博客网站,点击这里你可以到我的首页瞧瞧.我之前使用的是第三方的博客平台--博客园,点击这里可以看到我的博客 ...
- Java排序方法sort的使用详解
对数组的排序: //对数组排序 public void arraySort(){ int[] arr = {1,4,6,333,8,2}; Arrays.sort(arr);//使用java.util ...
- ADO.NET初学习
①System.Data → DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint,DataColumnMapping,DataT ...
- mysql数据恢复问题
现象 mysql> drop database zabbix; Query OK, 104 rows affected (0.30 sec)mysql> exitBye[root@mysq ...
- YARN的capacity调度器主要配置分析
yarn中一个基本的调度单元是队列. yarn的内置调度器: 1.FIFO先进先出,一个的简单调度器,适合低负载集群.2.Capacity调度器,给不同队列(即用户或用户组)分配一个预期最小容量,在每 ...
- Python连接msyql、redis学习_Day12
一.数据库 关系型数据库(RDBMS): 1.数据以表格的形式出现2.每行为各种记录名称3.每列为记录名称所对应的数据域4.许多的行和列组成一张表单5.若干的表单组成database 1.MySQL基 ...
- 问题记录2:TypeError: write() argument must be str, not bytes
今天试了下用requests模块的get()方法来下载图片,写入文件的时候不能写入二进制,然后将打开方式改成二进制的就好了. 原因是,f.content的存储方式是二进制,而文件正常打开默认是字符串的 ...
- javascript入门基础知识
JavaScript介绍: 1. javascrip是互联网上最流行的脚本语言,可用于Web和HTML,更可广泛用于服务器.pc端.移动端. 2. javascript脚本语言: javascript ...