5545

news/2024/11/9 10:06:42/
题意
  1. 对于每组数据有n(1e5)个村庄,m(1e5)个战场 
  2. 对于村庄i,曹操可以选择支付c[i]*num元,(0<=c[i]<=1e5)
  3. 使得这个村庄派出num个士兵,在战场x[i]为曹操作战,在战场y[i]为袁绍作战。(1<=x[i],y[i]<=m) 
  4. 对于每个战场,都有个战略价值(0,1,2)。 
  5. 在战略价值为2的战场,曹操在该战场的士兵数必须严格比袁绍多 
  6. 在战略价值为1的战场,曹操在该战场的士兵数必须不能比袁绍少(按照贪心原则,实际一定会相等) 
  7. 在战略价值为0的战场,曹操在该战场的士兵数无所谓(按照贪心原则,实际一定会为0)
  8. 让你输出保障上述条件曹操至少需要花费的金钱。 
  9. 如果无法保障这个条件,则输出-1。

思路

网络流求最短路,这个是有模板的,关键是怎么建这个网络图

 [超级源点->重要度为2的点,流量为1,费用为0]
 [曹战场->袁战场,流量无限,费用为人的雇佣成本]

 [重要度为0的点->超级汇点,流量无限,费用为0]

        需要注意的是这道题并不要用到最小费用最大流,只需要枚举每个重要度为2的点, 对于每个这样的点,求它到重要度为0的点中距离最近的那个的距离

总结

这道题还是挺烦的,虽然说是道模板,但改改还是老出错,折腾半天都AC不了,最后还是参考了网上的代码才搞出来,貌似用最小费用最大流的模板会超时,只能用最大流模板

#include#include#include#include#include#include #include using namespace std; const int N=10001; int casenum,casei; int n,m; int x[N],y[N],cc[N]; int ww[N]; int first[M],id; int w[N],c[N],nxt[N]; long long int f[N]; bool e[M]; void ins(int x,int y,int z) { id++; w[id]=y; c[id]=z; nxt[id]=first[x]; first[x]=id; } struct node { int x;LL v; node(){} node(int x_,LL v_){x=x_;v=v_;} bool operator < (const node& b)const {return v>b.v;} }; priority_queue q; void inq(int x,LL v) { if(v>=f[x])return; f[x]=v; q.push(node(x,v)); } long long int dijkstra() { for(int i=1;i<=n;i++) { ins(y[i],x[i],cc[i]); if(ww[y[i]]==0)inq(y[i],0); } while(!q.empty()) { int x=q.top().x;q.pop(); if(e[x])continue;e[x]=1; for(int z=first[x];z;z=nxt[z])inq(w[z],f[x]+c[z]); } long long int ans=0; for(int i=1;i<=m;i++) { if(ww[i]==2) { if(f[i]==1e12)return -1; ans+=f[i]; } } return ans; } const int L=1e6; int Q[L],h,t; void inQ(int x,LL v) { if(v>=f[x])return; f[x]=v; if(e[x])return; e[x]=1; Q[t++]=x; } long long int spfa() { h=t=0; for(int i=1;i<=n;i++) { ins(y[i],x[i],cc[i]); if(ww[y[i]]==0)inQ(y[i],0); } while(h 


http://www.ppmy.cn/news/117135.html

相关文章

RabbitMQ模块使用的默认端口

详见rabbitmq networking port 端口范围英文描述中文描述4369epmd, a peer discovery service used by RabbitMQ nodes and CLI toolserlang发现口5672, 5671used by AMQP 0-9-1 and 1.0 clients without and with TLSclient端通信口5552, 5551used by the RabbitMQ Stream pr…

A002-185-2531

目录 第一页作业 2 1.1验收承认(acceptance) 2 1.2要求需要(requirement) 5 1.3最初形态(Prototype) 6 1.4Model(模型) 7 1.5异义词(Homonym) 8 1.6检查(Inspection) 8 1.7敏捷式项目管理(Agile project management) 9 1.8特征(Feature) 10 1.9实体(Entity) 12 1.10错误(Error)…

RGB888与RGB565

真彩色是指图像中的每个像素值都分成R&#xff08;红&#xff09;、G&#xff08;绿&#xff09;、B&#xff08;蓝&#xff09;三个基色分量&#xff0c;每个基色分量直接决定其基色的强度&#xff0c;这样产生的色彩称为彩色。彩色图像是一种用三个或更多字节描述像素的计算机…

5513

http://rrd.me/ecMtH 急速快花 http://rrd.me/ecMtQ 猫猫来 http://t.cn/EtfFnA4 来客优上城 http://t.cn/EtpcKYB 金来购 http://t.cn/EtfsLoD 聚合 http://t.cn/EtfsKSf 花不完 来就借 http://t.cn/EtwK9nG 借了发 http://t.cn/EtPWYA6 金米赏城 http://t.cn/EtP8dHi 上…

python 笔试题的输入输出

n int(input()) a [] b [] c [] for i in range(n):A, B, C map(int, input().split())a.append(A)b.append(B)c.append(C)1.普通输入 ##输入一行2 3 a input().split() print(a) ##["2","3"] ##输入两行 ##5 ##1 5 6 a [] b input() print(b)##5…

常见MAC操作

文章目录 1、查看所有MAC地址2、查看某个接口学习到的MAC地址3、查看某个VLAN学习到的MAC地址4、查看系统的MAC地址5、查看接口的MAC地址6、查看VLANIF接口的MAC地址7、查看IP获取对应设备的MAC地址8、配置静态MAC地址9、配置黑洞MAC地址10、查看和配置MAC地址的老化时间11、配…

电子元件-555时基芯片

内容包括555时基芯片组成单稳态、双稳态、多谐振荡器电路详细介绍&#xff0c;组成看门狗电路&#xff08;含工程实际电路&#xff09;。紫色文字是超链接&#xff0c;点击自动跳转至相关博文。持续更新&#xff0c;原创不易&#xff01; 目录&#xff1a; 一、组成单稳态电路 …

RGB888和RGB565颜色对照表

在做项目的时候&#xff0c;经常会遇到颜色的处理&#xff0c;现将颜色对照表总结下来&#xff0c;方便以后使用。24位色为RGB888格式&#xff0c;16位色为RGB565格式。 颜色名称英语十六进制RGB16R16G16B16rgb(rgb565)RGB565格式 黑色Black#00000000000000X0  昏灰Dimgray#…