摘要:
https://nanti.jisuanke.com/t/31460 tree[rt].ans = tree[rt include define lson l,m,rt 1; build(lson); build(rson); pushup(rt); } void update(int p, ll 阅读全文
摘要:
http://codeforces.com/gym/101873 C 多开一维状态记录时间,d[i][t] = 经过时间t走到节点i的最小花费 每一个状态分别向“原地等待”与“前往下一个节点”转移 代码: include include include include include using n 阅读全文
摘要:
http://codeforces.com/gym/101372 D push1[i][k]:所有操作1总共要让节点i下推多少系数k push2[i][k]:所有操作2总共要让节点i上推多少系数k sum1[i][k]:所有操作1节点i要计算多少系数k sum2[i][k]:所有操作2节点i要计算多 阅读全文
摘要:
http://codeforces.com/gym/101873 F 先对原图跑一遍匈牙利得到原始最大匹配,再遍历每个出度 1的点,考虑若新加入点,能否找到增广路,若可行则答案对应增加 代码: include include include include include include using 阅读全文
摘要:
http://codeforces.com/gym/101397 B : i为前一个行动的状态,0 switch、1 type,j为当前状态layout的编号,k 是已键入的字符数量。 遍历k,对每个k遍历j: 1..n dp[0][j % n + 1][k] = min(dp[0][j % n + 阅读全文
摘要:
http://codeforces.com/gym/101889 I 先跑一遍最小生成树,把经过的边和答案记录下来 对于每个询问的边,显然如果处于MST中,答案不变 如果不在MST中,假设这条边连上了,那么就会和原本的MST形成环,删除这个环中权值最大的边就是答案 处理的时候,可以用LCA维护MST 阅读全文
摘要:
http://codeforces.com/gym/101889 E 与一般数位dp不同,保存的是能否满足条件,而非记录方案数 代码: include include include typedef long long ll; int len, n, ans[1005], dp[1005][1005 阅读全文
摘要:
https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了。 一个房间装满则把权值标记为INF,模拟一遍,注意考虑 一个月内装满多个房间 和 装满所有房间后不用再购买 的情况。 代码: include incl 阅读全文
摘要:
https://nanti.jisuanke.com/t/30994 把每道题的前置条件用二进制压缩,然后dp枚举所有可能状态,再枚举该状态是从哪一个节点转移来的,符合前置条件则更新。 代码: include include include using namespace std; typedef 阅读全文
摘要:
https://nanti.jisuanke.com/t/31001 有K次机会可以让一条边的权值变为0,求最短路。 在存储单源最短路的数组上多开一维状态,d[i][k]表示走到序号i的点,且让k条边权值为0时的最短路。 对于每个待更新的点,尝试不置零此边的状态和置零此边的状态,分别压入优先队列去更 阅读全文