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相关推荐

  1. DDP、DDU、DAP的区别你都知道吗?

    DDP和DDU这两种贸易术语在货物的进出口中也经常会被使用到,而很多出口商对这些贸易术语的了解并不深,因此在货物的出口过程中经常会遇到一些不必要的麻烦,那么,究竟什么是DDP和DDU,这两种贸易术语究 ...

  2. hdu4966 最小树形图+虚根

    /* 辛辛苦苦调试半天, 过了样例,竟然没有ac!! 网上对比了ac代码,感觉添加一个虚根就能ac 但是想不明白为什么 */ /* 第二天想了下,知道了为什么wa:因为从等级0连到其他课程等级i的不止 ...

  3. GGS ERROR 160 Bad column index

    最近由于一个数据库正在升级"改造",部分表结构做了一些调整,以致GoldenGate进程出现了ABENDED状态,下面分享一个因GoldenGate源端表结构发生变化后,引起Gol ...

  4. GGS WARNING 218 Aborted grouped transaction on

    描述: 通过linux系统复制表emp1到windows系统,发生如下错误:  GGS WARNING     218  Aborted grouped transaction on   解决办法 1 ...

  5. CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)

    GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...

  6. 【时序分割】【未完成】Greedy Gaussian Segmentation of Multivariate Time Series(贪心高斯时序分割---GGS)

    文章题目:Greedy Gaussian Segmentation of Multivariate Time Series(2018年4月) 作者:David Hallac: Peter Nystru ...

  7. 写了两个月的黑白棋对战程序,发现早就有了GGS,互联网上的游戏。

    1.什么是ODK?     ODK的全称是Othello Development Kit,这是一套用来开发能够连接至GGS(the Generic Game Server )的黑白棋的开发包.GGS是 ...

  8. hdu4966 最小树形图(最少辅导花费)

    题意:       以一些科目,和辅导班,每个科目最终要求修到某个等级,可以花一定的钱在辅导班把某一科目修到某一等级,进入辅导班的时候会有一个限制,那就是达到他给出的科目和等级限制,比如a b c d ...

  9. 最小树形图-hdu4966

    https://vjudge.net/contest/311526#problem/G 大意:给定n(50)门属性,每门属性有a[i](500)个级别,同时有M(2000)门课程,参加j号课程需要c属 ...

  10. hdu-4966 GGS-DDU 最小树形图

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4966 题意: 给你n门课的最高等级及m条升级方法,开始时你每门课的等级都在等级0,升级方法的5个参数代 ...

最新文章

  1. GitLab安装后修改IP/域名
  2. 基于libsvm的中文文本分类原型
  3. 关于mysql报 loopWaitCount 0, wait millis 60000 错误的解决办法
  4. python程序编译之后、找不到生成的pyc文件_为什么主要的可运行的Python脚本没有被编译为pyc文件,如模块?...
  5. b丅151组成的充电器电路_555时基电路制作简单的水流控制开关
  6. 计算机2013知识,2013年全国计算机一级考试B基本知识点五
  7. 华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...
  8. Oracle segment啥意思,关于oracle数据库段segment的小结
  9. kendo Grid json解析的问题
  10. SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑
  11. python爬取csdn用户头像
  12. 《利用python进行数据分析》读书笔记--第五章 pandas入门
  13. 使用C#调用P6 Primavera WebService(自建服务IntegrationAPI)
  14. 基于SSM框架的酒店管理系统的设计与实现(附带源码、论文)
  15. 如何解决百度识图中图片被限制百度防盗链破解方法
  16. html链接屏蔽了,js屏蔽广告/屏蔽网站元素/屏蔽网站超链接
  17. 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb
  18. 中国电信官方提醒:7类短信诈骗须警惕
  19. python udp socket远程主机强迫关闭_Python 远程主机强迫关闭了一个现有的连接
  20. 使用echarts做气泡图

热门文章

  1. 教你如何用PQ魔法师调整硬盘分区大小【图解教程】
  2. CM311-3_YST_晨星MSO9385_2+8_安卓9.0_TTL免费升级固件
  3. 川大《计算机应用基础》第二次作业,川大16秋《计算机应用基础》第二次作业答案.pdf...
  4. 使用计算机时什么是死机,电脑死机的原因是什么,电脑死机怎么办? - 电脑死机的原因 电脑死机怎么办 - 安全专题...
  5. Linux常用命令大全(非常全!!!)
  6. 转动惯量到底是个什么物理量
  7. 阿里云主机配置HTTPS
  8. win10把用户中文名改为英文名
  9. VUE系列 ---- 网络模块axios(一 )
  10. 看完书就忘,怎么办?告诉你六种方法(转载)