uva 1443 dp+二分
来源:互联网 发布:gps nema数据 编辑:程序博客网 时间:2024/06/15 19:36
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 4E5 + 10;const int INF = 0x3f3f3f3f;int init[maxn], sum[maxn], dp[maxn][2], n, m, d, T;bool check(int x){memset(dp, INF, sizeof(dp));dp[0][0] = 0;for (int i = 2; i <= n; i += 2)for (int len = 1; len <= d && len * 2 <= i && x >= sum[i] - sum[i - len]; len++)if (x >= sum[i - len] - sum[i - 2 * len]){dp[i][0] = min(dp[i][0], dp[i - 2 * len][1] + 1);dp[i][1] = min(dp[i][1], dp[i - 2 * len][0] + 1);}return dp[n][!(m & 1)] <= m - 1;}int main(int argc, char const *argv[]){scanf("%d", &T);while (T--){scanf("%d%d%d", &n, &m, &d);sum[0] = 0;for (int i = 1; i <= n; i++)scanf("%d", init + i), sum[i] = sum[i - 1] + init[i];if ((n & 1) || (n < 2 * (m - 1)) || n > 2 * (m - 1)*d) printf("BAD\n");else{int L = 1, R = sum[n], mid;while (L < R){mid = (L + R) / 2;if (check(mid)) R = mid;else L = mid + 1;}printf("%d\n", L);}}return 0;}
N个数,分成m-1段,每段长度不超过2*d,求所有半段中,最大重量的最小值。
最大重量最小值,典型二分题,根据最小值x进行dp,最大不超过x进行分段,dp[i][2]表示前i个符合要求的最小段数,小于m-1则可以。
奇偶分开便于dp
0 0
- uva 1443 dp+二分
- Garlands - UVa 1443 二分+dp
- UVA - 1443 Garlands (二分+DP)
- uva 1371 dp+二分
- uva 1371 - Period(二分+dp)
- UVA - 10534 Wavio Sequence LIS 二分+DP
- UVA 10534--Wavio Sequence+二分+DP
- UVA 10534 Wavio Sequence DP(LIS+二分)
- uva 10029 - Edit Step Ladders(dp + 二分)
- UVa 10534 Wavio Sequence (最长递增子序列 DP 二分)
- UVa 10534 Wavio Sequence ( DP 二分 最长递增子序列 )
- UVA 10163 Storage Keepers (01背包DP + 二分)
- UVa 11920 - 0 s, 1 s and ? Marks (二分 + DP)
- dp+二分(uva-10029Edit Step Ladders)
- Uva 1627 Team them up!(dp+二分图染色)
- UVa 10534 - Wavio Sequence DP+最长上升子序列(严格上升)+二分查找(nlogn)
- (DP6.1.4.3)UVA 10534Wavio Sequence(利用二分查找来富足DP)
- uva live 6190 Beautiful Spacing (二分+dp检验 根据特有性质优化)
- React Native之AppRegistry模块
- Light OJ-----1045对数运算
- 自定义控件--头部视差
- 暑假小训练 (一道 不能不会的用结构体搜索题)
- Deep Convolutional Network Cascade for Facial Point Detection阅读笔记
- uva 1443 dp+二分
- C++封装、继承、多态(虚函数、虚指针、虚表)
- PHP学习笔记-文件操作1
- C++指针
- Python基础篇—Pandas应用(一)
- cocos2dx win平台集成使用protobuf
- iOS多线程编程(三)------ NSOperation
- MFC学习笔记之-对话框
- LIGHTOJ 1045 - Digits of Factorial 【阶乘取对数】