题目链接 比赛链接 \(Description\) \(Solution\) 参考:https://www.cnblogs.com/SovietPower/p/9781573.html 暴力:\(f[i][j][k]\)表示前\(i\)个数,与起来为\(j\),异或和为\(k\)的方案数.复杂度\(O(n*4^{13})\). 考虑位运算的性质,最后怎么得到某一位的1:&要求所有数这一位为1,^只需判这一位为1的数的奇偶性. 所以我们用13位三进制s表示13位01的状态(2表示全1,0/1表示奇…
题意: 给了n个数,要求有几个子集使子集中元素的和为一个数的平方. 题解: 因为每个数都可以分解为质数的乘积,所有的数都小于70,所以在小于70的数中一共只有19个质数.可以使用状压DP,每一位上0表示这个质数的个数为偶数个,1表示为奇数个.这样的话,如果某个数为一个数的平方的话,那么每个质数个数都是偶数,用0可以表示.从1-70开始状压DP,先存下每个数出现多少次,然后dp转移,dp转移时分别计算某个数出现奇数次还是偶数次的方案数. 这里有一个公式:C(n,0)+C(n,2)+--=C(n,1…
题目链接:http://hihocoder.com/problemset/problem/1608 题解:就是一道简单的状压dp由于dfs过程中只需要几个点之间的转移所以只要预处理一下几个点就行. #include <iostream> #include <cstring> #include <cstdio> #include <queue> using namespace std; << ]; ][] , dr[][] = { , , - ,…
描述 给定 n 根木棍,第 i 根长度为 ai 现在你想用他们拼成尽量多的面积大于 0 的三角形,要求每根木棍只能被用一次,且不能折断 请你求出最多能拼出几个 输入 第一行一个正整数 n 第二行 n 个正整数 a1 … an 1 ≤ n ≤ 15 1 ≤ ai ≤ 109 输出 输出最多能拼出几个三角形 样例输入 6 2 2 3 4 5 6 样例输出 2 思路:最开始一直在像贪心,最后没写出来. 我们要知道的是,并不是每次都选择长度相邻的三个. 因为最小的一条边可能还不够小导致了浪费. 状压DP…
ZOJ Monthly, August 2014 E题 ZOJ月赛 2014年8月 E题 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5334 Easy 2048 Again Time Limit: 2 Seconds      Memory Limit: 65536 KB Dark_sun knows that on a single-track road (which means once he passed this…
前言 状态压缩是一种\(dp\)里的暴力,但是非常优秀,状态的转移,方程的转移和定义都是状压\(dp\)的难点,本人在次总结状压dp的几个题型和例题,便于自己以后理解分析状态和定义方式 状态压缩动态规划,就是我们俗称的状压\(dp\),是利用计算机二进制的性质来描述状态的一种\(dp\)方式. 很多棋盘问题都运用到了状压,同时,状压也很经常和BFS及\(dp\)连用. 状压\(dp\)其实就是将状态压缩成2进制来保存 其特征就是看起来有点像搜索,每个格子的状态只有\(1\)或\(0\) ,是另一…
1097: [POI2007]旅游景点atr Time Limit: 30 Sec  Memory Limit: 357 MBSubmit: 1531  Solved: 352[Submit][Status][Discuss] Description FGD想从成都去上海旅游.在旅途中他希望经过一些城市并在那里欣赏风景,品尝风味小吃或者做其他的有趣的事情.经过这些城市的顺序不是完全随意的,比如说FGD不希望在刚吃过一顿大餐之后立刻去下一个城市登山,而是希望去另外什么地方喝下午茶.幸运的是,FGD…
CF453B CF454D Codeforces Round #259 (Div. 2) D Codeforces Round #259 (Div. 1) B D. Little Pony and Harmony Chest time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output Princess Twilight went to C…
题意:给定n,m的矩阵,就是求稳定的骨牌完美覆盖,也就是相邻的两行或者两列都至少有一个骨牌 分析:第一步: 如果是单单求骨牌完美覆盖,请先去学基础的插头dp(其实也是基础的状压dp)骨牌覆盖 hihocoder有全套课程:骨牌覆盖(一, 二,三),状态压缩(二) 学好了以后,首先打一个预处理没有限制的表,由于赛后补题,我就没自己打,直接从网上粘的表 我的表来自:http://blog.csdn.net/u012015746/article/details/51971977 第二步: 这就是容斥的…
题目描述 题意大概就是坐标系上第一象限上有N只猪,每次可以构造一条经过原点且开口向下的抛物线,抛物线可能会经过某一或某些猪,求使所有猪被至少经过一次的抛物线最少数量. 原题中还有一个特殊指令M,对于正解并没有什么卵用, 输入输出 第一行一个数T,表示数据组数 对于每组数据,第一行2个整数N,M, 接下来N行每行2个正实数想x,y表示第i只猪的坐标 对于每组数据,输出一行一个数表示最少的抛物线数量 数据范围 N<=18,T<=30 那么N范围只有18,可以想到状压DP,我们可以发现,2点确定一条…