状压DP
文章平均质量分 58
Dale_zero
从零开始吧!
展开
-
Codforces 401D
题目链接:CF 401D本来以为是数位DP的题目,就直接套了模板,但是发现只用二进制来表示相应的位数已经被选过,选择的顺序并不能体现。看了题解发现是想普通的dp那样定义,用dp【i】【j】表示集合i中的点已经被选择,%m结果为j的方案总数。最后dp【1<<(len-1)】【0】就代表符合条件的方案数目#include<iostream>#include<cstdio...原创 2018-03-29 23:43:33 · 172 阅读 · 0 评论 -
hdu 1565 状压DP
题目链接:hdu 1565最近真是越来越傻B了,总在输入输出的模块出问题。把二维数组的a【i】【j】变成a【i】了,不提了,真是太傻逼了。先预处理一下每一行n个数有几种取得情况,(在一行之内两两不相邻),一种情况可以用一个n位的二进制数来表示。即若第j位上为1,就说明取了第j个数,这样对于每一个i,如果i&i<<1≠0的话,说明i的二进制表示有两个相邻的1,抛弃不要,否则将i加...原创 2018-03-20 20:49:50 · 312 阅读 · 0 评论 -
hdu 5067 状压DP 旅行商问题TSP
题目链接:hdu 5067旅行商问题(TSP)有一个商人要去n个城镇,给出这n个城镇的坐标(相互的距离),要求出一条每个点经过且只经过一次的最短路径。状压DP比较适用于n比较小的TSP问题。用dp【s】【v】表示当前的状态到最后目标位置所需走的最短距离。s代表当前经过的城镇的集合,若s转化为二进制之后的第i位是1,说明已经走过了i城镇(即状态压缩)v代表当前所在的城镇标号,仅使用其十进制下的意义,...原创 2018-03-20 23:28:50 · 737 阅读 · 0 评论 -
hdu 6327 Random Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6327一个状态压缩的dp,将多种相同的情况缩成很少个有效状态,这样不会t。预处理出每个状态对应的转移情况,就可以变成二维dp求解求逆元的问题:当模数为素数时,m的逆元为pow(m,mod-2)#include<bits/stdc++.h>#define mod 10000...原创 2018-08-07 15:06:09 · 270 阅读 · 0 评论 -
NAPIC 2016 C. Greetings! Scenes 状压DP
题目链接:http://codeforces.com/gym/101002将容纳卡片的集合压缩后用j表示,dp【i】【j】用i个信封容纳集合j中的卡片。之后枚举j的子集,从i-1个信封中转移而来,最后输出dp【k】【(1<<n)-1】 另外今天学到了一种最快速遍历子集的方法%%%https://www.cnblogs.com/jffifa/archive/2012/01/1...原创 2018-10-02 20:42:16 · 212 阅读 · 0 评论