ICode9

精准搜索请尝试: 精确搜索
  • [状压DP思路妙题][AGC020F]Arcs on a Circle2020-05-11 13:58:10

    题目传送门 大致题意:一个长度为 \(C\) 的圆周上有 \(N\) 条弧,第 \(i\) 条弧的长度为 \(L_i\),满足 \(1\le L_i<C\),位置在圆周上均匀随机,求这些弧覆盖整个圆周的概率,\(1\le N\le 6\),\(1\le C\le 50\) 先断环为链,断点位于最长的弧的起点处,至于为什么是最长的弧,后面会说 把这

  • Educational DP Contest O - Matching (状压dp)2020-05-08 20:55:55

    O - Matching 原题链接:https://atcoder.jp/contests/dp/tasks/dp_o 题目大意: 有n个男人,n个女人,然后一男一女组合,其中一个二维矩阵a[i][j]记录第i个男人,与第j个女人能不能组合,求有多少种组合方式。 解题思路: 状压dp:用一个n为二进制的整数来表示n个人的选取状态,从0开始然后判断是否

  • 一本通 高手训练 1782 分层图 状压dp2020-05-04 20:05:02

    LINK:分层图 很精辟的一道题 写的时候没带脑子 导致搞了半天不知道哪错了。 可以想到状压每次到某一层的状态 然后这个表示方案数 多开一维表示此时路径条数的奇偶即可。 不过显然我们只需要知道路径条数的奇偶性即可。 所以对于当前状态 如果某个点路径条数为偶数 那么怎么转移都

  • 大挑战!状压dp!2020-05-04 15:55:39

    1349. 参加考试的最大学生数 给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的(不可用),就用 '#' 表示;否则,用 '.' 表示。 学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答卷,但是看不到直接坐在他前面或者后面的学生的答卷。请你计算并返

  • CodeCraft-20 (Div. 2)E(状压DP)2020-03-06 13:56:21

    1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef struct node{ 5 int val; 6 int w[10]; 7 }srt; 8 srt a[100007]; 9 bool cmp(srt a,srt b){ 10 return a.val>b.val; 11 } 12 long long dp[1000

  • E. Team Building (状压dp + 思维)2020-03-05 15:55:40

    题目:传送门 题意:你有 n 个人,你想从这 n 个人中选 p 个人去到不同的 p 个位置, 选 k 个人作为观众。如果第 i 个人被选为观众他的贡献就是 a[ i ],如果第 i 个人被选为第 j 个位置上的人,那么他的贡献就是 b[ i ][ j ]。问你选 p 个位置上的人和 k 个观众最大的贡献是多少。    1 <

  • 状压dp常用操作2020-03-04 12:10:08

    最近在学状压dp,记录一下,避免忘记。 x&y:\(x\) 和 \(y\) 是否有同一位都为 \(1\); (1<<(i-1))&x:\(x\) 的第 \(i\) 位是否为 \(1\); x&(x<<1):\(x\) 是否有相邻两位都是 \(1\); x|=1<<(i-1):将 \(x\) 的第 \(i\) 位变为 \(1\); x&=x-1:将 \(x\) 的最后一个 \(1\) 去

  • CF1215E E. Marbles(状压dp)2020-03-02 21:03:59

    题意:   给出n个有序排列的弹珠$(n\leq 4e5)$,每个弹珠有一种颜色(不超过20种颜色),现执行操作,每次操作可以选任意一对相邻的弹珠,将其交换。要求:最终对任意颜色的弹珠,能找到l,r使$[l,r]$内所有弹珠都是该颜色并且所有该颜色弹珠都在该区间内,(即所有相同颜色的弹珠都在一起),求最少操作次

  • 状压dp 持续更新2020-03-02 13:02:27

    前置知识点:二进制状态压缩,动态规划。   1. AcWing 91 最短Hamilton路径 (https://www.acwing.com/problem/content/93/)   给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好

  • Codeforces Round #448 (Div. 2):C题Square Subsets——线性基|状压dp2020-02-03 20:42:33

    题目链接:https://codeforces.com/contest/895/problem/C  题意:给你n个数,每个数<=70,问有多少个集合,满足集合中所有数相乘是个完全平方数(空集除外) 题解:比赛时对这个一点思路都没有,自闭了,但是观察到数小,考虑可以用状压dp来求,但是发现很不好想,也不好调,赛后意外发现学长写的这个

  • 状压dp2020-02-02 23:04:24

    目录 状态压缩DP 1.状态压缩的定义 2.位运算 3.入门例题 状态压缩DP 1.状态压缩的定义 状态压缩的定义:我们知道任何一个二进制都可以对应唯一的十进制数,反过来也成立。所以我们可以用一个数来代替一组数从而降低维数。这种解题手段我们叫做状态压缩。 举个例子:如果数组中的

  • 【BZOJ4416】 [SHOI2013] 阶乘字符串(状压DP)2020-01-27 19:00:29

    点此看题面 大致题意: 对于一个由前\(n\)个小写字母组成的字符串,若前\(n\)个小写字母的全排列都是该字符串的子序列,则称这个字符串为阶乘字符串。求验证给定字符串是不是阶乘字符串。 前言 每日刷题计划(2/6),算法标签:DP。 这道题的状压\(DP\)好像是挺简单的,但\(n>21\)无解这个结论没

  • 状压DP2020-01-26 22:02:42

    状态压缩(状压)DP的难点在于状态的表示,状态的表示是否满足无后效性、最优子结构且很容易地通过位运算的特性去用一个状态得到一个新状态。一般都是通过二进制来表示状态,所以我们需要一些位运算的知识。<< 左移>> 右移& 按位与(用于判断一位是不是1,用于清空一位的状态,求两个状态的交集

  • [状压DP思路妙题]图2020-01-23 12:00:19

    源自 luhong 大爷的 FJ 省冬令营模拟赛题 Statement 给定一个 \(n\) 个点 \(m\) 条边的图,没有重边与自环 每条边的两端点编号之差不超过 \(12\) 求选出一个非空点集使其导出子图连通的方案数模 \(2\) 后的结果 \(n\le 50\),\(m\le\binom n2\) Solution 妙啊!!!\(\times 3\) 首先

  • Educational Codeforces Round 80 (Rated for Div. 2)D(二分答案,状压检验)2020-01-16 13:01:02

    这题1<<M为255,可以logN二分答案后,N*M扫一遍表把N行数据转化为一个小于等于255的数字,再255^2检验答案(比扫一遍表复杂度低),复杂度约为N*M*logN 1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int a[300007][10]; 5 int b[300007][10];

  • Educational Codeforces Round 80 (Rated for Div. 2)思维状压2020-01-15 21:01:09

    题:https://codeforces.com/contest/1288/problem/D题意:给定n个序列,每个序列m个数,求第i个和第j个序列组成b序列,b序列=max(a[i][k],a[j][k]),使得b序列最小值最大化,求达成条件的 i 和 j (i可等于j) 分析:因为m<=8,所以我们考虑对每个序列的m个数进行状压。    这题的状压是,“1”状态,表

  • 【洛谷5492】[PKUWC2018] 随机算法(状压DP)2019-12-20 22:02:34

    点此看题面 大致题意: 用随机算法求一张图的最大独立集:每次随机一个排列,从前到后枚举排列中的点,如果当前点加入点集中依然是独立集,就将当前点加入点集中,最终得到的点集就是最大独立集。求这个随机算法的正确率。 前言 \(PKUWC\)的题目就是妙啊。 题目很神仙,但看完题解后就很简单了,

  • 习题:A(数位DP&状压)2019-12-13 13:58:09

    题目 思路 神仙数位DP题目 最开始想到的是三进制状压 每一位表示这个数不变,增加还是减少 \(dp_{k,s,i,0/1}\)表示考虑到第k位,状态为s,正在考虑第i个数,第k的异或和为0/1 这样一来, 时间复杂度就为\(O(32*n*3^n)\) 很明显瞬间爆炸 但是我们仔细思考增加和减少 如果这个数的比他高的位

  • BZOJ 4197: [Noi2015]寿司晚宴 状压dp+质因数分解2019-12-02 21:00:10

    挺神的一道题 ~       由于两个人选的数字不能有互质的情况,所以说对于一个质因子来说,如果 1 选了,则 2 不能选任何整除该质因子的数.     然后,我们发现对于 1 ~ 500 的数字来说,只可能有一个大于 $\sqrt 500$ 的质因子(两个的话乘积就超过 500 了)  而不大于 $\sqrt 500$ 的质

  • 状压DP2019-11-12 16:03:17

    状态压缩DP是设计DP的一种方式,状压DP用于解决状态有很多很多维的问题,我们可以把它压 成一维解决,一般用二进制位来表示状态,0/1。 状态压缩DP的特征:原题状态维数特别多,且每一维状态都很小。 首先看一个简单的栗子: 给出一个n*m的棋盘,要放上一些棋子,要求不能有任意两个棋子相邻,求方案

  • BZOJ1688 「USACO05OPEN」Disease Manangement 背包+状压DP2019-11-11 09:00:29

    问题描述 BZOJ1688 题解 背包,在转移过程中使用状压。 \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; template <typename Tp> void read(Tp &x){ x=0;char ch=1;int fh; while(ch!='-'&&(ch>'9'||ch<'

  • luogu P3959(2017noipTG D2T22019-11-07 22:57:35

    luogu P3959(2017noipTG D2T2 不知道为什么,这两天见了好多伪装成图的dp题,这道也是. 最短路只有40分,实际上可以从数据范围n<=12看出来是状压dp. solution: 题意就是找到一种连接方法,使这些点在同一连通块中且代价最小. 因为n<=12,所以dfs+状压dp去做. 具体操作见注释. AC码: #

  • bzoj 5299: [Cqoi2018]解锁屏幕 状压dp+二进制2019-11-06 21:03:53

    可以用 $lowbit$ 来优化枚举~  code:  #include <bits/stdc++.h> #define N 21 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; const LL mod=100000007; const double eps=

  • bzoj 1072: [SCOI2007]排列perm 状压dp2019-11-06 19:57:29

    code:  #include <bits/stdc++.h> #define N 1005 using namespace std; void setIO(string s) { string in=s+".in"; string out=s+".out"; freopen(in.c_str(),"r",stdin); // freopen(out.c_str(),"W",st

  • [CSP-S模拟测试]:装饰(状压DP)2019-11-02 16:02:00

    题目传送门(内部题114) 输入格式   第一行一个正整数$n$。   接下来一行$n-1$个正整数,第$i$个数为$f_{i+1}$。   接下来一行$n$个数,若第$i$个数为$0$则表示林先森希望$i$号点的彩灯是关闭状态,若第$i$个数为$1$则表示林先森希望$i$号点的彩灯是开启状态。 输出格式   输出

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

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

ICode9版权所有