【bzoj1563】 [NOI2009]诗人小G
来源:互联网 发布:网络黑色星期四 编辑:程序博客网 时间:2024/04/27 15:02
题目
n^2的转移方程很容易想到:
f[i]=min(f[j]+(sum[i]-sum[j]+i-j-1)^p)
因为sum单调递增,p>=2,很显然具有决策单调性,用单调栈维护每个决策点覆盖的区间,
更新时在单调栈里二分找到当前最优的决策点并覆盖到n的区间。
复杂度nlogn
代码:
#include<cstdio>#include<cstring>#include<algorithm> #define maxn 100010 using namespace std; inline int read(){ int ret=0;char ch=getchar(); while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') ret=ret*10+ch-'0',ch=getchar(); return ret;} long double f[maxn];int n,m,sum[maxn],p,l[maxn],r[maxn],q[maxn],tail,head;char s[50]; long double Qpow(long double x){ int y=p;long double ret=1; while(y){ if(y&1) ret=ret*x; x=x*x; y>>=1; } return ret;} long double cal(int x,int y){ return f[x]+Qpow(abs(sum[y]-sum[x]+y-x-1-m));} void update(int x){ while(l[tail]>x&&cal(x,l[tail])<cal(q[tail],l[tail])){ r[tail-1]=r[tail];tail--; } int L=l[tail],R=r[tail],pos=R+1; while(L<=R){ int mid=L+R>>1; if(cal(x,mid)<cal(q[tail],mid)){ pos=mid,R=mid-1; }else L=mid+1; } if(pos<=r[tail]){ r[tail+1]=r[tail],l[tail+1]=pos; q[tail+1]=x; r[tail]=pos-1,tail++; }} void dp(){ head=tail=1; l[1]=1,r[1]=n; for(int i=1;i<=n;i++){ while(r[head]<i&&head<=tail) head++; f[i]=cal(q[head],i); update(i); }} void init(){ n=read(),m=read(),p=read(); for(int i=1;i<=n;i++){ scanf("%s",s); sum[i]=sum[i-1]+strlen(s); } dp(); if(f[n]>1e18) puts("Too hard to arrange"); else printf("%lld\n",(long long)f[n]); puts("--------------------");} int main(){ int T=read(); while(T--){ init(); } return 0;}
2 0
- 【bzoj1563】 [NOI2009]诗人小G
- 【NOI2009】bzoj1563 诗人小G
- [BZOJ1563][NOI2009]诗人小G(dp+决策单调性)
- 【BZOJ1563】【NOI2009】诗人小G(dp+决策单调性)
- [BZOJ1563]诗人小G(1d1d动态规划)
- bzoj 1563: [NOI2009]诗人小G
- 【决策单调性的动态规划】noi2009诗人小G
- NOI2009诗人小G(P=2时做法)
- [NOI2009]诗人小G(决策单调性优化dp)
- BZOJ 1563 NOI2009 诗人小G 四边形不等式
- BZOJ 1563: [NOI2009]诗人小G 决策单调性DP
- ★【动态规划】【决策单调性优化】【NOI2009】诗人小G
- bzoj 1563 [NOI2009]诗人小G 四边形不等式 决策单调dp
- 决策单调性Ⅰ:四边形不等式(bzoj 1563: [NOI2009]诗人小G)
- 【DP】NOI 2009 诗人小G
- 一个诗人的一生——诗人小G的人生
- [BZOJ 1563][NOI 2009]诗人小G(四边形优化DP)
- noi2009
- Python 深,浅copy
- XGBoost Parameters in R package
- 我要你活着——《烈日灼心》观后感
- C++遍历文件夹
- xcode江湖录-第04章 风水宝地--界面生成器之StoryBoard简单示例 与 约束
- 【bzoj1563】 [NOI2009]诗人小G
- 访问控制符详解
- Perfect Squares
- Jboss rules规则引擎 Drools 6.4.0 Final 教程(3)
- AVL平衡树及插入操作的C语言实现
- iframe获取父页面的元素
- AsyncTask的使用
- 使用get指令将文件从HDFS复制到本地
- leetcode No14. Longest Common Prefix