对于很多决策单调性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的更多相关文章

  1. [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)

    [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...

  2. BZOJ 1563 诗人小G

    Description Input Output 对于每组数据,若最小的不协调度不超过\(10^{18}\),则第一行一个数表示不协调度若最小的不协调度超过\(10^{18}\),则输出"\ ...

  3. 【BZOJ 1563】 (四边形优化、决策单调性)

    1563: [NOI2009]诗人小G Time Limit: 100 Sec  Memory Limit: 64 MBSubmit: 2611  Solved: 840 Description In ...

  4. 【BZOJ 1563】 [NOI2009]诗人小G

    Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...

  5. [BZOJ] 1563: [NOI2009]诗人小G

    1D/1D的方程,代价函数是一个p次函数,典型的决策单调性 用单调队列(其实算单调栈)维护决策点,优化转移 复杂度\(O(nlogn)\) #include<iostream> #incl ...

  6. BZOJ刷题指南(转)

    基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...

  7. BZOJ 2127: happiness [最小割]

    2127: happiness Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1815  Solved: 878[Submit][Status][Di ...

  8. BZOJ 3275: Number

    3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 874  Solved: 371[Submit][Status][Discus ...

  9. BZOJ 2879: [Noi2012]美食节

    2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1834  Solved: 969[Submit][Status] ...

随机推荐

  1. Spiral Matrix I & II

    Spiral Matrix I Given an integer n, generate a square matrix filled with elements from 1 to n^2 in s ...

  2. git checkout 命令详解【转】

    转自:http://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html 在日常的git操作中,git checkout——检出,是 ...

  3. Linux禁止ping的俩种方法【转】

    Linux禁止ping以及开启ping的方法   Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任 ...

  4. openjudge-NOI 2.5-1789 算24

    题目链接:http://noi.openjudge.cn/ch0205/1789/ 题解: 并不是非常简单的搜索,需要考虑一些东西…… 首先有运算符优先级的限制,还有括号,数字的顺序也可以调整,如果只 ...

  5. python随笔(二)

    range(2,10):不包括10 range(2,10,3):步长为3 range(10,2,-1):从10到2,步长-1.

  6. Luogu P1535 【游荡的奶牛】

    搜索不知道为什么没有人写bfs觉得挺像是标准个bfs的 状态因为要统计次数,不能简单地跳过一个被经过的点这样的话,状态量会爆炸采用记忆化设dp[i][j][k]表示在第k分钟到达点(i,j)的方案数以 ...

  7. TIAGo ROS模拟教程2 - 自主机器人导航

    TIAGo ROS Simulation Tutorial 2 – Autonomous robot navigation TIAGo ROS模拟教程2 - 自主机器人导航 发表于 12月 23,20 ...

  8. 在windows中安装两个不同版本的Python

    这段时间买了一本 利用Python进行数据分析的书.书上要我将原来安装的Python的环境去掉,但是我觉得这样做不行,我以前写过的很多东西还在呢.遂在博客中找到了解决方法,记录之. 首先,我们安装了两 ...

  9. Python的简单语法(一)

    import sys a=3 b=4 c=5.66 d=8.0 e=complex(c,d) f=complex(float(a),float(b)) print("a is type:&q ...

  10. Mybatis入门及Dao开发方式

    本节内容: Mybatis介绍 使用jdbc编程问题总结 Mybatis架构 Mybatis入门程序 Dao的开发方式 SqlMapConfig.xml文件说明 一.Mybatis介绍 MyBatis ...