摘要:
题意:给一张图,现在要删去所有的边,删去一个点的所有入边和所有出边都有其对应$W_{i+}$和$W_{i }$.求删去该图的最小花费,并输出解 分析:简而言之就是用最小权值的点集去覆盖所有的边. 模型转化到网络流的建图中,将图中的边视作点,并将其一拆为二,出点作为X部,入点作为Y部,若有边(u,v) 阅读全文
摘要:
题意:N M个格点,K个位置会有敌人.每行每列都有一门炮,能打掉这一行(列)上所有的敌人.每门炮都有其使用价值.总花费是所有使用炮的权值的乘积.求最小的总花费. 若每门炮的权值都是1,就是求最小点覆盖的问题,参考:http://poj.org/problem?id=3041 将行视作X部,列视作Y部 阅读全文
摘要:
要选出一些点,这些点之间没有相邻边且要求权值之和最大,求这个权值 分析:二分图带权最大独立集. 用最大流最小割定理求解.其建图思路是:将所有格点编号,奇数视作X部,偶数视作Y部,建立源点S和汇点T, S向X部的点建边,Y部向T建边,容量为该点权值. 相邻的一对点(肯定是一奇一偶),由X中的点向Y中的 阅读全文
摘要:
题意:一棵树上有m个红色结点,树的边有权值。q次查询,每次给出k个点,每次查询有且只有一次机会将n个点中任意一个点染红,令k个点中距离红色祖先距离最大的那个点的距离最小化。q次查询相互独立。 分析:数据量很... 最大值最小化,二分搜答案。将ST表求lca的dfs函数加一点东西,求出每个点到其最近红 阅读全文
摘要:
题意:有n(n更详细的说明:https://blog.csdn.net/sdj222555/article/details/7797257 分析:因为n很小,枚举人数是一种可行的做法,网络流求解。具体的建图方法是: 1.从源点向每个选手i建一条容量为val[i]的弧; 2.将每场比赛视作点,由每场比 阅读全文
摘要:
```
#客户端
import socket
import threading
import tkinter
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 5550)) flag = False
class Connection: def __init__(self)... 阅读全文
摘要:
很明显的区间K覆盖模型,用费用流求解.只是这题N可达1e5,需要将点离散化. 建模方式步骤: 1.对权值为w的区间[u,v],加边id(u) id(v+1),容量为1,费用为 w; 2.对所有相邻的点加边id(i) id(i+1),容量为正无穷,费用为0; 3.建立源点汇点,由源点s向最左侧的点加边 阅读全文
摘要:
树链剖分若不会的话可自行学习一下. 前两种操作是线性变换,模$2^{64}$可将线段树全部用unsigned long long 保存,另其自然溢出. 而取反操作比较不能直接处理,因为其模$2^{64}$的特殊性,可将其转化为线性变换. 显然 $$ x\equiv (2^{64} 1) x (mod 阅读全文
摘要:
题意:求一个图的最大权闭合子图 教科书:https://blog.csdn.net/can919/article/details/77603353 最小割模型的应用,源点向正权点建容量为该权值的弧;负权点向汇点建容量为该权值绝对值的弧;有偏序关系的点对之间建容量为正无穷的弧. 跑出最大流,根据最大流 阅读全文
摘要:
线段树节点维护区间最小值,查找时优先从左侧的区间寻找. 每一次循环都在树中不停寻找第一个小于等于当前持有数的值,然后抹去,直到找不到为止. include include include include define lson rt 1; build(Lson); build(Rson); push 阅读全文