BZOJ 1563 诗人小G(四边形优化)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1563

题意:

思路:设s[i]表示前i个句子的长度和,那么有转移方程:

有大牛证明这个满足四边形不等式,证明应该
比较复杂。在《1D/1D动态规划优化初步》这篇文章中,作者说实战中可以直接打表看看是不是满足,感觉还是比较实用的。不管那么多了,现在我们知道了满
足四边形不等式,也就是满足决策点单调。比如f[i]是用j更新的,那么i之后的点不可能用j之前的点更新,这就是决策单调性。那么我们怎么维护这个呢?

struct node
{
    int L,R,id;

    node(){}
    node(int _L,int _R,int _id)
    {
        L=_L;
        R=_R;
        id=_id;
    }
};

node Q[N];
int s[N],n,L,P;
long double F[N];

long double C(int i,int j)
{
    return F[i]+pow(fabs(s[j]-s[i]+j-i-1-L),P);
}

void DP()
{
    int H=0,T=0;
    Q[0]=node(1,n,0);
    int i,L,R,mid,ans;
    FOR1(i,n)
    {
        while(i>Q[H].R) H++;
        F[i]=C(Q[H].id,i);
        if(C(i,n)>C(Q[T].id,n)) continue;
        while(i<Q[T].L&&C(i,Q[T].L)<C(Q[T].id,Q[T].L)) T--;

        L=max(Q[T].L,i+1);
        R=Q[T].R;
        ans=min(n,Q[T].R+1);
        while(L<=R)
        {
            mid=(L+R)>>1;
            if(C(i,mid)<C(Q[T].id,mid)) R=mid-1,ans=mid;
            else L=mid+1;
        }
        Q[T].R=ans-1;
        Q[++T]=node(ans,n,i);
    }
    if(F[n]>dinf)
    {
        puts("Too hard to arrange");
    }
    else printf("%lld\n",(i64)F[n]);
    puts("--------------------");
}

int get()
{
    int L=0;
    char c=getchar();
    while(c!=‘\n‘)
    {
        L++;
        c=getchar();
    }
    return L;
}

int main()
{
    rush()
    {
        RD(n,L,P);
        char c=getchar();
        while(c!=‘\n‘) c=getchar();
        int i;
        FOR1(i,n) s[i]=get()+s[i-1];
        DP();
    }
}

BZOJ 1563 诗人小G(四边形优化),布布扣,bubuko.com

时间: 2024-08-03 23:31:22

BZOJ 1563 诗人小G(四边形优化)的相关文章

BZOJ 1563 NOI2009 诗人小G 四边形不等式

题目大意:玩具装箱,然而指数变成了p(p≤10) 首先我们需要证明决策单调 由于数死早,还是戳这里吧 知道决策单调之后怎么办呢? 由于是1D1D,所以不能分治了 每个决策点能决策的区间一定是连续的一段 并且随着决策点的右移 这个区间也在不断右移 令g[j]表示决策点j能贡献的最左侧的位置 然后我们开一个栈来维护当前存在贡献的贡献点 那么显然stack[i]的贡献区间是[g[stack[i]],g[stack[i+1]]?1] 每新来一个点,首先在栈中二分找到最优决策点 然后将所有满足 f[sta

NOI 2009A 诗人小G

NOI 2009A 诗人小G 诗人小G [问题描述] 小G是一个出色的诗人,经常作诗自娱自乐.但是,他一直被一件事情所困扰,那就是诗的排版问题. 一首诗包含了若干个句子,对于一些连续的短句,可以将它们用空格隔开并放在一行中, 注意一行中可以放的句子数目是没有限制的.小G给每首诗定义了一个行标准长度(行的长度为一行中符号的总个数),他希望排版后每行的长度都和行标准长度相差不远.显然排版时,不应改变原有的句子顺序,并且小G不允许把一个句子分在两行或者更多的行内.在满足上面两个条件的情况下,小G对于排

Bzoj 1563: [NOI2009]诗人小G(决策单调性优化)

原题面 带有详细证明的转这里 题意:每一个线段有一个长度,有一个标准长,现在要把这些线段按照顺序分行,每行的不和谐值等于标准长和该行线段总长的差的绝对值的p次方.现在要求最小的不和谐值之和. 开始的时候完全读错题了,以为p==2 for ever.真是太天真.后来看数据范围才发现.我真是面向数据编程? n^2的dp是一眼秒的.然后如果是p=2,那就是一个非常像玩具装箱的斜率优化dp.对于4.5的数据范围.可以想到用贪心优化dp.因为每一行的长度不会通过拼接线段(线段条数>=2)达到2*标准长,这

【BZOJ 1563】 [NOI2009]诗人小G

Description Input Output 对于每组数据,若最小的不协调度不超过1018,则第一行一个数表示不协调度若最小的不协调度超过1018,则输出"Too hard to arrange"(不包含引号).每个输出后面加"--------------------" Sample Input 4 4 9 3 brysj, hhrhl. yqqlm, gsycl. 4 9 2 brysj, hhrhl. yqqlm, gsycl. 1 1005 6 poet

题解——[NOI2009]诗人小G 决策单调性优化DP

第一次写这种二分来优化决策单调性的问题.... 调了好久,,,各种细节问题 显然有DP方程: f[i]=min(f[j] + qpow(abs(sum[i] - sum[j] - L - 1))); 其中f[i]代表到了第i个句子的最小答案 qpow用于处理^p sum为前缀和 (同时为了处理句子之间的空格问题,我们在统计前缀和的时候就默认在句子后面加一个空格, 然后在计算的时候,由于每一行只有最后一个不用加空格,直接减掉这个多加的空格即可获得正确长度) 首先我们可以打表发现是满足决策单调性的,

诗人小G(1D1D动态规划)

1D1D动态规划的转移式是长这样的: 对于形如f(i)=min(f(j)+w(j,i)) ,1<=i<=n-1f(i)=min(f(j)+w(j,i)),1<=i<=n?1的状态转移方程,记p[i]p[i]为令f[i]f[i]取到最小值的jj的值,即p[i]p[i]是f[i]f[i]的最优决策.若pp在[1,N][1,N]上单调不见,则称f具有决策单调性 其中 w[i,x]需要满足四边形不等式 emmm四边形不等式是什么呢? 对于定义域上的任意整数a,b,c,d,其中a\le b

SVMtrain的参数c和g的优化

SVMtrain的参数c和g的优化 在svm训练过程中,需要对惩罚参数c和核函数的参数g进行优化,选取最好的参数 知道测试集标签的情况下 是让两个参数c和g在某一范围内取离散值,然后,取测试集分类准确率最佳的参数 不知道测试集标签的情况下 (1)利用交叉验证的方法:(k-fold cross validation) Start bestAccuracy = 0  bestc = 0  bestg = 0  //n1 , n2 ,k都是事先给定的值  for c = 2^(-n1) : 2^(n1

HDU 3506 (环形石子合并)区间dp+四边形优化

Monkey Party Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 1699    Accepted Submission(s): 769 Problem Description Far away from our world, there is a banana forest. And many lovely monkeys l

BZOJ 1855 股票交易(单调队列优化DP)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1855 题意:最近lxhgww又迷上了投资股票, 通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第i天的股票买入价为每股APi,第i天的股票卖出价为每股BPi(数据保证对于每 个i,都有APi>=BPi),但是每天不能无限制地交易,于是股票交易所规定第i天的一次买入至多只能购买ASi股,一次卖出至多只能卖出BS