hdu4966 GGS-DDU
hdu4966 GGS-DDU
有 \(n\) 个课程,每种课程有 \(a_i\) 级,一开始你每种课程都为 \(0\) 级,有 \(m\) 个升级方案:\((x,\ l1,\ y,\ l2,\ c)\) ,若你课程 \(x\) 已达到 \(l1\) 级,那么你可以花费 \(c\) 的价格,使得课程 \(y\) 达到 \(l2\) 级。求最小花费使得所有课程满级。
\(n\leq50,\ m\leq2\times10^3,\ a_i\leq500\)
最小树形图
将每个课程拆为 \(a_i\) 个点,分别表示此课程等级为 \(0\cdots a_i\) 。建一个虚拟根节点,连向所有等级为 \(0\) 的节点,边权为 \(0\) 。升级方案可以连边课程 \(x\) 的 \(l1\cdots a_x\) 到课程 \(y\) 的 \(l2\) ,边权为 \(c\) ,再从所有等级为 \(k\) 的节点向等级为 \(k-1\) 的节点连边,权值为 \(0\) ,接着跑最小树形图就吼辣
时间复杂度 \(O(m\sum a_i)\)
代码
#include <bits/stdc++.h>
using namespace std;const int maxn = 2.5e4 + 10, maxm = 1e6 + 10;
int n, m, k, a[60], mp[60][510], val[maxn], vis[maxn], pre[maxn], tid[maxn];
struct edges {int u, v, w;edges(int x = 0, int y = 0, int z = 0) : u(x), v(y), w(z) {}
} e[maxm];int edmonds() {int ans = 0;while (1) {memset(vis, 0, sizeof vis);memset(tid, 0, sizeof tid);memset(val, 0x3f, sizeof val);for (int i = 1; i <= m; i++) {int u = e[i].u, v = e[i].v;if (u != v && e[i].w < val[v]) {val[v] = e[i].w, pre[v] = u;}}for (int i = 1; i < n; i++) {if (val[i] > 1e9) return -1;}int tot = 0;for (int i = 1; i < n; i++) {int u = i;ans += val[i];while (u < n && !tid[u] && vis[u] != i) {vis[u] = i, u = pre[u];}if (u < n && !tid[u]) {tid[u] = ++tot;for (int v = pre[u]; u != v; v = pre[v]) {tid[v] = tot;}}}if (!tot) break;for (int i = 1; i <= n; i++) {if (!tid[i]) tid[i] = ++tot;}for (int i = 1; i <= m; i++) {int u = e[i].u, v = e[i].v;e[i].u = tid[u], e[i].v = tid[v];if (u != v) e[i].w -= val[v];}n = tot;}return ans;
}void solve() {m = 0;for (int i = 1; i <= n; i++) {scanf("%d", a + i);mp[i][0] = mp[i - 1][a[i - 1]] + 1;for (int j = 1; j <= a[i]; j++) {mp[i][j] = mp[i][j - 1] + 1;e[++m] = edges(mp[i][j], mp[i][j - 1], 0);}}for (int i = 1; i <= k; i++) {int p1, p2, l1, l2, w;scanf("%d %d %d %d %d", &p1, &l1, &p2, &l2, &w);for (int j = l1; j <= a[p1]; j++) {e[++m] = edges(mp[p1][j], mp[p2][l2], w);}}for (int i = 1; i <= n; i++) {e[++m] = edges(mp[n][a[n]] + 1, mp[i][0], 0);}n = mp[n][a[n]] + 1;printf("%d\n", edmonds());
}int main() {while (scanf("%d %d", &n, &k) == 2 && n && k) {solve();}return 0;
}
转载于:https://www.cnblogs.com/Juanzhang/p/10389038.html
hdu4966 GGS-DDU相关推荐
- DDP、DDU、DAP的区别你都知道吗?
DDP和DDU这两种贸易术语在货物的进出口中也经常会被使用到,而很多出口商对这些贸易术语的了解并不深,因此在货物的出口过程中经常会遇到一些不必要的麻烦,那么,究竟什么是DDP和DDU,这两种贸易术语究 ...
- hdu4966 最小树形图+虚根
/* 辛辛苦苦调试半天, 过了样例,竟然没有ac!! 网上对比了ac代码,感觉添加一个虚根就能ac 但是想不明白为什么 */ /* 第二天想了下,知道了为什么wa:因为从等级0连到其他课程等级i的不止 ...
- GGS ERROR 160 Bad column index
最近由于一个数据库正在升级"改造",部分表结构做了一些调整,以致GoldenGate进程出现了ABENDED状态,下面分享一个因GoldenGate源端表结构发生变化后,引起Gol ...
- GGS WARNING 218 Aborted grouped transaction on
描述: 通过linux系统复制表emp1到windows系统,发生如下错误: GGS WARNING 218 Aborted grouped transaction on 解决办法 1 ...
- CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)
GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...
- 【时序分割】【未完成】Greedy Gaussian Segmentation of Multivariate Time Series(贪心高斯时序分割---GGS)
文章题目:Greedy Gaussian Segmentation of Multivariate Time Series(2018年4月) 作者:David Hallac: Peter Nystru ...
- 写了两个月的黑白棋对战程序,发现早就有了GGS,互联网上的游戏。
1.什么是ODK? ODK的全称是Othello Development Kit,这是一套用来开发能够连接至GGS(the Generic Game Server )的黑白棋的开发包.GGS是 ...
- hdu4966 最小树形图(最少辅导花费)
题意: 以一些科目,和辅导班,每个科目最终要求修到某个等级,可以花一定的钱在辅导班把某一科目修到某一等级,进入辅导班的时候会有一个限制,那就是达到他给出的科目和等级限制,比如a b c d ...
- 最小树形图-hdu4966
https://vjudge.net/contest/311526#problem/G 大意:给定n(50)门属性,每门属性有a[i](500)个级别,同时有M(2000)门课程,参加j号课程需要c属 ...
- hdu-4966 GGS-DDU 最小树形图
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4966 题意: 给你n门课的最高等级及m条升级方法,开始时你每门课的等级都在等级0,升级方法的5个参数代 ...
最新文章
- GitLab安装后修改IP/域名
- 基于libsvm的中文文本分类原型
- 关于mysql报 loopWaitCount 0, wait millis 60000 错误的解决办法
- python程序编译之后、找不到生成的pyc文件_为什么主要的可运行的Python脚本没有被编译为pyc文件,如模块?...
- b丅151组成的充电器电路_555时基电路制作简单的水流控制开关
- 计算机2013知识,2013年全国计算机一级考试B基本知识点五
- 华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...
- Oracle segment啥意思,关于oracle数据库段segment的小结
- kendo Grid json解析的问题
- SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑
- python爬取csdn用户头像
- 《利用python进行数据分析》读书笔记--第五章 pandas入门
- 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
- 基于SSM框架的酒店管理系统的设计与实现(附带源码、论文)
- 如何解决百度识图中图片被限制百度防盗链破解方法
- html链接屏蔽了,js屏蔽广告/屏蔽网站元素/屏蔽网站超链接
- 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb
- 中国电信官方提醒:7类短信诈骗须警惕
- python udp socket远程主机强迫关闭_Python 远程主机强迫关闭了一个现有的连接
- 使用echarts做气泡图
热门文章
- 教你如何用PQ魔法师调整硬盘分区大小【图解教程】
- CM311-3_YST_晨星MSO9385_2+8_安卓9.0_TTL免费升级固件
- 川大《计算机应用基础》第二次作业,川大16秋《计算机应用基础》第二次作业答案.pdf...
- 使用计算机时什么是死机,电脑死机的原因是什么,电脑死机怎么办? - 电脑死机的原因 电脑死机怎么办 - 安全专题...
- Linux常用命令大全(非常全!!!)
- 转动惯量到底是个什么物理量
- 阿里云主机配置HTTPS
- win10把用户中文名改为英文名
- VUE系列 ---- 网络模块axios(一 )
- 看完书就忘,怎么办?告诉你六种方法(转载)