ICode9

精准搜索请尝试: 精确搜索
  • 洛谷P2831 [NOIP2016 提高组] 愤怒的小鸟——状压dp、预处理2021-10-16 17:04:53

    题目链接 题目:愤怒的小鸟 思路过程 数据范围非常小,\(n\leq 18\),可以考虑指数级时间复杂度的算法。 借鉴曼哈顿路径的状压dp算法,可以设计出状态:\(f(i)\)表示状态为\(i\)时用鸟最小数。 状态转移很好想,预处理一下可以做到\(O(n^2)\)转移 时间复杂度\(O(2^n n^2)\) 完整代码 #include

  • CF1598F - RBS (状压dp)2021-10-13 23:31:42

    题目 给\(n\)个括号序列,可以对这些序列任意排列,然后连接成一整个括号序列。求一个排列,使得连接成的括号序列的真前缀是合法括号序列的个数最多。\(n\le 20\) 题解 观察性质,发现括号序列的balance一旦小于0,后面无论是什么都不会使得当前前缀的合法。合法括号序列的前缀的个数即bala

  • 2021-10-04(单元最短路建图,状压dp)2021-10-04 23:30:11

    20. 最优乘车 H 城是一个旅游胜地,每年都有成千上万的人前来观光。 为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴士线路。 每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。 一名旅客最近到 H 城旅游,他很想去

  • 作业【状压DP】2021-09-27 17:02:12

    >Link luogu U137979 >Description 对于 100% 的数据, 1 ≤ b i ≤ n

  • 【动态规划专练-状压DP】CodeForces 580D (1800)2021-09-26 12:03:05

    D. Kefa and Dishes 范围比较小可以用二进制暴力枚举 限制条件:前后相邻的拿的物品有贡献,所以状态要记录最后一个拿的物品,记录所有物品的状态,暴力枚举物品状态,枚举前一个后一个物品 点击查看代码 #include <iostream> #include <map> #include <vector> #include <algorithm> #inc

  • E - Moat(状压&DSU)2021-09-22 13:31:53

    E - Moat(状压&DSU) 考虑每个位置是在区域内还是区域外,每个合法答案与区域的分布情况一一对应。 先状压,然后所有包含给定输入的情况,先将 4 × 4 4\times

  • 状压dp专题2021-09-08 18:02:07

    状压dp 将状态表示为一个或多个n进制数,通过数位的运算判断情况之间是否合法,从而完成状态的转移。 矩阵内状压dp一般模板 伪代码 将每一行的状态用一个二进制数表示 a{i}.s存储第i中合法情况的二进制数 f{i}{j}表示第i行状态为第j种状态时的答案(最大值or方案数) for(int i=1;i<=n;++

  • F. Sports Betting 题解(状压dp+容斥)2021-09-06 14:33:18

    题目链接 题目思路 数据范围很小,那么可以想到状压dp 设\(dp[i]\)表示胜利者的集合为\(i\)的概率,\(cal(i)\)为\(i\)的二进制数量 那么最后的答案为\(\large\sum_{i=0}^{i=(1<<n)-1}dp[i]*cal(i)\) 重点在于如何计算\(dp[i]\) 我们把\(n\)个元素分为两个集合,一个为\(A\)集合,一个为\(

  • P1278 单词游戏2021-09-03 16:34:38

    P1278 单词游戏 一道比较基础的状压题,看到题解很多人都打的记搜,小蒟蒻来发个状压dp。 由于不能多次使用同一个单词,对于每个单词只有0(不选)1(选)两种情况,并且n只有16显然是状压了。 预处理 对于每个单词我们只关心首尾和长度,所以就记下每个单词的首尾和长度。 设计状态 这题最简单的点

  • 关于状压DP枚举子集的方法与理解2021-08-30 01:03:05

    我们现在要枚举状压集合 \(S\) 的子集,代码实现: for (int S1=S;S1!=0;S1=(S1-1)&S) { S2=S^S1; } 其中 \(S_1\) 就是我们枚举得到的子集,\(S_2\) 是当前子集 \(S_1\) 在 \(S\) 内的补集,即 \(S_1 \bigoplus S_2 = S\) \[{\because S_2 = S \bigoplus S_1} \]\[{\therefore S_2 \bi

  • CF1391D-505 (思维结论 + 暴力 + 状压dp)2021-08-25 22:33:05

    题目要求每一个长度为偶数的正方形里,1的个数都是奇数。   于是我们发现,一旦n >= 4同时 m >= 4那么一定是-1,奇+奇+奇+奇=偶 之后就剩下了三种可能性,n=1,n=2,n=3  于是考虑状压dp。 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int>

  • Valley Numer II 题解(状压dp)2021-08-23 23:33:26

    题目链接 题目大意 给定一张 N 个点 M 条边的无向图,其中有 K 个点被标记为高点,剩下的 (N-K) 个点是低点。图中的山谷 定义为三元组 <X,Y,Z>,满足X和Y之间有边,Y与 Z之间也有边,同时X和Z是高点,Y是低点。问这个图中 最多有几个山谷(一个点只能出现在一个山谷中) N ≤ 30, K ≤ min(N,15)

  • Pieces 题解(状压dp+$3^n$枚举子集)2021-08-23 22:01:15

    题目链接 题目大意 有一个长度不超过 16 的字符串。每次你可以从中删除一个子序列,但是要求这个子序列是回 文的。问最少删除几次可以把这个字符串删光。 题目思路 这个数据很小 很明显是状压\(dp\) 设\(dp[i]\)表示删除\(i\)的最小操作数 那么答案显然为\(dp[(1<<n)-1]\) 然后直接

  • Mondriaan's Dream 题解(棋盘状压问题)2021-08-23 21:31:59

    题目链接 题目大意 现在有一个 n×m 的方格棋盘,和无限的 1×2 的骨牌。 问有多少种方法可以用骨牌铺满棋盘。1 ≤ n,m ≤ 11 题目思路 这种算是状压dp的模板题目 主要是思考上一行和这一行的转移即可 需要两个连续的空位,并且上一行的这两个位置也得已经被覆盖。 如果竖着: (a) 上一

  • 愤怒的小鸟 —— 状压DP2021-08-21 11:01:23

    题目描述 给定\(N\)个点,和形式抛物线\(y = ax^2 + bx\),每次可以消去抛物线上的点,问消去所有点的最少抛物线数时是多少? 范围 \(N \leq 18\) 题解 题目相当于dancing links思想,用\(n^2\)个抛物线去覆盖点集,那么设\(f_i\)表示覆盖了第\(i\)列的最少行数是多少,转移: \(f_{i|j} = min(f_

  • OI卷题记录2021-08-14 06:32:15

    2021.8.2 LG3386 匈牙利算法 二分图 LG1377 笛卡尔树 题解 2021.8.3 LG2962 \(\text{Meet in middle}\) LG3389 高斯消元 高斯-约旦消元 2021.8.4 SPOJ ABCDEF 暴力+优化 题解 LG5691 暴力+优化 题解 2021.8.5 LG3067 暴力+优化 题解 LG4799 暴力+优

  • UVA11464 Even Parity2021-08-11 20:00:24

    数据范围这么小,不爆搜就状压。 爆搜明显是要 TLE 的。同样的,状压每一行也是 TLE。 考虑状压 dp。设 \(f(i,j)\) 为第 \(i\) 行,状态为 \(j\) 的方案数。很明显具有无后效性。方程:\(f(i+1,k)=\min f(i,j)\)。 但枚举每一行和下一行会 TLE。状压的那一维事没法减掉的。考虑优化每一

  • [做题笔记] 浅谈状压dp在图计数问题上的应用2021-08-09 22:02:47

    无向图计数 题目描述 点此看题 有一个 \(n\) 个点 \(m\) 条边的无向图,对于每个 \(k\) 求出有多少种保留边的方案使得 \(1\) 能到 \(k\) \(n\leq 17,m\leq {n\choose 2}\) 解法 设 \(dp[s]\) 表示 \(1\) 能到集合 \(s\),只考虑集合 \(s\) 中的边的方案数,转移考虑总方案减去不合法的

  • 学习笔记——状压DP2021-08-05 16:02:07

    前言 状态压缩让我们回到了计算机的本质——二进制运算,对于一些数据范围较小但状态较多的题目,我们可以用状压DP解决。 概念 我们可以考虑用二进制表示状态,二进制上每一位表示整个决策集合中的第i个决策是否进行,设一共有$m$中决策,我们枚举$0 \sim 2^m-1$中所有数,找出所有状态中的

  • 各种dp分类整理2021-08-04 23:04:05

    各种dp分类整理 数位dp 因为比较重要,单独写一篇 见 这篇 状压dp 某篇学术垃圾 中指出, 我们可以说,所有的dp都会有一个“状压”。只不过普通的dp压缩的比较浅显,而使用二进制的状压dp压的比较复杂,才叫它“状压dp” 所以这里特指“状压dp”为“使用二进制压缩状态的dp” 一般都会有

  • cf 1550E. Stringforces (二分+状压)2021-07-25 09:33:55

    题目大意: 给定一个字符串s,长度为n,由字符'a'~'a'+k-1 和 '?' 组成,定义\(f_i\)为字符'a'+i 在s中的最长连续长度(连续的子串,且子串每一个字符均为'a'+i),'?'可以替换为任意一个字母;求在所以替换方案中 \(Min_{i=0}^{k-1}~f_i\) 的最大值; 题目链接: []: https://codeforces.com/contest

  • 【ybtoj】【状压dp】种植方案2021-07-22 19:00:42

    题意 题目描述 农场主新买了一块长方形的新牧场,这块牧场被划分成  行  列,每一格都是一块正方形的土地。农场主打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。 遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是农场主不会选择两

  • CF1550E - Stringforces——二分答案,状压DP2021-07-17 09:30:19

    E - Stringforces 题目描述 给你一个包含?和前 k k k 个小写字母的字符串 s s s ,你需要把每个?替换

  • CF16E Fish 状压dp + 概率2021-07-12 09:02:19

    链接 其中 \(n\) 为小于 \(18\),一开始想着直接暴力枚举,但发现不行。然后就开始想 状压。 这个明显是开的下的。 我们令 \(0\) 表示还活着,\(1\) 表示死了。用一个二进制数去表示每一个局面,然后令 \(f_S\) 表示局面 \(S\) 所对应的概率是多少。 下面的 dp 我们用我为人人的做法。 显

  • 状压DP2021-07-11 15:31:42

    1.填方格 class Solution { public: int M; int MOD=1e9+7; int dp[1006][255];//3*3*3*3*3=243 bool check(int t)//同一列上的状态不可以相同 { int last=-1;//对第一行,上一个状态为-1 for(int i=0;i<M;i++) { if(t%3

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有