整理的算法模板合集: ACM模板


前面好几段又在讲故事…

题目大意:
  a[i]表示对手的每个队伍战斗力
  p[i]表示打败对手后获得的分数
  b[i]表示我方第一种人的战斗力
  c[i]表示我方第二种人的战斗力
  定义我方一组选手的战斗力为b[i]+c[j],第一种选手与第二种选手某种顺序两两组队后,与对方进行pk,共有 n!n!n! 种pk顺序,求最大期望×n

期望就是加权平均,期望*n实际上就是所有方案中的最大权值,也就是二分图最大加权匹配

所以这是一个板子题,但是数据卡O(n4)O(n^4)O(n4)的dfs版本的KM算法并且卡一切费用流算法,所以我们要用bfs版本的O(n3)O(n^3)O(n3)的KM板子才能过。

typedef long long ll;
typedef unsigned long long ull;//卡精度
typedef pair<int,int> PII;
const int N = 607, M = 5e3 +7, maxn = 1007;
const int mod = 1e9+7;
const ll INF = 1e15+7;
ll w[N][N];//边权
ll la[N], lb[N];//左、右部点的顶标
bool va[N], vb[N];//访问标记,是否在交错树中
int match[N];//右部点匹配的左部点(一个只能匹配一个嘛)
int n;
ll delta, upd[N];
int p[N];
ll c[N];void bfs(int x)
{int a, y = 0, y1 = 0;for(int i = 1; i <= n; ++ i)p[i] = 0, c[i] = INF;match[y] = x;do{a = match[y], delta = INF, vb[y] = true;for(int b = 1; b <= n; ++ b){if(!vb[b]){if(c[b] > la[a] + lb[b] - w[a][b])c[b] = la[a] + lb[b] - w[a][b], p[b] = y;if(c[b] < delta)//Δ还是取最小的delta = c[b], y1 = b;}}for(int b = 0; b <= n; ++ b)if(vb[b])la[match[b]] -= delta, lb[b] += delta;else c[b] -= delta;y = y1;}while(match[y]);while(y)match[y] = match[p[y]], y = p[y];
}ll KM()
{for(int i = 1; i <= n; ++ i)match[i] = la[i] = lb[i] = 0;for(int i = 1; i <= n; ++ i){for(int j = 1; j <= n; ++ j)vb[j] = false;bfs(i);}ll res = 0;for(int y = 1; y <= n; ++ y)res += w[match[y]][y];return res;
}ll A[N], B[N], C[N], P[N];int main()
{scanf("%d", &n);for(int i = 1; i <= n; ++ i)scanf("%lld", &A[i]);for(int i = 1; i <= n; ++ i)scanf("%lld", &P[i]);for(int i = 1; i <= n; ++ i)scanf("%lld", &B[i]);for(int i = 1; i <= n; ++ i)scanf("%lld", &C[i]);for(int i = 1; i <= n; ++ i)for(int j = 1; j <= n; ++ j){ll sum = 0;for(int k = 1; k <= n; ++ k){if(A[k] < B[i] + C[j])sum += P[k];}w[i][j] = sum;}printf("%lld\n", KM());return 0;
}

2019 ICPC Asia Nanjing Regional J.Spy(KM算法O(n^3)板子题)相关推荐

  1. 2019 ICPC Asia Nanjing Regional

    题号 题目 难度 知识点 A A Hard Problem 签到题 思维题 B Chessboard C Digital Path 签到题 dfs+记忆化搜索 D Holes E Observatio ...

  2. 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)

    整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...

  3. The 2019 ICPC Asia Nanjing Regional Contest(A、C、K)

    A. A Hard Problem 在全排列1到n中每k个数作为一段,每段必存在u,v使得u是v的一个因子,考虑每段最短是多长,直接倒着考虑,假如n=6,最后肯定是要3...6才能符合题意,假如n=7 ...

  4. 2019 ICPC Asia Nanjing Regional I. Space Station题解

    文章目录 [题目链接] [前言] [题目大意] [解题思路] 一.优先暴力 二.记忆化 三.unordered_map以及思维优化 四.乘法逆元(拓展内容) [后记] [题目链接] https://n ...

  5. 2019 ICPC Asia Nanjing Regional K.Triangle(求一个能将三角形分成两个面积相同的线段、计算几何)

    整理的算法模板合集: ACM模板 题目传送门 用板子判断点是否在线段上即可.紫书的板子有点问题,判断是否在线段上的时候应该是<=才能A,书上是 < - 对于第二问我们先特判一下特殊的情况, ...

  6. 2019 ICPC Asia Yinchuan Regional(9 / 13)

    2019 ICPC Asia Yinchuan Regional A - Girls Band Party(分组背包) 每个物品有两个标签,名字,颜色,当名字是设置为奖赏时会对整体加上0.1 的贡献, ...

  7. The 2019 ICPC Asia Shanghai Regional Contest

    The 2019 ICPC Asia Shanghai Regional Contest 题号 题目 知识点 A Mr. Panda and Dominoes B Prefix Code C Maze ...

  8. 2019 ICPC Asia Nanchang Regional

    2019 ICPC Asia Nanchang Regional C. And and Pair E. Bob's Problem 链接:https://www.jisuanke.com/contes ...

  9. 2019 ICPC Asia Nanchang Regional And and Pair 组合数学

    传送门 文章目录 题意: 思路: 题意: 给一个长度为nnn的二进制,求满足如下条件的j,ij,ij,i对数: (1)0<=j<=i<=n(1)0<=j<=i<=n ...

最新文章

  1. C#的访问修饰符Protected
  2. “手机编码速度大 PK”,你玩程序猿撸月饼了么?
  3. python自动化办公兼职-python自动化办公?学这些就够用了
  4. Three.js中自定义控制几何体的点和面的属性
  5. string是线程安全的么_Java-21 多线程 - 是阿凯啊
  6. ajax option请求后无post请求_ThingJS:一种浏览器、服务器和技术的新组合方法——Ajax...
  7. 网络——获取Web数
  8. android 图片操作,Android图片操作(Bitmap)
  9. 组策略里更改更新和设置客户端首页
  10. day31(GIL锁)
  11. 更改图书信息c语言编码,图书管理系统C语言实现源代码.pdf
  12. 深入浅出 NXLog (一)
  13. JavaScript 如何导出 Excel
  14. android怎么安装CA证书及代理抓包
  15. 20140711 loop-II 调和数列
  16. QT项目设计:基于Linux系统的车载系统,地图、音视频播放、天气显示、优美界面 详细教程
  17. MySQL InnoDB Cluster部署
  18. 03-核心类库-04-多线程笔记
  19. 这些学校招收!!!应用统计学专硕(025200),你知道吗?
  20. 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题第十套A模块解析

热门文章

  1. 数字图像基本处理算法小结
  2. 实战:使用Mask-RCNN的停车位检测
  3. 几张图看懂列式存储(转)
  4. 两年AI研究经验(教训)总结,进来看看吧!
  5. 收购Deis之后,微软首次动作发布了Draft
  6. 【springmvc+mybatis项目实战】杰信商贸-16.新增从表货物信息
  7. dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type
  8. (三)AJAX基本介绍和简单实例03
  9. centos搭建kvm
  10. Linux RAR 安装和使用详细说明