摘要:
很好的一道树形dp 具体哪些点选黑选白我们肯定是不知道的 但是题目最后要求的是求贡献 所以只要我们能算出贡献就好了 因为答案是线性的 简而言之就是 ∑每个边的贡献=总贡献 考虑一条边的贡献 边一侧的黑节点数另一侧的黑节点数边权+一侧的白节点数另一侧的白节点数边权 设dp[u,i]表示u子树选i个黑点 阅读全文
摘要:
这个题知道是最大流 但是比赛的时候就是不知道怎么建图 #include <bits/stdc++.h> using namespace std; const int N = 1500, M = 10010, INF = 1e9; int n, m, S, T; struct Edge { int t 阅读全文
摘要:
不消说 第一个问就是求最长不下降子序列 这个题的重点是第二个问 Dilworth定理:偏序集的最少反链划分数等于最长链的长度 简而言之就是要求最长上升子序列(严格上升的) 点击查看代码 #include<cstdio> #include<cstring> #include<algorithm> us 阅读全文
摘要:
没啥说的枚举 这里用到stl里面的set 来保存每条直线的斜率和截距 点击查看代码 #include<bits/stdc++.h> using namespace std; struct point{ int x; //横坐标 int y; //纵坐标 }; int main(){ vector<p 阅读全文
摘要:
今天WC的时候想起之前打比赛遇到一道挺有趣的题目 最后才做出来的 我们从上帝视角(就是站的很高很高)看士兵过河 每个士兵就好比是一个蚂蚁 两个蚂蚁相遇分别转向 就好比是两个蚂蚁一直直线行走 这样一个蚂蚁的时间就很好算 我们就能算出 所有蚂蚁的时间 但是a蚂蚁算出来的时间不一定是a蚂蚁走出河岸的时间 阅读全文