【HIHOCODER 1048】 状态压缩·二】的更多相关文章

原题地址 位运算的状态压缩太操蛋了,很容易出错...又是数组没开够导致诡异现象(明明某个值是1,莫名其妙就变成0了),害我debug一整天!fuck 代码: #include <iostream> #include <cstring> using namespace std; #define MAX_N 1024 #define MAX_M 8 #define MAX_S 4096 #define MOD 1000000007 int f[MAX_N][MAX_M][MAX_S];…
在此我向各位博友求助,特别想知道除了HihoCoder上面的结果要对1e9+7取余之外,这两道题还有什么其他的问题,都是骨牌覆盖问题,都是状态压缩+dp,为什么我能过poj2411的程序过不了HihoCoder,还不是其他诸如TimeLimited,而是Wrong Answer,这个问题我想了很久,还是不知道是怎么回事,如果有神通广大的博友知道答案,希望你能告诉我.顺便说一下,HihoCoder给的那个hint只看懂了一部分递推的公式,其中满足的那个条件还是不懂. 两个题目的连接地址: http…
状态压缩  写了两个半小时  太菜了 题目链接 https://hihocoder.com/contest/hiho8/problem/1 #include <bits/stdc++.h> using namespace std; ; <<; int n, m, q, w[MAXN]; // 存取到达i时候, 前面m-1个的状态 ][MAXN]; int Count(int x) { ; while(x) { cnt += x%; x/=; } return cnt; } void…
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节! 但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票——他们只能够乘坐最为破旧的火车进行他们的旅程. 不仅如此,因为美食节的吸引,许多人纷纷踏上了和小Hi小Ho一样的旅程,于是有相当多的人遭遇到了和小Hi小Ho一样的情况——这导致这辆车上的人非常非常的多,以至于都没有足够的位置能让每…
思路:状态压缩,dp(i, j)表示考虑前i个数且[i-m+1, i]的选择情况为j.如果要选择当前这个数并且,数位1的个数不超过q,则dp[i+1][nex] = max(dp[i+1][nex], dp[i][j] + w[i+1]),如果不选择dp[i+1][j>>1] = max(dp[i+1][j>>1], dp[i][j]); AC代码 #include <cstdio> #include <cmath> #include <cctype&…
描述 历经千辛万苦,小Hi和小Ho终于到达了举办美食节的城市!虽然人山人海,但小Hi和小Ho仍然抑制不住兴奋之情,他们放下行李便投入到了美食节的活动当中.美食节的各个摊位上各自有着非常多的有意思的小游戏,其中一个便是这样子的: 小Hi和小Ho领到了一个大小为NM的长方形盘子,他们可以用这个盒子来装一些大小为21的蛋糕.但是根据要求,他们一定要将这个盘子装的满满的,一点缝隙也不能留下来,才能够将这些蛋糕带走. 这么简单的问题自然难不倒小Hi和小Ho,于是他们很快的就拿着蛋糕离开了~ 但小Ho却不只…
[题目链接]:http://hihocoder.com/problemset/problem/1048 [题意] [题解] 按从左到右然后从上到下的顺序; 依次枚举每个格子是竖条还是横条; 然后在搜索的时候保证前i-1行全都填满; 记录下这一行和下一行的状态就好了; 2*m个格子;m最大为5; 完全能用二进制数来表示; 写一个记忆化搜索就好; dfs(int x,int y,int cur,int nex) 这里dp[x][y][cur][nex]表示当前处理的格子为x,y;然后当前行和下一行的…
http://hihocoder.com/problemset/problem/1044 可以看出来每一位的选取只与前m位有关,我们把每个位置起始的前m位选取状态看出01序列,就可以作为一个数字来存储,那么将其作为状态,dp[i][j]就是第i个座位前m个座位选取情况为j的最大垃圾处理量.然后取这个序列的后m-1位,和当前位取0/1的情况分别做合法性判断,然后做状态转移即可. #include <iostream> using namespace std; ; ; ]; int n,m,q;…
题意: 某车厢有一列座位,共有n个位置,清洁工要在这n个位置上清垃圾,但是不能全部位置都清理,只能选择部分.选择的规则是,连续的m个位置内,不能够清理超过q个,也就是说从第1~m个位置最多可以清q个,清q+1个就不行了.当然,q一般是小于m的,不然岂不是可以m个位置全清了?那就没限制了. 思路: 看小hi小ho讲的完全是一知半解,看了大神的代码一整天才看懂意思.下面做分析(以我能理解的角度,以及通俗的角度,方便回忆.): 三个变量的定义: n: 一共有n个座位. m: 在m个连续的座位. q:最…
题目链接:https://hihocoder.com/problemset/problem/1334 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given N words from the top 100 common words in English (see below for reference), select as many words as possible as long as no two words share common letters.…