状压
ssllyr
锦瑟无端五十弦,一弦一柱思华年。
展开
-
【Atcoder abc246_f】Typewriter【状态压缩】【组合数学,容斥】
计数题,DP状态都存不下,考虑组合数学。先用单个字符串手摸一下,发现一个长度为k的字符串打出L个字符最多有kL种。答案显然不可能是简单相加。于是我又想到了去重,但是不是一个字符串直接去重肯定是不行。那么数学方法又有什么能达到“求并集,去重”的效果呢?n个集合的容斥原理公式参考百度就非常清楚了,发现是偶数个集合的交集前面就是减号,反之则为加号。注意到n的值特别小,仿佛跟状压DP的一样,于是考虑存储所有字母存在性的状态,一共226完全可以枚举和存储。原创 2023-08-17 20:28:58 · 89 阅读 · 0 评论 -
【洛谷P1225】黑白棋游戏【DFS】【状压】
BFS原创 2022-08-05 22:00:48 · 724 阅读 · 0 评论 -
【8.4gzoj T4】解药毒药【状压BFS】
BFS原创 2022-08-04 19:41:52 · 99 阅读 · 0 评论 -
【8.17模拟赛T2】【洛谷P7296】Uddered but not Herd G【状压DP】
题目链接:https://www.luogu.com.cn/problem/P7296分析上代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cstdlib>using namespace std;int n;int f[1<<20],a[100001],b[100001],c[1001][1001].原创 2021-08-18 18:41:18 · 131 阅读 · 0 评论 -
【ssl1382】车【状压DP】
Description在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。Input第一行为棋盘的大小n第二行为障碍的数量m第三行到第m+3为m个障碍Output总数Sample Input421 12 2Sample Output14分析状压DP还是比较难理解的知识点,很难检查,做的心态有点崩。状态的表示是基于2进制的,用位运算去计算枚举和转移。p数组存的是2的n次方,二进制中的类似100…0的数。f数组就原创 2020-08-19 15:39:30 · 203 阅读 · 1 评论 -
【洛谷P1433】吃奶酪【状压DP】
题目描述房间里放着 n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0) 点处。输入格式第一行有一个整数,表示奶酪的数量 n。第 2 到第 (n + 1) 行,每行两个实数,第 (i + 1) 行的实数分别表示第 i 块奶酪的横纵坐标 x_i, y_i输出格式输出一行一个实数,表示要跑的最少距离,保留 2 位小数。输入输出样例输入 #141 11 -1-1 1-1 -1输出 #17.41数据规模与约定对于全部的测试点,保证 n<=15原创 2020-08-20 15:42:51 · 193 阅读 · 0 评论 -
【洛谷P1052】过河【状压DP】
题目描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,…,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥原创 2020-08-21 08:07:04 · 445 阅读 · 1 评论 -
【洛谷P2622】关灯问题II【状压DP】
对于100%数据 n<=10,m<=100原题&样例分析看数据先,可以知道n很小,也就是很像状压DP的数据范围。所以用状压DP做法。然后搞清楚题目中的三种操作:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管;如果为-1的话,如果这盏灯是关的,那么把它打开,否则也不管;如果是0,无论这灯是否开,都不管。对于操作1和操作2,重点在于判断灯是否开着。所以要用到**&操作**按位与操作,1&0=0,1&1=1,0&0=0;两边.原创 2020-08-20 19:57:47 · 173 阅读 · 0 评论 -
【洛谷P1879】[USACO06NOV]Corn Fields G【状压DP】
题目描述农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案)输入格式第一行:两个整数M原创 2020-08-21 15:11:35 · 123 阅读 · 0 评论 -
【8.14模拟赛.7218】【洛谷P7074】 [USACO21OPEN] Maze Tac Toe S【DFS】
题目链接:洛谷分析一开始调了好久aaa显然是DFS,看看怎么处理。首先这个是以三个字符作为一个字符,最边上一列肯定是‘#’,所以后面我们全部都*3+1就可以。这题用三进制状压去存储每一个棋盘状态,如果这个状态是搜索过的就直接跳过。用1,2分别代表M,O,去填棋盘,然后每次都判断是否胜利,用win数组记录胜利的棋盘,以防下次重复统计。判断胜利:棋盘的胜利状态只有16种。把状态倒出来之后,判断就好。上代码#include<iostream>#include<cstdio>原创 2021-08-17 14:44:17 · 221 阅读 · 0 评论