2026/3/2 17:24:19
网站建设
项目流程
网站推广策划书,中文网站建设小组,python做网站项目,青岛外贸推广F. Guards In The Storehouse
轮廓线dp 状压 不太懂为什么叫轮廓线#xff0c;总之就是多行#xff0c;有一定规则#xff0c;求和方的涂色方案数#xff0c;一般会用一个maskmaskmask记录上面已经dpdpdp过的行的状态#xff0c;据此判断转移是否合法
对于本题#xff…F. Guards In The Storehouse轮廓线dp 状压不太懂为什么叫轮廓线总之就是多行有一定规则求和方的涂色方案数一般会用一个m a s k maskmask记录上面已经d p dpdp过的行的状态据此判断转移是否合法对于本题就是可以用一个m a s k maskmask维护有视野的列扫过每一行在用一个变量维护当前行到这目前有无向右的视野如果当前位置有视野则放不放哨兵都可以否则必须放哨兵如果是障碍则不能放哨兵且会阻断视野。至多一个位置没有视野用一个布尔记录有无没有视野的位置最多允许一个没有视野的位置可以不放哨兵。状态维度有点多考虑压成l o n g l o n g long longlonglong用哈希表记忆化理论上也可以用一个一维数组并用状态的多个维度手动寻址但那需要精细的寻址过程让生成的地址范围不超过申请的数组大小相比之下哈希表更方便G. Rudolf and CodeVid-23状压 最短路无法dp因为这个转移不具有无后效性已经治好的并可能因为新的药物的副作用有复发但依然存在转移考虑建图跑最短路。每个患病状态用上每一种药都能产生一个转移建有向边从初始患病状态开始求到达不患病的最短路D. Same Count One构造 转换维度考虑行的构造不好构注意到每次换的都是同一列的两个列之间是不会互相影响的于是可以考虑逐列交换。最终每一行都应该有t o t / n tot/ntot/n个1 11因此每一列我们显然都可以把1 11个数超过这个值的行的1和个数小于这个值的行的0交换假设这两种的行分别x , y x,yx,y个那么这一列能进行的交换次数就是min ( x , y ) \min(x,y)min(x,y)方案就是每次从这两个类里各选一个配对。同时需要更新每一行的1 11个数如果t o t / n tot/ntot/n是整数这个方案一定能构造到每一行都相等并且操作次数是最优的因为我们每次交换都没有走回头路也就是没有无效操作。P10723 [GESP202406 七级] 黑白翻转拓扑排序 树相当于把一颗树断开成多个连通块现在要修复回一个连通块问最少恢复多少个点那显然目前已有的连通块之间的点都要修复最外侧的点不和另一个连通块相连的点不用恢复。所以计算这样的点有多少个即可实际上就是从叶子开始拓扑排序只有白色的才入队统计入队/出队一共多少个点就是外部无影响的点数