100078D Domestic Networks
题目大意
有两种染料,给定它们的单价和数量,每染色一米需耗费一个单位的染料,一条边只能用一种燃料,给你一张图,要求你将其中的一些边染色使得在满足图联通的情况下花费最小并输出方案。
分析
首先,要求图联通且花费最小我们不由想到了求最小生成树,在求完之后我们的问题就变成的看每条边要被染成哪种颜色。我们用dpij表示考虑了前i条边,第一种染料(5号染料)用的数量,并用数组记录一下在这种情况下所选的染料种类就可以了,详见代码。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define sp cout<<"---------------------------------------------------"<<endl
const int inf=0x3f3f3f3f;
struct node {
int x,y,z,id;
}d[];
int dp[][],pre[],p5,q5,p6,q6,n,m,wh[],fa[],cnt,tot;
bool ch[][];
struct ans {
int a,b;
}out[];
bool cmp(const node a,const node b){return a.z<b.z;}
bool cmp2(const ans a,const ans b){return a.a<b.a;}
inline int sf(int x){return fa[x]==x?x:fa[x]=sf(fa[x]);}
int main(){
freopen("domestic.in","r",stdin);
freopen("domestic.out","w",stdout);
int i,j,k;
scanf("%d%d",&n,&m);
for(i=;i<=m;i++){
scanf("%d%d%d",&d[i].x,&d[i].y,&d[i].z);
d[i].id=i;
}
scanf("%d%d%d%d",&p5,&q5,&p6,&q6);
sort(d+,d+m+,cmp);
for(i=;i<=n;i++)fa[i]=i;
for(i=;i<=m;i++){
if(sf(d[i].x)!=sf(d[i].y)){
fa[sf(d[i].x)]=sf(d[i].y);
cnt++;
pre[cnt]=pre[cnt-]+d[i].z;
wh[cnt]=i;
}
if(cnt==n-)break;
}
if(cnt<n-){
puts("Impossible");
return ;
}
memset(dp,0x3f,sizeof(dp));
dp[][]=;
for(i=;i<=cnt;i++)
for(j=;j<=min(q5,pre[i]);j++){
if(pre[i]-j>=d[wh[i]].z&&pre[i]-j<=q6)
dp[i][j]=dp[i-][j]+d[wh[i]].z*p6;
if(j>=d[wh[i]].z&&dp[i][j]>dp[i-][j-d[wh[i]].z]+d[wh[i]].z*p5){
dp[i][j]=dp[i-][j-d[wh[i]].z]+d[wh[i]].z*p5;
ch[i][j]=;
}
}
int ans=inf,pl;
for(i=;i<=q5;i++){
if(dp[cnt][i]<ans){
ans=dp[cnt][i];
pl=i;
}
}
if(ans==inf)puts("Impossible");
else {
cout<<ans<<endl;
for(i=cnt;i>;i--)
if(ch[i][pl]){
cout<<d[wh[i]].id<<' '<<<<endl;
pl-=d[wh[i]].z;
}else cout<<d[wh[i]].id<<' '<<<<endl;
}
return ;
}
100078D Domestic Networks的更多相关文章
- POJ - 3538 - Domestic Networks
先上题目: Domestic Networks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 732 Accepted: ...
- ActiveMQ笔记(3):基于Networks of Brokers的HA方案
上一篇介绍了基于ZK的ActiveMQ HA方案,虽然理解起来比较容易,但是有二个不足: 1) 占用的节点数过多,1个zk集群至少3个节点,1个activemq集群也至少得3个节点,但其实正常运行时 ...
- 【转】Artificial Neurons and Single-Layer Neural Networks
原文:written by Sebastian Raschka on March 14, 2015 中文版译文:伯乐在线 - atmanic 翻译,toolate 校稿 This article of ...
- OpenFlow:Enabling Innovation in Campus Networks
SDN领域,OpenFLow现在已经成为了广泛使用的南向接口协议.若想好好学习SDN,在这个领域有所进步,需要熟悉OpenFlow协议.我最近找了篇有关OpenFLow的论文,发现最早该协议是在Sig ...
- Spatial Transformer Networks(空间变换神经网络)
Reference:Spatial Transformer Networks [Google.DeepMind]Reference:[Theano源码,基于Lasagne] 闲扯:大数据不如小数据 这 ...
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...
- 论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)
Xiang Bai--[CVPR2016]Multi-Oriented Text Detection with Fully Convolutional Networks 目录 作者和相关链接 方法概括 ...
- VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 这篇论文
由Andrew Zisserman 教授主导的 VGG 的 ILSVRC 的大赛中的卷积神经网络取得了很好的成绩,这篇文章详细说明了网络相关事宜. 文章主要干了点什么事呢?它就是在在用卷积神经网络下, ...
- Deep Learning 26:读论文“Maxout Networks”——ICML 2013
论文Maxout Networks实际上非常简单,只是发现一种新的激活函数(叫maxout)而已,跟relu有点类似,relu使用的max(x,0)是对每个通道的特征图的每一个单元执行的与0比较最大化 ...
随机推荐
- 去掉Arraylist集合中的重复元素
package cn.collection; import java.util.ArrayList; import java.util.Iterator; import java.util.Scann ...
- python发短信功能
http://www.cnblogs.com/martianShu/p/5847289.html
- puppeteer
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); ...
- 一个Bug 差点让服务器的文件系统崩溃
昨天,公司的美国客户发邮件给我,说我的软件出问题了,我查来查去,发现居然是服务器上一个目录无法删除,一删除就报 cannot read from the source file or disk. 如果 ...
- 用Python+Django1.9在Eclipse环境下开发web网站
最近想学习一下python django, 按网上各位大神们的说明,试着做了一下,这里记录下来,做个笔记. 参考 http://www.cnblogs.com/linjiqin/p/3595891.h ...
- laravel count的使用
rt 学习源头: https://blog.csdn.net/chajinglong/article/details/51954010 四.聚合 查询构建器还提供了各种聚合方法,如统计,马克斯,min ...
- UE4异步载入资源
转自:http://blog.ch-wind.com/ue4%E5%BC%82%E6%AD%A5%E8%BD%BD%E5%85%A5%E8%B5%84%E6%BA%90/ 所有的“硬”指针指向的资源都 ...
- O2O和B2C、C2C的区别
B2C.C2C是在线支付,购买的商品会塞到箱子里通过物流公司送到你手中;O2O是在线支付,购买线下的商品.服务,再到线下去享受服务. O2O模式的核心很简单,就是把线上的消费者带到现实的商店中去.在线 ...
- eclipse下搭建Drools规则引擎环境
插件下载地址:http://download.jboss.org/drools/release/ 1.点开对应的版本文件,选择标红的两个压缩包下载,其他的如有需要也可以自行选择: 2.将下载的压缩包解 ...
- python 继承进阶
继承进阶 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例 对象名:调用对象属性 调用方法 3 ...