正解:状压 解题报告: 先,放下传送门QwQ 说真的我jio得这题不管是思路还是实现上,都还是有一定难度的?然后就看到神仙hl博客里一句"太水了不讲了"就过掉了,,,好的趴太强辽QAQ 但是这题我开始是真的没想到状压,,,知道状压之后实现代码实现了好久,,,看来灵巧是真的菜趴QAQ 然后就讲下这题QwQ 首先这题,一眼bfs板子题嘛,大体的框架应该都还是想得出来的 但是如果!你和sd灵巧想到了一个路子上!直接存的矩阵!你就可以获得10pts的好成绩,,,显然会MLE的啊喂! 然后就考虑…
洛谷P2704:https://www.luogu.org/problemnew/show/P2704 思路 这道题一开始以为是什么基于状压的高端算法 没想到只是一道加了一行状态判断的状压DP而已 与普通状压并无多大区别 详细见代码 代码 #include<iostream> using namespace std; #define maxn 1010 ][maxn][maxn],num[maxn],st[maxn],map[]; int n,m,ans,state; int get(int…
洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识点参考: https://blog.csdn.net/fox64194167/article/details/20692645 思路 看数据识算法系列 我们用f[i][j][k]来表示第i行为状态j 并且前i行已经放了k个国王 对于状态我们可以先预处理出来 因为每个格子有放和不放两种选择 那么我们可…
UOJ和洛谷上能A,bzoj 8ms即WA,现在也不是知道为啥--因为我太弱了 先看数据范围发现d非常小,自然想到了状压. 所以先假装都是只能跑两种车的,这显然就是个2-SAT问题了:对于x场没有hx的,直接跳过:对于y场没有hy的,连(x,x'),表示x不能选:对于都有的,连接(x,y),表示选了x必须选y,(y',x'),表示不选y的话也不能选x. 注意! 1 连(x,x')的时候不要直接add(i,i+n)!这里方便起见写成(x,x'),实际上应该是(x,不是x的另一个) 2 (x,y)(…
题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j]为1,那么当这盏灯开了的时候,把它关上,否则不管:如果为-1的话,如果这盏灯是关的,那么把它打开,否则也不管:如果是0,无论这灯是否开,都不管. 现在这些灯都是开的,给出所有开关对所有灯的控制效果,求问最少要按几下按钮才能全部关掉. 输入格式: 前两行两个数,n m 接下来m行,每行n个数,a[i][j]表示第i个开关对第j…
洛谷P1879:https://www.luogu.org/problemnew/show/P1879 思路 把题目翻译成人话 在n*m的棋盘 每个格子不是0就是1 1表示可以种 0表示不能种 相邻的格子不能同时种 求总方案数 把每行看成一个n位的2进制数 预处理出每行的状态后 进行DP即可 PS:在处理每行的初始状态时 将其取反后更好操作 代码 #include<iostream> #include<cstdio> using namespace std; #define mod…
洛谷题面传送门 首先显然题目等价于求有多少个长度 \(n-1\) 的序列 \(b\) 满足 \(a_i\le b_i\le a_{i+1}\),满足 \(b_1\oplus b_2\oplus\cdots\oplus b_{n-1}=a_1\oplus a_2\oplus\cdots\oplus a_n=S\). 考虑入手解决这个问题,注意到 \(n\) 数据范围很小,只有 \(18\),而值域非常大,高达 \(2^{60}\),因此可以考虑拆位后 \(2^n\) 枚举个什么状态后计算.但是究竟…
题目描述 某乡有n个村庄(1 输入格式: 村庄数n和各村之间的路程(均是整数). 输出格式: 最短的路程. 输入样例: 3 0 2 1 1 0 2 2 1 0 输出样例 3 说明 输入解释 3 {村庄数} 0 2 1 {村庄1到各村的路程} 1 0 2 {村庄2到各村的路程} 2 1 0 {村庄3到各村的路程} 题目分析 又是一道状压DP经典 我们以一串二进制数表示村庄的集合(状态) 1表示该村庄访问过,0表示没有 定义dp[i][j]表示 从起点到第j号点 且到达时状态恰好为i的最短路 则最后…
传送门 感觉是一道经典的状压dp,随便写了一发卡了卡常数开了个O(2)" role="presentation" style="position: relative;">O(2)O(2)优化水过... 我直接用dp[i][j]" role="presentation" style="position: relative;">dp[i][j]dp[i][j]表示当前在第i个点,现在点的选取状况是j…
题面 传送门 题解 首先要解决一个问题,就是怎么判断一个点是否在多边形内部 从这个点向某一个方向做一条射线,如果这条射线和多边形的交点为奇数说明在多边形内,否则在多边形外 然而有一些特殊情况,比方说一个多边形\((0,0),(2,0),(2,1),(1,1),(1,2)\),如果一个点\((1,1)\)向上做射线和这个多边形有两个交点,然而这个点还是在多边形内部的 那么我们可以通过加一些\(eps\)之类的来避免这种情况,具体可以看代码 把所有的豆子状压,枚举起点\((x,y)\),设\(f_{…