cf A. Jeff and Digits】的更多相关文章

http://codeforces.com/contest/352/problem/A #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; ]; int main() { ,t2=; scanf("%d",&n); ; i<=n; i++) { scanf("%d",&a[i]); ) t1…
A. Jeff and Digits time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff's got n cards, each card contains either digit 0, or digit 5. Jeff can choose several cards and put them in a line so…
Jeff's got n cards, each card contains either digit 0, or digit 5. Jeff can choose several cards and put them in a line so that he gets some number. What is the largest possible number divisible by 90 Jeff can make from the cards he's got? Jeff must…
更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description Jeff's got n cards, each card contains either digit 0, or digit 5. Jeff can choose several cards and put them in a line so that he gets some number. What is the largest possible number div…
题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这个序列尽可能地大,并且能被90除尽. 做这道题目,是多次调试本场比赛的B,完全不成功后回头再做的,一开始什么思路都没有,因为觉得是考纯数学,直接看B......怎么说,很大程度是靠直觉的.只知道,这个序列肯定是这种形式:5xx...0 或者像题目所说的特殊情况:0(不过前提是0的个数不为0).其他就…
因为数字只含有5或0,如果要被90整除的话必须含有0,否则输出-1 如果含有0的话,就只需考虑组合的数字之和是9的倍数,只需要看最大的5的个数能否被9整数 #include <iostream> #include <vector> using namespace std; int main(){ int n; cin >> n; , numOfFive = ,tmp; ; i < n; ++ i){ cin>>tmp; ( tmp == ) ? (++…
题意: 两人游戏, J先走. 给出一个1~n的排列, J选择一对相邻数[题意!!~囧], 交换. F接着走, 扔一硬币, 若正面朝上, 随机选择一对降序排列的相邻数, 交换. 若反面朝上, 随机选择一对升序排列的相邻数, 交换. 当数列成为严格升序的时候游戏结束. 求让游戏尽早结束的情况下, 移动次数的期望. 思路: 首先分析游戏结束的方法: 由于是排列, 严格升序就是1~n. J的话..直接按顺序将较小的数交换到目标位置即可. F的话...比较麻烦, 有两种可能, 每种可能都是随机的.....…
http://codeforces.com/contest/352/problem/C 题意:给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 对每一个浮点数都取其下限,得到的差值就是所有浮点数小数部分的和:然后则需要从2*n个数里面选出n个数取其上限,即下限加1,而如果这个数是个整数,那么不需要加1:因此统计加1个数的上限和下限即可:然后选择min abs(小数部分的和-加1的个数): #include <cstdio> #include <…
http://codeforces.com/contest/352/problem/B #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ]; int n; ]; int len; struct node { int x,id; bool operator <(const node &a)const { return (x<a.x)||(x==…
http://codeforces.com/problemset/problem/351/C 题意:有2*n个浮点数a1,a2,a3...a2*n,把他们分成n队,对于每对<A,B>,对A做floor() 操作,对B 做ceil()操作.生成b1...b2*n, 求|(b1+b2+...+b2*n)-(a1+a2+a3...+a2*n)|的最小值. 对于每个数ai,对他们做floor()的cost是up()=ai-floor(ai) ,做ceil()的cost是down()=ceil(ai)-…