
状压dp
CR1SceNT
这个作者很懒,什么都没留下…
展开
-
POJ3254:Corn Fields
Portal【题意】1表示可放,0表示不可放,不能出现有相邻的一起放,问方案数。【分析】状压dp第一题。。发现数据范围很小,只有12,然后发现每一行是否合法只和上一行有关系,就可以把每一行压缩成状态,然后递推dp。【代码】#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmat原创 2017-02-12 10:12:02 · 258 阅读 · 0 评论 -
BZOJ1231: [Usaco2008 Nov]mixup2 混乱的奶牛
Portal(一开始题目看错,看成有一对相邻数相差大于K就算入答案。。还调了巨久。)这题dp方式比较奇特(可能是我很弱鸡),是按状态的大小从小往大推,一开始一个位置一个位置的往后推不是很好做,看了题解才明白这种做法,很巧妙,而且思路其实也很简单易懂。 dp[i][j]表示末位为i,状态为j的方案数。 递推就是dp[k][t[k]|i]+=dp[j][i];(t[k]=(1<<(k-1))【代码】原创 2017-02-13 16:58:37 · 438 阅读 · 0 评论 -
BZOJ1688: [Usaco2005 Open]Disease Manangement 疾病管理
Portal状压dp。其实就是无脑暴力…【代码】#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;typedef long long ll;int read(){ int x=0,f=1;char ch=getchar(); while(!原创 2017-02-13 18:35:19 · 473 阅读 · 0 评论 -
BZOJ2073: [POI2004]PRZ
Portal暴力状压,刚开始加了判断条件W[i-j]<=m,去掉以后发现竟然莫名其妙的A了。。后来发现原来是自己蠢,转移时只是将当前状态j合并到答案中,所以只用判j。【代码】#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#define INF 1000000原创 2017-02-13 20:01:34 · 635 阅读 · 0 评论 -
POJ2404:Jogging Trails
Portal题意:无相带权图上的中国邮路问题。即:从任意一点出发,每条边至少走一次最后回到起点,所用的最短距离。度数为奇数的点一定为偶数个,将这些点建新图,两两之间距离为原图最短距离。 然后最小权完美匹配。用状压dp解决。答案=原图边权和+匹配和。 算法的正确性: 因为最终要回到原点,易知任意一个奇数度点,至少有一条边要走两次,那么最优的方案就是,奇数度点之间两两配对,然后重复走这些边一次。原创 2017-02-14 15:48:42 · 904 阅读 · 0 评论 -
BZOJ1087: [SCOI2005]互不侵犯King
Portal【分析】每一行是否合法只和上一行有关,所以可以状压dp,dp[i][j][k]表示第i行,一共放了j个,当前行状态为k的方案数。【代码】#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <cmath>#include <cstring>#define N 50005原创 2017-02-12 11:47:25 · 354 阅读 · 0 评论 -
NOI2015 Day1
不知不觉省选完已经颓了半个月了!!!还两个月就要NOINOI了。。很慌。。 前几天做NOI2016NOI2016翻车以后。。今天开始先做2015Day12015 Day1 第一题: 这么裸这么和善的并查集么。。(我才不会告诉你先做的时候看错了题结果竟然还有80。。数据不要这么水吧。。)第二题: 这么SBSB的树剖吗!?InstallInstall就查询该点到根路径上0的个数原创 2017-05-02 16:28:11 · 608 阅读 · 0 评论