1154. 【GDOI2003】购物 (Standard IO)

Time Limits: 1000 ms Memory Limits: 65536 KB

Description

  GDOI商场推出优惠活动,以超低价出售若干种商品。但是,商场为避免过分亏本,规定某些商品不能同时购买,而且每种超低价商品只能买一件。身为顾客的你想获得最大的实惠,也就是争取节省最多的钱。经过仔细研究,发现商场出售的超低价商品中,不存在以下情况:   n(n>=3)种商品C1,C2,…..,Cn,其中Ci,Ci+1是不能同时购买的(i=1,2…,n-1)并且C1, Cn也不能同时购买。   编程计算可以节省的最大金额数。

Input

  第一行两个整数K,M(1<=K<=1000).其中K表示超低价商品数。K种商品的编号依次为1,2,…,K。M表示不能同时购买的商品对数.接下来K行,第i行有一个整数Xi表示购买编号为i的商品可以节省的金额(1<=Xi<=100).再接下来M行,每行两个数A ,B,表示A和B不能同时购买,1<=A<=K,1<=B<=K,A<>B

Output

  仅一个整数,表示能节省的最大金额数。

Sample Input

3 1 1 1 1 1 2

Sample Output

2

Data Constraint

题解

把所有商品当成点,分两部分看

  1. 没有任何限制的点
  2. 有限制的点,相互限制的点连一条边

很明显,第一部分的点是一定要取的

而第二部分则构成了一棵树(因为没有环),这部分的点有两种解法

  1. 树形dp

    用f[i][0]表示不取第i个点

    用f[i][1]表示取第i个点

    转移就是老爸取了儿子不能取,儿子取了老爸不能取

  2. 二分图

    最优匹配问题,也可以转化为最小割

    求出来的最优匹配或最小割为ans

    则答案是n-ans/2

代码

树形dp

#include<cstdio>
#include<algorithm>
#define N 1001
using namespace std; long map[N][N],father[N],lc[N],rb[N],ch[N];
long f[N][2]; void build(long now)
{ long i,next;
for(i=1;i<=map[now][0];i++)if(map[now][i]!=father[now]){
if(!lc[now])lc[now]=map[now][i];
else rb[next]=map[now][i];
father[map[now][i]]=now;
next=map[now][i];
ch[now]++;
build(next);
}
}
void suan(long now)
{ long q;
ch[father[now]]--;
if(!lc[now])
f[now][0]=0;
else for(q=lc[now];q;q=rb[q]){
f[now][0]+=max(f[q][0],f[q][1]);
f[now][1]+=f[q][0];
}
} int main()
{ long n,m,i,j,x,y,ans=0;
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;i++)
scanf("%ld",&f[i][1]);
for(i=1;i<=m;i++){
scanf("%ld%ld",&x,&y);
map[x][++map[x][0]]=y;
map[y][++map[y][0]]=x;
}
for(i=1;i<=n;i++)
if(map[i][0]&&!father[i])
build(i);
for(i=1;i<=n;i++)if(!ch[i]){
suan(i);
for(j=father[i];!ch[j]&&j;j=father[j])
suan(j);
}
for(i=1;i<=n;i++)
if(!father[i])ans+=max(f[i][0],f[i][1]);
printf("%ld\n",ans);
return 0;
}

JZOJ 1154. 【GDOI2003】购物的更多相关文章

  1. JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物

    5461. [NOIP2017提高A组冲刺11.8]购物 (File IO): input:shopping.in output:shopping.out Time Limits: 1000 ms   ...

  2. JZOJ 5461 购物 —— 贪心

    题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...

  3. JZOJ 5459 购物

    Description X 城的商场中,有着琳琅满目的各种商品.一日,小X 带着小Y 前来购物,小Y 一共看中了n件商品,每一件商品价格为Pi.小X 现在手中共有m个单位的现金,以及k 张优惠券.小X ...

  4. 【原】彻底解决WPS弹出热点广告、WPS购物图标的办法

    一直用WPS,但一直有一个问题迟迟没有解决,那就是讨厌的WPS广告问题! 每次开机都会自动在托盘上闪烁图标:“WPS购物”和“WPS热点”! 用自定义托盘图标隐藏都不管用,自动又会给改回来!这简直是流 ...

  5. Java Web之网上购物系统(提交订单、查看我的订单)

    作业终于做完了,好开心......虽然这一周经历不是那么顺利,但是觉得还是收获了不少,有过想哭的冲动,代码不会写,事情办不好,各种发愁.空间里发小发了带父母出去游玩的照片,瞬间能量值不知道是被击退的多 ...

  6. Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)

    眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...

  7. 第八章 交互技术,8.1 VR电商购物(作者:宋五)

    8.1 VR电商购物 前言 GM LAB在2016年3月成立,是一个旨在探索最新电商购物体验的实验室.在探索VR购物的过程中,有两个需要核心解决的问题:一个是VR购物的产品形态是什么,另一个是VR环境 ...

  8. 模拟淘宝购物,运用cookie,记录登录账号信息,并且记住购物车内所选的商品

    1.登录界面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...

  9. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

随机推荐

  1. unittest如何在循环遍历一条用例时生成多个测试结果

    引用自:http://blog.csdn.net/kaku21/article/details/42124593 参考网址:http://programmaticallyspeaking.com/te ...

  2. python爬虫和数据分析、数据挖掘

    一.python爬虫脑图: 二.python爬虫流程: 三.python数据分析简介 四.python数据预处理方法 五.python数据挖掘 六.数据探索基础

  3. 奇点云COO刘莹应邀出席《APEC SME大数据与人工智能论坛》

    10月24日-25日,由亚太经合组织(APEC).韩国中小型及初创企业管理局(the Ministry of SMEs & Startups of Korea)主办的「APEC SME 大数据 ...

  4. [LC] 40. Combination Sum II

    Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...

  5. http接口与webservice接口的区别

    常见的API接口有两类:http接口和webservice接口. http接口走http协议,通过路径来区分调用方法,请求报文一般是key-value形式的,返回报文一般是json串,常用的是get和 ...

  6. Mate20 pro实现H265 (HEVC)实时硬件编码

    谁能告诉我手机上用H265实时编码有什么鸟用? 一.先看看手机支持哪些codec ALL_CODECS REGULAR_CODECS mine-type 选择mime-type为video/hevc, ...

  7. Docker:发布镜像问题denied: requested access to the resource is denied的解决方法

    问题: 发布镜像的时候,按照教程执行的,结果没有成功,搜了下,找到解决方法了,记录一下. denied: requested access to the resource is denied 解决方法 ...

  8. 数据库连接中断-spring-springBoot

    问题:据库和应用在同一台机,数据库用mysql5.6.20,已经升级druid到最新的1.0.7版本,访问的是localhost的mysql,放一个晚上不访问,第二天访问就报错了,重启服务正常,错误提 ...

  9. CSS预处理技术

    CSS自定义变量 这是一个实验中的标准,后续的具体写法和解析可能会有变动. 与Less|Sass等预处理器不同的是CSS变量带有语义效果,并且不需要额外的编译.因为其名称本身就包含了语义的信息,这使得 ...

  10. eclipse 设置字体与自动提示

    1.设置字体与字体大小 至此,字体与大小设置完毕. 2.设置自动提示 在输入框中输入 1-9 a-z A-Z .点击“Apply”保存. 开启JavaScript 自动提示 灰色未激活,先点击复选框激 ...