JZOJ 1154. 【GDOI2003】购物
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
题解
把所有商品当成点,分两部分看
- 没有任何限制的点
- 有限制的点,相互限制的点连一条边
很明显,第一部分的点是一定要取的
而第二部分则构成了一棵树(因为没有环),这部分的点有两种解法
树形dp
用f[i][0]表示不取第i个点
用f[i][1]表示取第i个点
转移就是老爸取了儿子不能取,儿子取了老爸不能取二分图
最优匹配问题,也可以转化为最小割
求出来的最优匹配或最小割为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】购物的更多相关文章
- JZOJ 5461. 【NOIP2017提高A组冲刺11.8】购物
5461. [NOIP2017提高A组冲刺11.8]购物 (File IO): input:shopping.in output:shopping.out Time Limits: 1000 ms ...
- JZOJ 5461 购物 —— 贪心
题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...
- JZOJ 5459 购物
Description X 城的商场中,有着琳琅满目的各种商品.一日,小X 带着小Y 前来购物,小Y 一共看中了n件商品,每一件商品价格为Pi.小X 现在手中共有m个单位的现金,以及k 张优惠券.小X ...
- 【原】彻底解决WPS弹出热点广告、WPS购物图标的办法
一直用WPS,但一直有一个问题迟迟没有解决,那就是讨厌的WPS广告问题! 每次开机都会自动在托盘上闪烁图标:“WPS购物”和“WPS热点”! 用自定义托盘图标隐藏都不管用,自动又会给改回来!这简直是流 ...
- Java Web之网上购物系统(提交订单、查看我的订单)
作业终于做完了,好开心......虽然这一周经历不是那么顺利,但是觉得还是收获了不少,有过想哭的冲动,代码不会写,事情办不好,各种发愁.空间里发小发了带父母出去游玩的照片,瞬间能量值不知道是被击退的多 ...
- Java Web之网上购物系统(注册、登录、浏览商品、添加购物车)
眼看就要期末了,我的专业课也迎来了第二次的期末作业---------<网上购物系统>.虽然老师的意图是在锻炼我们后台的能力,但是想着还是不利用网上的模板,准备自己写,以来别人写的静态页看不 ...
- 第八章 交互技术,8.1 VR电商购物(作者:宋五)
8.1 VR电商购物 前言 GM LAB在2016年3月成立,是一个旨在探索最新电商购物体验的实验室.在探索VR购物的过程中,有两个需要核心解决的问题:一个是VR购物的产品形态是什么,另一个是VR环境 ...
- 模拟淘宝购物,运用cookie,记录登录账号信息,并且记住购物车内所选的商品
1.登录界面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
- C算法编程题(七)购物
前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...
随机推荐
- unittest如何在循环遍历一条用例时生成多个测试结果
引用自:http://blog.csdn.net/kaku21/article/details/42124593 参考网址:http://programmaticallyspeaking.com/te ...
- python爬虫和数据分析、数据挖掘
一.python爬虫脑图: 二.python爬虫流程: 三.python数据分析简介 四.python数据预处理方法 五.python数据挖掘 六.数据探索基础
- 奇点云COO刘莹应邀出席《APEC SME大数据与人工智能论坛》
10月24日-25日,由亚太经合组织(APEC).韩国中小型及初创企业管理局(the Ministry of SMEs & Startups of Korea)主办的「APEC SME 大数据 ...
- [LC] 40. Combination Sum II
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...
- http接口与webservice接口的区别
常见的API接口有两类:http接口和webservice接口. http接口走http协议,通过路径来区分调用方法,请求报文一般是key-value形式的,返回报文一般是json串,常用的是get和 ...
- Mate20 pro实现H265 (HEVC)实时硬件编码
谁能告诉我手机上用H265实时编码有什么鸟用? 一.先看看手机支持哪些codec ALL_CODECS REGULAR_CODECS mine-type 选择mime-type为video/hevc, ...
- Docker:发布镜像问题denied: requested access to the resource is denied的解决方法
问题: 发布镜像的时候,按照教程执行的,结果没有成功,搜了下,找到解决方法了,记录一下. denied: requested access to the resource is denied 解决方法 ...
- 数据库连接中断-spring-springBoot
问题:据库和应用在同一台机,数据库用mysql5.6.20,已经升级druid到最新的1.0.7版本,访问的是localhost的mysql,放一个晚上不访问,第二天访问就报错了,重启服务正常,错误提 ...
- CSS预处理技术
CSS自定义变量 这是一个实验中的标准,后续的具体写法和解析可能会有变动. 与Less|Sass等预处理器不同的是CSS变量带有语义效果,并且不需要额外的编译.因为其名称本身就包含了语义的信息,这使得 ...
- eclipse 设置字体与自动提示
1.设置字体与字体大小 至此,字体与大小设置完毕. 2.设置自动提示 在输入框中输入 1-9 a-z A-Z .点击“Apply”保存. 开启JavaScript 自动提示 灰色未激活,先点击复选框激 ...