摘要: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1364【题意】:把n分为 均分为m 段 每段n/m个数字 每段可以选一个最大的数 求这些数相加起来>k 的最小的m一开始的 rmq+二分的想法是错误的 因为并不是分的越多的段数 得到的 结果就会越大例如 1 2 9 9 2 2 分成两份得到的结果比分成三段的更大 所以分成的段数与结果之间不存在单调性 不能用二分不能用二分只能 将段数由小到大枚举 但是这里有一个 技巧 可以很大的缩短时间:当分成i段得到的段长L1 与 之前分成 i-1段得到的段长相同 那就只要把前一次的结果再加上这一次 第i 阅读全文
posted @ 2014-03-09 20:48 galaxy77 阅读(261) 评论(0) 推荐(0) 编辑
摘要: (a - b) mod p = ((a mod p - b mod p) + p) mod p(a / b) mod p = ((a mod p) * (b^(-1) mod p)) mod p相对比较简易的小数取余方法:用被除数减去除数,然后用这个结果再减去除数,一直减,直到获得的结果小于除数,此时的结果即为取余后的结果public static void main(String args[]){double x = 64.5;double y = 6.0; System.out.println(x/y + " " + x%y);}显示:10.75,4.5分解下取余部分: 阅读全文
posted @ 2014-03-09 20:28 galaxy77 阅读(153) 评论(0) 推荐(0) 编辑