bzoj 1563
对于很多决策单调性DP问题,我们很难(但不是不可以)证明其决策满足单调性,所以感觉很像时,可以打表看是否满足。
这道题的精度(?范围)很难搞,开始生怕溢出,看了hzwer的代码,才发现用long double,因为这道题只有乘法,没有除法,并且long double的保存系数的那部分还是挺大的(好像有效位数是64位)。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)<0?-(a):(a))
#define mdp 1000000000000000000LL
#define N 100010 typedef long double ddt; struct Trid {
int p, l, r;
Trid(){}
Trid( int p, int l, int r ):p(p),l(l),r(r){}
}; int n, len, pw;
int w[N], sw[N], f[N];
ddt dp[N];
Trid stk[N]; int top; ddt pow( int a, int b ) {
ddt rt = ;
for( int i=; i<=b; i++ )
rt *= a;
return rt;
}
ddt getw( int j, int i ) {
return pow(abs(sw[i]-sw[j-]+i-j-len), pw);
}
ddt calc( int j, int i ) {
ddt rt = dp[j-]+getw(j,i);
if( rt< ) {
fprintf( stderr, "Overflow\n" );
exit();
}
return rt;
}
ddt dodp() {
stk[top=] = Trid( , , n );
dp[] = calc(,);
for( int i=; i<=n; i++ ) {
if( calc(stk[top].p,n)>calc(i,n) ) {
while( stk[top].l>=i && calc(stk[top].p,stk[top].l)>calc(i,stk[top].l) )
top--;
if( stk[top].r==i- ) {
stk[++top] = Trid( i, i, n );
} else {
int lf=max(stk[top].l+,i);
int rg=min(stk[top].r+,n);
while(lf<rg) {
int mid=(lf+rg)>>;
if( calc(stk[top].p,mid)>calc(i,mid) )
rg = mid;
else
lf = mid+;
}
stk[top].r = lf-;
stk[++top] = Trid( i, lf, n );
}
}
int lf=, rg=top;
while(lf<rg) {
int mid=(lf+rg+)>>;
if( stk[mid].l>i ) rg=mid-;
else lf=mid;
}
dp[i] = calc(stk[lf].p,i);
}
return dp[n];
}
int main() {
int T;
scanf( "%d", &T );
while( T-- ) {
scanf( "%d%d%d", &n, &len, &pw );
for( int i=; i<=n; i++ ) {
char buf[];
scanf( "%s", buf );
w[i] = strlen(buf);
sw[i] = sw[i-]+w[i];
}
ddt ans=dodp();
if( ans>mdp )
printf( "Too hard to arrange\n" );
else
printf( "%lld\n", (long long)ans );
printf( "--------------------\n" );
}
}
bzoj 1563的更多相关文章
- [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)
[BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...
- BZOJ 1563 诗人小G
Description Input Output 对于每组数据,若最小的不协调度不超过\(10^{18}\),则第一行一个数表示不协调度若最小的不协调度超过\(10^{18}\),则输出"\ ...
- 【BZOJ 1563】 (四边形优化、决策单调性)
1563: [NOI2009]诗人小G Time Limit: 100 Sec Memory Limit: 64 MBSubmit: 2611 Solved: 840 Description In ...
- 【BZOJ 1563】 [NOI2009]诗人小G
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...
- [BZOJ] 1563: [NOI2009]诗人小G
1D/1D的方程,代价函数是一个p次函数,典型的决策单调性 用单调队列(其实算单调栈)维护决策点,优化转移 复杂度\(O(nlogn)\) #include<iostream> #incl ...
- BZOJ刷题指南(转)
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
随机推荐
- 为什么使用do{}while(0)来进行宏定义
最近发现很多代码在进行宏定义的时候使用喜欢使用 #define MACRO_NAME(para) do{macro content}while(0) 的格式,总结了以下几个原因: 1,空的宏定义避 ...
- 建立ARM交叉编译环境 (arm-none-linux-gnueabi-gcc with EABI)【转】
转自:http://lib.csdn.net/article/embeddeddevelopment/60172?knId=886 建立ARM交叉编译环境 (arm-none-linux-gnueab ...
- EPC摘抄
S6a MME – HSS 完成用户位置信息的交换和用户签约信息的管理,传送控制面信息 Diameter MME:主要负责信令处理及移动性管理,功能包括:NAS信令及其安全:跟踪区域(Tracking ...
- 原生js封装dom操作库
var utils = (function(window) { var flag = "getComputedStyle" in window; function win(attr ...
- Java 泛型和类型安全的容器
使用java SE5之前的容器的一个主要问题就是编译器允许你向容器插入不正确的类型,例如: //: holding/ApplesAndOrangesWithoutGenerics.java // Si ...
- Spring cloud Feign 调用端不生效
如果提供方的接口经过测试是没问题的话. 消费方启动类加上@EnableFeignClients 注意定义的接口如果不和启动类在同一个包路径下,需要加basePackages 即:@EnableFeig ...
- 以太坊go-ethereum常见问题汇总
(1)什么是 Ethereum? 以太坊是一个分散的智能合同平台,由Ether的加密货币提供支持. (2) 听说过以太坊,但什么是Geth,Mist,Ethminer,Mix? Geth: 以太坊节点 ...
- python 删除前3天的文件
一.需求分析 1. 删除前3天的文件 2.如果目录为空,也一并删除掉 如果使用shell脚本,一条命令就搞定了.干啥还要用python? 1. 因为需要记录一些日志,使用shell不好实现 2. 作为 ...
- Linux 系统目录结构和常用指令
一.系统目录结构 /bin 经常使用的命令 /etc 所有系统管理所需的配置文件和子目录 /home 用户主目录 /usr 应用程序目录 /usr/bin 系统用户使用的应用程序 /usr/sbin ...
- Jquery Datatable添加复选框,实现批量操作。
最近一段时间,一直在写前端的东西,自己也不擅长,最近也有所长进,把工作中用到的一些前端知识整理一下,下次用到就不用再找了.这次主要是在datatable中添加复选框,然后实现批量操作的功能.因为是公司 ...