E

来源:互联网 发布:iphone移动数据为e 编辑:程序博客网 时间:2024/04/27 17:09

dp 0-1背包+并查集 CodeForce 742D
http://codeforces.com/problemset/problem/742/D
动态规划专题训练
题目大意:选几个美丽的小姐来参加舞会,但是每位小姐都是有着体重和魅力值,要求在有总体重上限w的情况下尽可能的选出总魅力值最高的小姐来参加。
当然如果是这样就可以直接套0-1背包的模板了。然而还加上了一个限制,就是每一位小姐都会和其他的小姐之间有个友谊关系,在有友谊关系的情况下,要么只选一个人,要么全部都请过去。
思路:
先用并查集解决友谊圈的问题,找出同是一个友谊圈的小姐,并放在一块。
接着利用0-1背包的思路,来解决。
状态转移方程 dp(s)=max{dp(s-w(k))+b(k)};//k是在一个圈里的小姐
然后在进行一次判断就是这个跟这个圈的小姐全部都选上的方案相比怎么样
dp(s)=max{dp(s-wl)+bl};

做的时候小心点就好了,今天唯一一次AC

#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;int d[1006];int v[1006];int a[1006],b[1006];vector<int> h[1006];int al[1006],bl[1006];int find(int s){    return s==v[s]?s:v[s]=find(v[s]);}int n,m,w;void read(){    scanf("%d %d %d",&n,&m,&w);    for(int i = 0; i <= n; i++ )        v[i]=i;    for(int i = 1; i <= n; i++)    {        scanf("%d", &a[i]);    }    for(int i = 1; i <= n; i++)    {        scanf("%d", &b[i]);    }    for(int i = 0; i < m; i++)    {        int u,vi;        scanf("%d %d",&u, &vi);        int x = find(u);        int y = find(vi);        v[x]=y;    }}int main(){    memset(d, 0, sizeof(d));    memset(al, 0 ,sizeof(al));    memset(bl, 0, sizeof(bl));    read();    for(int i = 1; i <= n; i++)    {        h[find(i)].push_back(i);        al[find(i)] += a[i];        bl[find(i)] += b[i];    }    for(int i = 1; i <= n; i++)    {        if(h[i].empty()) continue;        for(int j = w; j >= 0; j--)        {            for(int k = 0; k < h[i].size(); k++)            {                if(j - a[h[i][k]] >= 0)                    d[j]=max(d[j - a[h[i][k]]] +b[h[i][k]],d[j]);            }            if(j - al[i] >= 0) d[j]=max(d[j - al[i]]+bl[i], d[j]);        }    }    int ans=-1;    for(int i = 0; i <= w; i++ ) ans=max(ans, d[i]);    printf("%d\n",ans);    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六年级数学考了30分怎么办 数学考了30分怎么办 没有给直接领导报到怎么办 小学二年级成绩不好怎么办 初中孩子上课注意力不集中怎么办 学生打架家长争吵老师怎么办 我和我老婆感情危机怎么办 数学作业做得慢怎么办 待转弯区变红灯怎么办 大班健康发生火灾怎么办教案 数字化审图图纸提交不了怎么办 监狱建筑师没电了怎么办 ios短信提示不弹出怎么办 ie游览器图标删了怎么办 电脑上ie卸载了怎么办 打开cad浏览器闪退怎么办 dnf进游戏闪退怎么办 苹果8出现闪退怎么办 手机浏览器老是自动打开软件怎么办 打开手机浏览器为什么是英文怎么办 ie浏览器删除掉了怎么办 手机360浏览器卸载不掉怎么办 大学素质拓展学分不够怎么办 专升本学分不够怎么办 电脑连接无线网络网关禁用怎么办 背部毛孔粗大有黑头怎么办 毛孔变粗大长痘怎么办 皮肤粗糙暗黄毛孔大怎么办 毛孔粗大还有痘印怎么办 高一的不爱上数学怎么办 监狱系统需要体测怀孕怎么办 货运从业资格证年审过期了怎么办 科三线路记不住怎么办? 汽车大灯里面起雾水怎么办 二级重伤对方法庭拒绝赔偿怎么办? 在麦当劳工作收到假钞怎么办 东西湖小学分配太远怎么办 农行k令过期了怎么办 穿军训的鞋捂坏了怎么办 联通手机号销户话费怎么办 建行员工所持有的原始股怎么办