Luogu2792 JSOI2008 小店购物 最小树形图
被题意杀
本以为一个种类的物品一定要一起买
看了题解才知道可以先把所有要买的物品买一个,剩下要买的物品就可以得到这个种类的物品能够得到的最大优惠……
所以现在只需要知道:第一次买所有物品一遍时按照什么顺序买最优惠
建一个超级源点向每一个物品连权值等同于其价值的边,对于优惠\((A,B,P)\)从\(A\)向\(B\)连权值为\(P\)的遍,然后一遍最小树形图即可。
注意一个购买数量为\(0\)的点和它的所有出入边都要被忽视
#include<bits/stdc++.h>
//This code is written by Itst
using namespace std;
struct Edge{
int s , t;
double w;
}Ed[5010];
int id[101] , vis[101] , num[101] , pre[101];
int N , M , cntEd;
double sum , pri[101] , dis[101];
bool have[101][101];
void work(int rt){
while(1){
memset(vis , 0x3f , sizeof(vis));
memset(id , -1 , sizeof(id));
fill(dis , dis + N + 1 , 5e7);
int cnt = 0;
for(int i = 1 ; i <= cntEd ; ++i)
if(Ed[i].s != Ed[i].t && dis[Ed[i].t] > Ed[i].w){
dis[Ed[i].t] = Ed[i].w;
pre[Ed[i].t] = Ed[i].s;
}
for(int i = 0 ; i <= N ; ++i){
if(i == rt)
continue;
sum += dis[i];
int u = i;
vis[i] = i;
while(u != rt && vis[pre[u]] > i)
vis[u = pre[u]] = i;
if(u != rt && vis[pre[u]] == i){
do{
id[u] = cnt;
u = pre[u];
}while(id[u] == -1);
++cnt;
}
}
if(!cnt)
break;
for(int i = 0 ; i <= N ; ++i)
if(id[i] == -1)
id[i] = cnt++;
for(int i = 1 ; i <= cntEd ; ++i){
Ed[i].w -= dis[Ed[i].t];
Ed[i].s = id[Ed[i].s];
Ed[i].t = id[Ed[i].t];
}
N = cnt - 1;
rt = id[rt];
}
}
signed main(){
#ifndef ONLINE_JUDGE
//freopen("in" , "r" , stdin);
//freopen("out" , "w" , stdout);
#endif
cin >> N;
for(int i = 1 ; i <= N ; ++i){
cin >> pri[i] >> num[i];
Ed[++cntEd].s = 0;
Ed[cntEd].t = i;
if(num[i])
Ed[cntEd].w = pri[i];
}
cin >> M;
for(int i = 1 ; i <= M ; ++i){
int a , b;
double c;
cin >> a >> b >> c;
if(num[a] && num[b]){
Ed[++cntEd].s = a;
Ed[cntEd].t = b;
Ed[cntEd].w = c;
pri[b] = min(pri[b] , c);
}
}
for(int i = 1 ; i <= N ; ++i)
if(num[i])
sum += (num[i] - 1) * pri[i];
work(0);
cout << fixed << setprecision(2) << sum;
return 0;
}
Luogu2792 JSOI2008 小店购物 最小树形图的更多相关文章
- 【LuoguP2792 】[JSOI2008]小店购物(最小树形图)
题目链接 题目描述 小店的优惠方案十分简单有趣: 一次消费过程中,如您在本店购买了精制油的话,您购买香皂时就可以享受2.00元/块的优惠价:如果您在本店购买了香皂的话,您购买可乐时就可以享受1.50元 ...
- 洛谷P2792 [JSOI2008]小店购物(最小树形图)
题意 题目链接 Sol 一开始的思路:新建一个虚点向每个点连边,再加上题面中给出的边,边权均为大小*需要购买的数量 然后发现死活都过不去 看了题解才发现题目中有个细节--买了\(A\)就可以买\(B\ ...
- Luogu2792 [JSOI2008]小店购物
Luogu2792 [JSOI2008]小店购物 重题 bzoj4349 最小树形图 有 \(n\) 个物品,每个物品有价格 \(c_i\) 和所需个数 \(k_i\) ,所有物品必须恰好买 \(k_ ...
- [JSOI2008]小店购物 & bzoj4349:最小树形图 最小树形图
---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其 ...
- JSOI2008 小店购物
https://www.luogu.org/problem/show?pid=2792 题目背景 JSOI集训队的队员发现,在他们经常活动的集训地,有一个小店因为其丰富的经营优惠方案深受附近居民的青睐 ...
- 最小树形图--朱刘算法([JSOI2008]小店购物)
题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...
- 【Bzoj2260】【Bzoj4349】商店购物 & 最小树形图
目录 List Bzoj 2260 商店购物 Description Input Output Sample Input Sample Output Bzoj 4349 最小树形图 Descripti ...
- bzoj2260: 商店购物 && 4349: 最小树形图
Description Grant是一个个体户老板,他经营的小店因为其丰富的优惠方案深受附近居民的青睐,生意红火.小店的优惠方案十分简单有趣.Grant规定:在一次消费过程中,如果您在本店购买了精制油 ...
- bzoj2260: 商店购物&&4349: 最小树形图
最小树形图问题啊 最小树形图是撒哩,就是给你一个有向图,确定一个根,要你到达所有点,那棵最短路径树的总边权 做这个用的是朱(jv)刘(lao)算法. 首先假如有多个联通块就无解啦 对应每个点(除了根) ...
随机推荐
- 纯css实现元素下出现横线动画(background-image)
效果图: html: <div class='site_bar'>首页</div> css: .site_bar{ background-image : linear-grad ...
- npm install权限问题,报错:permission denied。
1.部署gulp项目时,nodeJs和gulp都已经正确安装,在项目内部执行npm install命令时,有些gulp的插件一直下载不成功,报错几种以下错误: “gulp-imagemin: Coul ...
- android.support不统一的问题
今天supprt28遇到的问题,由于28还是预览版,还存在一些bug 都是因为如果程序内出现不同的,support或者其他外部引用库的多个版本,Gradle在进行合并的时候会使用本地持有的,最高版本的 ...
- (网页)Angular.js 中 copy 赋值与 = 赋值 区别
转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.use ...
- Ubuntu16下配置支持Windows访问的samba共享
一.安装Ubuntu samba服务器 $ sudo apt-get install samba $ sudo apt-get install smbclient # Linux客户端测试用 二.创建 ...
- Spring Boot Actuator认识
概述 spring-boot-starter-actuator:是一个用于暴露自身信息的模块,主要用于监控与管理. 为了保证actuator暴露的监控接口的安全性,需要添加安全控制的依赖spring- ...
- solr-query
解释: 1.query:获取全部数据的SQL 2.deltaImportQuery:获取增量数据时使用的SQL 3.deltaQuery:获取pk的SQL 4.parentDeltaQuery:获取父 ...
- JQuery实现1024小游戏
最近用Jqery写了一个1024小游戏,由于是第一次写小游戏,所以就选了一个基础的没什么难度游戏.具体实现如下: 首先在开发时将整个游戏分成两层(自认为),底层是游戏的数据结构以及对数据的操作,上层是 ...
- Django【进阶篇】
目录 一.Model 二.admin 三.Form组件 四.Cookie 五.Session 六.分页 七.序列化 一.Model 数据库的配置 1.django默认支持sqlite,mysql, o ...
- 【PAT】B1039 到底买不买(20)(20 分)
/* 琢磨了很久,当时还没做几道题,参考了柳婼的思路 */ #include<stdio.h> #include<string.h> char arr[1000]={'\0'} ...