题意:给定n个值,然后把这n个值分为m-1段,每段的一半长度不超过k,求分得的的段中,最大的半段的最小值。

思路:二分+dp,dp(i,0)表示前i个不超过x的最小段数,该数据不超过m-1就表示可行,01表示奇数和偶数便于转移。

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=0x3fffffff;
const int inf=-INF;
const int N=1000000;
const int M=40005;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define cpy(x,a) memcpy(x,a,sizeof(a))
#define ft(i,s,n) for (int i=s;i<=n;i++)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lrt  rt<<1
#define rrt  rt<<1|1
#define middle int m=(r+l)>>1
#define lowbit(x) (x&-x)
#define pii pair<int,int>
#define mk make_pair
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);int T,n,m,k;
int v[M],s[M];
int dp[M][2];int ok(int x){dp[0][0]=0;dp[0][1]=INF;for (int i=2;i<=n;i+=2){dp[i][0]=dp[i][1]=INF;for (int j=1;j<=k&&i-2*j>=0;j++){if (s[i]-s[i-j]>x) break;if (s[i-j]-s[i-2*j]<=x){dp[i][0]=min(dp[i][0],dp[i-2*j][1]+1);dp[i][1]=min(dp[i][1],dp[i-2*j][0]+1);}}}if (dp[n][(m-1)%2]>m-1) return 0;return 1;
}
int main()
{scanf("%d",&T);while (T--){scanf("%d %d %d",&n,&m,&k);s[0]=0;ft(i,1,n){scanf("%d",v+i);s[i]=s[i-1]+v[i];}if ((n&1)||n<2*(m-1)||n>k*2*(m-1)) puts("BAD");else{int l=1,r=s[n];while (l<r){int mid=(r+l)>>1;if (ok(mid)) r=mid;else l=mid+1;}printf("%d\n",l);}}
}

uva 1433——Garlands相关推荐

  1. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  2. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  3. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  5. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

  6. UVa 11174 - Stand in a Line

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  7. UVa 10112 - Myacm Triangles

    UVa第一卷最后一题. 求内部不含点并且面积最大的三角形. 暴力. 代码如下: 1 #include<iostream> 2 #include<cstdio> 3 #inclu ...

  8. MSSQL2005外网IP的1433端口开启方法

    打开SQL Server Configuration Manager,在SQL server配置管理器展开SQL server 2005网络配置-->SQLEXPRESS 的协议-->双击 ...

  9. UVa 10180 - Rope Crisis in Ropeland!

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=41&pa ...

最新文章

  1. jdk动态代理实例和cglib动态代理实例_CGLib 动态代理 原理解析
  2. 思科、华为、Juniper命令对比
  3. roboware studio_关于安装Roboware的教程
  4. 递归算法——汉诺塔问题
  5. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
  6. mysql数据库varchar_MySQL数据库char与varchar的区别分析及使用建议
  7. Python自动对Word文件中Python程序进行着色
  8. destoon 自定义session丢失
  9. Python入门--特殊方法
  10. python程序设计从基础到开发课后题答案夏敏捷_Python程序设计——从基础到开发(21世纪高等学校计算机应用技术规划教材)...
  11. mysql修复表命令_mysql命令修复数据库表
  12. mac Python安装pybloomfilter 出现找不到libcrypto的问题
  13. HTML-W3school首页制作
  14. excel添加水印及设置打印参数poi
  15. 用户登录和权限认证之 —— JWT
  16. 西瓜书学习笔记(2)——模型评估与选择
  17. CSS——微信朋友圈图片样式实现方法
  18. 2小时开发《点球射门游戏》,动画演示思路(上),代码已开源
  19. MySQL数据导入1026报错问题
  20. 关闭安卓手机的按键背景灯

热门文章

  1. 《美团机器学习实践》高清PDF+思维导图+美团算法团队
  2. EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务
  3. Adroid学习之 从源码角度分析-禁止使用回退按钮方案
  4. [蓝桥杯历届试题] 欧拉与鸡蛋
  5. Java中的异常栈轨迹和异常链
  6. 用javascript读取xml,并进行修改xml数据,解决保存没有权限问题
  7. git仓库的推送问题
  8. 计算机硬件系统一直延用,会计从业资格证考试:会计电算化计算机硬件系统
  9. windows无法连接到某个wifi_windows无法连接到无线网络怎么办【解决方法】
  10. 信息隐藏将txt文件合并到jpg文件中_使用Kali Linux在图像内隐藏机密消息—可在任何Linux发行版使用