摘要:
#include #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair #define PLI pair #define PII pair #define SZ(x) ((int)x.size()) #define ull unsigned long long u... 阅读全文
摘要:
#include #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair #define PLI pair #define PII pair #define SZ(x) ((int)x.size()) #define ull unsigned long long u... 阅读全文
摘要:
F - Vasya and Array dp[ i ][ j ] 表示用了前 i 个数字并且最后一个数字是 j 的方案数。 dp[ i ][ j ] = sumdp [i - 1 ][ j ], 这样的话会有不合法的方案算进去,而且不合法的方案只有 i - len + 1 到 i 这一段相同才会 出 阅读全文
摘要:
B - Free Market 思路:这个题怎么说呢,迷惑性很大,题目里说了交换了两个集合的时候如果有相同元素不能交换,感觉如果没 这句话能很快写出来, 其实当交换的两个集合有重复元素的时候只要交换那些不重复的就好啦,这样就相当于能 交换两个有交的集合,那么对于两个集合S1, S2我们不需要去考虑有 阅读全文
摘要:
D - Bags and Coins 思路:我们可以这样构造,最大的那个肯定是作为以一个树根,所以我们只要找到一个序列a1 + a2 + a3 .... + ak 并且ak为 所有点中最大的那个,那么我们a1, a2, a3..., ak-1 作为单独的点,其他没有涉及到的点套在ak的里面。 现在问 阅读全文
摘要:
扫描线一边扫一边算期望,细节比较多。 阅读全文
摘要:
精度有点毒, 其实可以不用double, 因为A, B必定在其中一个在三角形上,可以投影到只有x,y轴的地方叉积比较。 阅读全文
摘要:
F - Yura and Developers 第一次知道单调栈搞出来的区间也能启发式合并。。。 你把它想想成一个树的形式, 可以发现确实可以启发式合并。 阅读全文
摘要:
B - Byteland Trip 题目大意:给你一个由'<' 和 '>'组成的串, 如果在'<' 只能前往编号比它小的任意点, 反之只能前往比它大的任意点,问你能遍历所有点 并且每个点只走一次终点在各个位置的方案数。 思路:感觉这种右能从左边跑到右边又跑回来的dp很难搞,如果我们确定一个终点, 如 阅读全文
摘要:
E - Preorder Test 思路:想到二分答案了之后就不难啦, 对于每个答案用树形dp取check, 如果二分的值是val, dp[ i ]表示 i 这棵子树答案不低于val的可以访问的 最多节点, 第二次dfs求出以每个点为根的答案。 阅读全文