普及练习场 交叉模拟 均分纸牌
2017-12-11 22:50
239 查看
题目链接
总之这题我完全是靠直觉写的题目并且过掉的
欢迎加入“不会算法一群菜鸟”,群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
题意理解
这个我想的话,是直接从左到右看,少了就从右边补,多了就往右边加。因为我觉得是可以调整操作顺序,使得牌数量不会不够减的。就是一个置换嘛,毕竟置换不改变最后的结果,但是可以改变中间的过程。至于为什么这个解是正确的,我只能说,我想到了这个算法之后交了一发,全过了。。。我其实不是很会证明这个正确性,但是可以简单说一下:1.证明步数最少。这个我想不出来。。。2.置换后一定可以保证每堆牌的数量是正数/零。这个我也想不出来。。。不过我YY了一下,如果有多的必定有少的,有多的就让多的多借几张出来。。。总之这题我完全是靠直觉写的题目并且过掉的
代码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[] a = new int[N + 1]; int sum = 0; for (int i = 1; i <= N; i++) { a[i] = scanner.nextInt(); sum += a[i]; } scanner.close(); int avg = sum / N; int cnt = 0; for (int i = 1; i <= N; i++) { if (a[i] < avg) { int delta = avg - a[i]; a[i] += delta; a[i + 1] -= delta; cnt++; } else if (a[i] > avg) { int delta = a[i] - avg; a[i] -= delta; a[i + 1] += delta; cnt++; } } System.out.println(cnt); } }
欢迎加入“不会算法一群菜鸟”,群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
相关文章推荐
- 普及练习场 交叉模拟 税收与补贴问题
- 普及练习场 交叉模拟 乒乓球
- 普及练习场 交叉模拟 花生采摘
- 交叉模拟——均分纸牌
- 普及练习场 交叉模拟 字符串的展开
- 普及练习场之交叉模拟
- 普及练习场 简单的模拟 多项式输出
- 【模拟】【NOIP2002】均分纸牌
- 普及练习场 简单的模拟 机器翻译
- codevs 1098 均分纸牌 模拟 解题报告
- 普及练习场 简单的模拟 排座椅
- 普及练习场之简单的模拟
- 普及练习场 简单的模拟 笨小猴
- [luogu]P1031均分纸牌-日常模拟题
- wikioi-天梯-普及一等-贪心-1098:均分纸牌
- 【模拟】【NOIP2002】均分纸牌
- 普及练习场 简单的模拟 铺地毯
- [模拟][NOIP2002] 均分纸牌
- 普及练习场 简单的模拟 进制转换
- noip2002 均分纸牌 (模拟)