【BZOJ1563】诗人小G(决策单调性DP)
题意:给定N,L,P,求f[N]
sum[i]递增,L<=3e6,P<=10
思路:四边形不等式的证明见https://www.byvoid.com/zhs/blog/noi-2009-poet
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned int uint;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef pair<int,int> PII;
- typedef pair<ll,ll> Pll;
- typedef vector<int> VI;
- typedef vector<PII> VII;
- //typedef pair<ll,ll>P;
- #define N 300010
- #define M 200010
- #define INF 1e18
- #define fi first
- #define se second
- #define MP make_pair
- #define pb push_back
- #define pi acos(-1)
- #define mem(a,b) memset(a,b,sizeof(a))
- #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
- #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
- #define lowbit(x) x&(-x)
- #define Rand (rand()*(1<<16)+rand())
- #define id(x) ((x)<=B?(x):m-n/(x)+1)
- #define ls p<<1
- #define rs p<<1|1
- const //ll MOD=1e9+7,inv2=(MOD+1)/2;
- double eps=1e-;
- //int INF=1e9;
- int dx[]={-,,,};
- int dy[]={,,-,};
- struct node
- {
- int l,r,id;
- }q[N];
- int n,L,P;
- ld dp[N],s[N];
- char ch[];
- int read()
- {
- int v=,f=;
- char c=getchar();
- while(c<||<c) {if(c=='-') f=-; c=getchar();}
- while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
- return v*f;
- }
- ld pw(ld x)
- {
- if(x<) x=-x;
- ld ans=;
- rep(i,,P) ans*=x;
- return ans;
- }
- ld calc(int j,int i)
- {
- return dp[j]+pw(s[i]-s[j]-L+i-j-);
- }
- void solve()
- {
- n=read(),L=read(),P=read();
- s[]=;
- rep(i,,n)
- {
- scanf("%s",ch+);
- int x=strlen(ch+);
- s[i]=s[i-]+x;
- }
- int h=,t=,l,r,last;
- q[]={,n,};
- rep(i,,n)
- {
- while(i>q[h].r) h++;
- dp[i]=calc(q[h].id,i);
- if(calc(i,n)>calc(q[t].id,n)) continue;
- while(i<q[t].l&&calc(i,q[t].l)<calc(q[t].id,q[t].l)) t--;
- l=max(q[t].l,i+);
- r=q[t].r;
- last=min(n,q[t].r+);
- while(l<=r)
- {
- int mid=(l+r)>>;
- if(calc(i,mid)<calc(q[t].id,mid)){last=mid; r=mid-;}
- else l=mid+;
- }
- q[t].r=last-;
- q[++t]={last,n,i};
- }
- if(dp[n]>INF) printf("Too hard to arrange\n");
- else printf("%lld\n",(ll)dp[n]);
- printf("--------------------\n");
- }
- int main()
- {
- int cas=read();
- while(cas--) solve();
- return ;
- }
【BZOJ1563】诗人小G(决策单调性DP)的更多相关文章
- BZOJ1563:[NOI2009]诗人小G(决策单调性DP)
Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arr ...
- [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)
[BZOJ 1563] [NOI 2009] 诗人小G(决策单调性) 题面 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中,注意一行中可以放的句子数目是没有限制的.小 G ...
- bzoj1563: [NOI2009]诗人小G 决策单调性(1D1D)
目录 题目链接 题解 代码 题目链接 bzoj1563: [NOI2009]诗人小G 题解 \(n^2\) 的dp长这样 \(f_i = min(f_j + (sum_i - sum_j - 1 - ...
- BZOJ1563: [NOI2009]诗人小G(决策单调性 前缀和 dp)
题意 题目链接 Sol 很显然的一个dp方程 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 其中\(sum_i = \sum_{j = 1}^i len ...
- [NOI2009]诗人小G 决策单调性优化DP
第一次写这种二分来优化决策单调性的问题.... 调了好久,,,各种细节问题 显然有DP方程: $f[i]=min(f[j] + qpow(abs(sum[i] - sum[j] - L - 1))); ...
- P1912 [NOI2009]诗人小G[决策单调性优化]
地址 n个数划分若干段,给定$L$,$p$,每段代价为$|sum_i-sum_j-1-L|^p$,求总代价最小. 正常的dp决策单调性优化题目.不知道为什么luogu给了个黑题难度.$f[i]$表示最 ...
- [BZOJ1563][NOI2009]诗人小G(决策单调性优化DP)
模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #include<cstdio> #incl ...
- BZOJ_1563_[NOI2009]诗人小G_决策单调性
BZOJ_1563_[NOI2009]诗人小G_决策单调性 Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超 ...
- [bzoj1563][诗人小g]
bzoj1563 思路 首先考虑\(n^2\)的暴力dp,用sum[i]表示前i句话的长度总和.f[i]表示前i句话最小的不协调度之和.转移的时候考虑枚举前面的每个点,找到转移的最优秀的那个点. 然后 ...
- [NOI2009]诗人小G 四边形优化DP
题目传送门 f[i] = min(f[j] + val(i,j); 其中val(i,j) 满足 四边形dp策略. 代码: #include<bits/stdc++.h> using nam ...
随机推荐
- Neither abstinence nor excess ever renders man happy
inch.n. 英寸 courageous.adj.勇敢的 porcelain.n.瓷器 adj.脆的 inventor. n. 发明者 trivial.adj. 不重要的 grove.n.小树林,果 ...
- 2.nginx配置详细说明
Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...
- Chapter02 第四节 函数
2.4 函数 2.4.1 有返回值的函数 函数定义.函数原型.函数调用 函数定义即定义一个函数:形如 :double sqrt(double x){····} 函数调用即调用这个函数,形如 :doub ...
- 【Linux开发】V4L2驱动框架分析学习
Author:CJOK Contact:cjok.liao#gmail.com SinaWeibo:@廖野cjok 1.概述 Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上 ...
- C语言第八周编程作业
这个作业属于哪个课程 C语言程序设计 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/hom ...
- Springboot2.x集成单节点Redis
Springboot2.x集成单节点Redis 说明 在Springboot 1.x版本中,默认使用Jedis客户端来操作Redis,而在Springboot 2.x 版本中,默认使用Lettuce客 ...
- 前端导出excel文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- qt 部分控件 setStyleSheet 使用总结
刚用Qt不久,但是已经感受到Qt ui设计的便捷. 总结一下最近使用的控件,把它们setStyleSheet的使用方法记录下来. 主要使用到的工具有:QToolBar,QToolBox,QPushBu ...
- Diango路由映射FBV和CBV
django中请求处理方式有2种:FBV(function base views) 和 CBV(class base views),换言之就是一种用函数处理请求,一种用类处理请求. FBV # url ...
- vscode配置golang
https://www.cnblogs.com/Leo_wl/p/8242628.html https://www.cnblogs.com/angelyan/p/10400789.html 主要看了这 ...