BZOJ 3969 Low Power 解题报告
2015-04-14 09:20
183 查看
我们首先将所有电池排序,那么我们可以找到一组最优方案,使得一台机器的能量之差是相邻两电池的能量之差。
然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的。
假设这个数对是 i - 1, i,并且是第 j 个数对,那么我们称满足条件为:
2nk - i + 2 >= 2k(n - j + 1)
意思就是能拿出足够多的电池来组成机器人。
然后注意特判:如果不能选出足够多的数对就返回 false,我在这里 WA 到死。。。
毕竟 Gromah 太弱,只会做水题。
然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的。
假设这个数对是 i - 1, i,并且是第 j 个数对,那么我们称满足条件为:
2nk - i + 2 >= 2k(n - j + 1)
意思就是能拿出足够多的电池来组成机器人。
然后注意特判:如果不能选出足够多的数对就返回 false,我在这里 WA 到死。。。
毕竟 Gromah 太弱,只会做水题。
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define N 1000000 + 5 int n, k, size, Max, A ; inline int getint() { char ch = '\n'; for (; ch > '9' || ch < '0'; ch = getchar()) ; int res = ch - '0'; for (ch = getchar(); ch >= '0' && ch <= '9'; ch = getchar()) res = (res << 3) + (res << 1) + ch - '0'; return res; } inline bool Judge(int m) { int cnt = n; for (int i = 2; cnt && i <= size; i ++) if (A[i] - A[i - 1] <= m) { if (size - i + 2 < 2 * cnt * k) return 0; cnt --, i ++; } return !cnt; } int main() { #ifndef ONLINE_JUDGE freopen("3969.in", "r", stdin); freopen("3969.out", "w", stdout); #endif n = getint(), k = getint(); size = (n * k) << 1; for (int i = 1; i <= size; i ++) { A[i] = getint(); Max = max(Max, A[i]); } sort(A + 1, A + size + 1); int l = A[2] - A[1], r = Max; while (l < r) { int mid = (l + r) >> 1; if (Judge(mid)) r = mid; else l = mid + 1; } printf("%d\n", l); #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }
相关文章推荐
- bzoj 3969 LOW Power
- bzoj 3969: [WF2013]Low Power 二分
- [BZOJ3969]WF2013 Low Power|二分答案|贪心
- BZOJ_3969_[WF2013]Low Power_二分答案
- bzoj 3969 WF2013 Low Power [贪心] [二分答案]
- BZOJ4720 [Noip2016]换教室 解题报告【SPFA】【期望DP】
- [BZOJ1087][SCOI2005]互不侵犯King解题报告|状压DP
- BZOJ 1379 [Baltic 2001] 解题报告
- BZOJ 2038 莫队 解题报告
- BZOJ 1036 [ZJOI 2008] 树链剖分 解题报告
- BZOJ 4152 最短路(SPFA) 解题报告
- BZOJ 2429 最小生成树 解题报告
- BZOJ 1367 [Baltic2004]sequence 解题报告
- POJ - 2406 Power Strings解题报告(KMP,字符串划分成若干连续相同子串)
- bzoj 1566 NOI 2009 管道取珠 DP 解题报告
- BZOJ 2792 [POI 2012] 二分答案 解题报告
- BZOJ3503: [Cqoi2014]和谐矩阵 解题报告
- BZOJ 2048 数学(调和级数) 解题报告
- BZOJ4000: [TJOI2015]棋盘 解题报告
- BZOJ2453 维护队列 解题报告【数据结构】【分块】