BZOJ 2037 Sue的小球

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

题意:二维平面上有一些彩蛋(x,y),每个彩蛋会下落。当移动到彩蛋下方时会获得彩蛋,价值为此时彩蛋的高度。初始位置给出(只能在x轴上移动)。求一种移动的方式使得获得的总价值最大。(所有彩蛋都要拿到)

思路:

int f[2][N][N],sum[N];
int visit[N][N];

struct node
{
    int x,y,v;
};

node a[N];
int n,x0;

int cmp(node a,node b)
{
    return a.x<b.x;
}

int S(int L,int R)
{
    return sum[n]-(sum[R]-sum[L-1]);
}

void DFS(int L,int R)
{
    if(visit[L][R]) return;
    if(L==R)
    {
        if(a[L].x==x0) f[0][L][R]=f[1][L][R]=0;
        else f[0][L][R]=f[1][L][R]=-INF;
        return;
    }
    visit[L][R]=1;
    DFS(L+1,R); DFS(L,R-1);
    f[0][L][R]=a[L].y+max(f[0][L+1][R]-(a[L+1].x-a[L].x)*S(L+1,R),
                          f[1][L+1][R]-(a[R].x-a[L].x)*S(L+1,R));
    f[1][L][R]=a[R].y+max(f[0][L][R-1]-(a[R].x-a[L].x)*S(L,R-1),
                          f[1][L][R-1]-(a[R].x-a[R-1].x)*S(L,R-1));
}

int main()
{
    RD(n,x0);
    int i;
    FOR1(i,n) RD(a[i].x);
    FOR1(i,n) RD(a[i].y);
    FOR1(i,n) RD(a[i].v);
    a[++n].x=x0;
    sort(a+1,a+n+1,cmp);
    FOR1(i,n) sum[i]=sum[i-1]+a[i].v;
    DFS(1,n);
    PR(max(f[0][1][n],f[1][1][n])/1000.0);
}

BZOJ 2037 Sue的小球,布布扣,bubuko.com

时间: 2024-08-12 23:45:46

BZOJ 2037 Sue的小球的相关文章

【BZOJ2037】[Sdoi2008]Sue的小球 区间DP+费用提前

[BZOJ2037][Sdoi2008]Sue的小球 Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋.然而,彩蛋有一个魅力值,这个魅力值会随着彩蛋在空中降落的时间而降低,Sue要想得到更多的分数,必须尽量在魅力值高的时候收集这个彩蛋,而如果一个

洛谷 P2466 Sue的小球 解题报告

P2466 [SDOI2008]Sue的小球 题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋.然而,彩蛋有一个魅力值,这个魅力值会随着彩蛋在空中降落的时间而降低,Sue要想得到更多的分数,必须尽量在魅力值高的时候收集这个彩蛋,而如果一个彩蛋掉入海中,它的魅力

Bzoj2037 [Sdoi2008]Sue的小球

Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 672  Solved: 372 Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋.然而,彩蛋有一个魅力值,这个魅力值会随着彩蛋在空中降落的时间而降低,

Luogu[SDOI2008]Sue的小球

题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋.然而,彩蛋有一个魅力值,这个魅力值会随着彩蛋在空中降落的时间而降低,Sue要想得到更多的分数,必须尽量在魅力值高的时候收集这个彩蛋,而如果一个彩蛋掉入海中,它的魅力值将会变成一个负数,但这并不影响Sue的兴趣,

luoguP2466 [SDOI2008]Sue的小球

此题与\(luoguP1220\)关路灯类似,但是这个题目的收益随时间的变化而变化. 起初我思考来一个三维\(dp\),即两维坐标,一维时间. 可惜爆了空间(艹). 但是由于时间是线性的,所以我们可以反着设. 即设\(dp[0/1][st][ed]\)表示处理完按坐标排序后的第\(st\)个蛋到第\(ed\)个蛋被处理完后对于剩下的蛋所产生的影响. 答案即为\(\sum^{n}_{i=1}y[i]-\min(dp[0][1][n],dp[1][1][n])\). 转移即为普通的区间\(dp\)套

BZOJ 1867 NOI1999 钉子和小球 动态规划

题目大意:给定一个钉子阵,小球从最上方的钉子释放,求到达最底端某个位置的概率 只需要DP就好了 f[i][j]表示小球落在第i行第j个钉子上的概率 如果一个点有钉子 f[i+1][j]和f[i+1][j+1]平分这个点的概率 如果一个点没有钉子 f[i+2][j+1]得到这个点的全部概率 最后输出f[n+1][m+1]即可 注意不能输出回车 否则PE 无视这凶残的结构体操作符重载吧0.0 #include<cstdio> #include<cstring> #include<

bzoj千题计划189:bzoj1867: [Noi1999]钉子和小球

http://www.lydsy.com/JudgeOnline/problem.php?id=1867 dp[i][j] 落到(i,j)的方案数 dp[i][j]=0.5*dp[i-1][j]   [(i-1,j)位置有钉子] + 0.5*dp[i-1][j-1]    [(i-1.j-1)位置有钉子] + dp[i-1][j-2]    [(i-1,j-2)位置没有钉子] #include<cstdio> #include<iostream> using namespace s

BZOJ NOI 1999 钉子和小球 动态规划+分数类

题目大意:不太好描写叙述,自己看吧.. 思路:首先从最上面的点開始考虑.由于球一定是从最上面開始往下掉,所以球经过最上面的点的概率是1,然后他会有1/2的几率向左,1/2的几率向右,也就是以下的两个点均分上面点的几率. 当然这是全部的点都存在的情况.假设有哪里的点不存在了,那么求落到这个点的几率不变,然后它的全部几率都会加在在它以下两行且在正下方的点. 依照这样写dp方程.显然是不难的.之后就是恶心的输出了.两个方案,1.遇到小数就*2,保证它是整数.可是最高有50层.就要考虑一下2^50这么大

bzoj 2465 小球

题目大意: 给定n个不同颜色的球,每个球都有一个分数,同时有m个瓶子,每个瓶子都有固定的容量 必须把球放到瓶子里面 计算最多能放多少个球到这些瓶子里 思路: 开始想的是费用流 超级源向每个球连一条 容量为1,费用为球的分数的边 每个瓶子和它可以装下的球连一条 容量为1,费用为0的边 每个瓶子和汇点连一条 容量为瓶的容量,费用为0的边 然后发现有个贪心就是使每个球尽可能价值最大,A了 1 #include<iostream> 2 #include<cstdio> 3 #include