摘要:
树形DP 求树的重心,即选择一个结点删去,使得分出的 若干棵树的结点数 的最大值最小 阅读全文
摘要:
设dp[i][j]表示以j开头的,长度为i的排列的数目。 从字符串的后面到前面DP就得出答案了。 #include #include #include #include using namespace std; const int MAXN=1010; const int MOD=1000000007; char str[MAXN]; int dp[MAXN][MAXN]; int main()... 阅读全文
摘要:
A:约瑟夫环 套公式 B:线性筛素数 C:投骰子 概率DP F:有权无向图的生成树(边最大值和最小值只差最小) 直接kruskal G:状压BFS或者双向BFS H:模拟题 I:几何题 J:高斯消元 阅读全文
摘要:
A:二分答案 如果中位数比目前的大就right=mid-1 else left=mid+1 C!:几何 G:优先队列贪心 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<LL, int> 阅读全文
摘要:
A:正着DFS一次处理出每个节点有多少个优先级比他低的(包括自己)作为值v[i] 求A B 再反着DFS求优先级比自己高的求C #include <bits/stdc++.h> #include <cstring> #include <iostream> #include <algorithm> # 阅读全文
摘要:
A!:UESTC1752 B!:找区间内L到R之间内的数的个数 权值分块加莫队 C!:给你一个哈斯图 去掉其中的几条边 要求输出字典序最大的拓扑排序:线段树模拟拓扑排序 D!:要求你找到最短路树并输出 E:SG函数 F:求出偶数和奇数的个数套公式 G:要求你从两个set里找出符合要求两个数 找规律 阅读全文
摘要:
给你一棵有向树,需要选定一个点为capital,满足翻转边数最小 思路:先求出1为capital 的答案,然后向下更新孩子节点 dp[i]=dp[i-1]+judge(i); #include<iostream> #include<cstdio> #include<cstring> #include 阅读全文
摘要:
UVa 10328 - Coin Toss 题意:给你一个硬币,抛掷n次,问出现连续至少k个正面向上的情况有多少种。 转换成抛N次至多连续有N个减去抛N次至多连续有K-1个1的情况 dp[i][k]表示抛i次至多连续有k个1的情况数; 转移方程:i<=k的时候有dp[i][k]=dp[i-1][k] 阅读全文
摘要:
A D:用前面的H去消去后面的K 然后求最长连续的M F:在每一列/行里面求最大的数然后组成最大的和ans[]里的比求出最大的 L:并查集 J:DP背锅题 01背包 先求出M种里每种的size和last然后先last最大的放在最后 然后背包DP X[i]表示有i人在一个飞机上时的最小last 然后i 阅读全文