CodeForces 352C Jeff and Rounding】的更多相关文章

C. Jeff and Rounding time limit per test:  1 second memory limit per test: 256 megabytes input: standard input output: standard output Jeff got 2n real numbers a1, a2, ..., a2n as a birthday present. The boy hates non-integer numbers, so he decided t…
题意 有一个含有\(2n(n \leqslant2000)\)个实数的数列,取出\(n\)个向上取整,另\(n\)个向下取整.问取整后数列的和与原数列的和的差的绝对值. 就是说,令\(a\)为原数列,\(b\)为取整后数列,求 \[ min(abs(\sum_{i=1}^{2n}a-\sum_{i=1}^{2n}b)) \] 解题思路 刚开始大力猜了一波贪心结论,然后怒WA n发-- 我也不知道怎么会想到以下这个奇怪的结论的-- 如果我们设\(n\)个被向上取整的数的小数部分的和为\(a\)(其…
题目链接:http://codeforces.com/contest/351/problem/A 算法思路:2n个整数,一半向上取整,一半向下.我们设2n个整数的小数部分和为sum. ans = |A - B|; sum = A +(n-b)-B; 所以ans = |sum - (n-b) |; 只有b未知,只需要枚举一下b就得到答案. #include<cstdio> #include<iostream> #include<algorithm> #include<…
http://codeforces.com/problemset/problem/351/A 题意: 2*n个数,选n个数上取整,n个数下取整 最小化 abs(取整之后数的和-原来数的和) 先使所有的数都下取整,累积更改的sum 那么选1个小数上取整,就会使sum-1 整数上下取整不会产生影响 所以有1个整数就可以使上取整的小数少1个 所以ans=min(abs(i-sum)) i∈[n-整数个数,n] #include<cmath> #include<cstdio> #inclu…
C. Jeff and Rounding time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Jeff got 2n real numbers a1, a2, ..., a2n as a birthday present. The boy hates non-integer numbers, so he decided to sli…
给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 考虑小数点后面的数字,如果这些数都非零,则就是  abs(原数小数部分相加-1*n), 多一个0 则 min( abs(原数小数部分相加-1*n) ,abs(原数小数部分相加-1*(n-1)) )以此类推 #include<stdio.h> int abs(int a){ )return -a; else return a; } int Min(int a,int b){ if(a<b)ret…
题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]. Jeff和Furik轮流操作,Jeff先手. Jeff每次会交换a[i]>a[i+1]的两个数. Furik每次有1/2的概率交换a[i]<a[i+1]的两个数,有1/2的概率交换a[i]>a[i+1]的两个数. 当这个排列变成升序时,游戏停止. 问你操作数的期望. 题解: 假设原序列中有t个逆序对. 那么将这个序列变成升序,就是将这t个逆序对一…
题目链接:http://codeforces.com/problemset/problem/352/B 题目意思:给出一个长度为n的序列   a1, a2, ..., an(序号i,1 <= i <= n).需要从这个序列中,找出符合这两个条件的数:1.这个数在序列 a1, a2, ..., an 中: 2.该数的所有位置(也就是序号i)构成等差数列.一旦有一个位置不满足(此时和上一个位置所求出的公差就与之前的公差不相等),这个数就不符合条件,不应该输出.找完之后,输出所有满足这两个条件的数的…
题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这个序列尽可能地大,并且能被90除尽. 做这道题目,是多次调试本场比赛的B,完全不成功后回头再做的,一开始什么思路都没有,因为觉得是考纯数学,直接看B......怎么说,很大程度是靠直觉的.只知道,这个序列肯定是这种形式:5xx...0 或者像题目所说的特殊情况:0(不过前提是0的个数不为0).其他就…
http://codeforces.com/contest/352/problem/C 题意:给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 对每一个浮点数都取其下限,得到的差值就是所有浮点数小数部分的和:然后则需要从2*n个数里面选出n个数取其上限,即下限加1,而如果这个数是个整数,那么不需要加1:因此统计加1个数的上限和下限即可:然后选择min abs(小数部分的和-加1的个数): #include <cstdio> #include <…