摘要:
题意:给定简单无向图,求一个最小的边集使得这些点是边双,输出方案。n <= 14 解:考虑一个边双肯定是一条一条的链拼起来的。于是每次枚举一条链加上去就行了。 设fs表示点集s形成边双的最小边数。linki,j,s表示点集s能否形成一个i - j的链。link2x,s表示点x和点集s是否直接相连。 阅读全文
摘要:
题意:交互,有一个10次多项式,你可以询问50次当x为某个取值时多项式的值。你需要回答这个多项式的零点。 解:询问11个数然后高斯消元解方程得出系数。然后枚举定义域看有无0点。 1 #include <bits/stdc++.h> 2 3 const int N = 20, MO = 1000003 阅读全文
摘要:
解:m = 0的部分分,直接模拟。有and 0的部分分,直接模拟。<=1000的部分分,枚举攻击力之后模拟。所有操作相同的部分分,可以合并成只有一个操作。然后枚举m或者逐位贪心。 正解是逐位贪心,内层跑一遍1~n个操作。然后后面这个1~n其实可以优化,在外层用00000...0和11111...1来 阅读全文
摘要:
CF1155D - Beautiful Array 题意:给你一个序列和x,你可以选择任意一个子串(可以为空)乘上x,使得得到的序列最大子串和最大。求这个最大值。30w,2s。 解:设fi,0/1/2表示序列前i个数还没乘x/正在乘x/乘完了x的最大后缀和。答案就是这个DP数组的最大值。 1 #in 阅读全文
摘要:
解:首先看这个纯循环到底是什么玩意..... 经过一番打表,发现纯循环小数就是分母与进制互质的既约分数。 1 #include <bits/stdc++.h> 2 3 std::bitset<1001> vis; 4 5 inline bool check(int x, int y) { /// x 阅读全文
摘要:
解:这个题一脸不可做... 比1小的怎么办啊,好像没用,扔了吧。 先看部分分,n = 2简单,我会分类讨论!n = 4简单,我会搜索!n = 10,我会剪枝! k = 1怎么办,好像选的那些越大越好啊,那么我就排序之后枚举后缀! k = INF怎么办啊,好像最优策略是从小到大一个一个连通啊,那直接模 阅读全文
摘要:
题意:有一个1001 * n的矩形,每个位置有q的概率为1。求紧贴下边界的最大的全1子矩形面积恰为k的概率。n <= 1e9,k <= 1000。 解:只需考虑每一列最下面一个0的位置。 首先有个n = 1的部分分,答案显然就是qk(1-q)。 中间还有些部分分,什么打表啊笛卡尔树上DP啊...感觉 阅读全文
摘要:
解:首先,n<=20的直接暴力建图然后状压哈密顿回路,相信大家都会。固定1为起点,fi,s表示结尾为i点,状态为s。每次遍历i的出边转移,最后遍历1的出边统计答案。n22n。 然后就是正经题解了。先考虑K = 1的时候。对于一个子树,我们发现它只有三个地方有出边,左右上。而除此之外内部怎么连是没关系 阅读全文
摘要:
复习一波最小割... 理论知识: 参考资料。 BZOJ1934 善意的投票 题意:n个人分别喜欢睡/不睡午觉。改变一个人的喜好要花费1代价。有m对朋友,每对朋友的喜好不同会产生1代价。求最小代价。 解:经典题了..... 每个人向s,t连边,求最小割。如果割掉某个边就代表选哪边。朋友之间连双向边,代 阅读全文
摘要:
解:观察一波部分分。 首先小数据直接暴力4n,然后考虑背包。设f[i][a][b][c]表示前i个学校中前三位导师分别有多少人,第四位导师可以直接推出来。 然后暴力枚举每一个人放在哪进行背包。 进一步发现,因为限制条件全是跟行列有关的,所以我们设f[i][a][b]表示前i个学校,第一列和第一行分别 阅读全文