hdu3182 状态压缩水题】的更多相关文章

题意是这种     给你n个汉堡     每一个汉堡有它的价值   做每一个汉堡都得花费相应的能量      如今告诉你最大能量 让你求获得的最大的价值(有些汉堡必须有还有一些汉堡做好为前提) 给你的n你最大为15 这道题的重点在于   每一个汉堡仅仅能做一次      跑遍所以的状态      mark记录每一个状态下所剩余的能量  dp数组记录每一个状态下的获得的最大的价值 #include<stdio.h> #include<string.h> #include<ios…
题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取! 分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是这个题目的输入确实让我很无语,开始的时候wa一次,后来改成了超时,最后还是参照别人的输入ac的! 代码实现: #include<cstdio> #include<cstring> #include<iostream> using namespace std; ][],dp[…
题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int n; ][(<<)+…
Relocation Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2631   Accepted: 1075 Description Emma and Eric are moving to their new house they bought after returning from their honeymoon. Fortunately, they have a few friends helping them…
题意:就是你给一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以种植作物,0则不可以种植作物,并且相邻的土地不能同时种植作物,问你有多少种种植方案. 分析:这是我做的第一道状态压缩dp的题,总的来说还是很容易理解的,直接上代码! 代码实现: #include<stdio.h> #include<string.h> #include<math.h> #define mod 100000000 int n,m,a[15]; int dp[13][(1<…
还不太会做这类题,总之感觉有点难啊. 用深搜代替打表求出一行所有的可行状态,注意要进行剪枝 这是自己理解的代码,但是tle了 #include<bits/stdc++.h> using namespace std; #define mod 1000000007 #define maxn 600005 ][maxn],sum; ][][]; ],tag,flag,s[]; // void dfs(int r,int num,int up,int down,int right){//用dfs搜索出…
状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态必须由前一个可行状态推出 /* f[i][k][t]表示第i行状态为t,第i-1行状态为k的炮兵数 边际条件:第一行为任意可行状态即dp[1][1][i]=num[i] */ #include<bits/stdc++.h> using namespace std; #define ll long…
Kronican 内存限制:32 MiB 时间限制:2000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: cqbzgm 题目描述 Mislav有N个无限体积的杯子,每一个杯子中都有一些水.Mislav想喝掉所有的水,但他不想喝超过K杯水.Mistrav能做的就是将一个杯子中的水倒入另一个杯子中. 不幸的是,挑选哪两个杯子进行倒水操作对Mislav来说很重要,因为并非所有的杯子都离他一样远.更准确地说,从i号杯子向j号杯子倒水所付出的代价为Cij. 帮助Mislav找到他需要…
Traveling by Stagecoach dp[s][v]  从源点到达  v,状态为s,v的最小值.  for循环枚举就行了. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <string> #include <vector> #include <s…
题目大意 :农夫约翰有n*m块地,其中一些地荒掉了.玉米是一种傲娇的植物,种在相邻的地里会导致不孕不育.求所有种法数对100000000求余. 读入:第一行一个n一个m, 接下来是一个n行m列的矩形,表示田地的状态(1表示可种植,0表示不可种植) 输出:一个整数,表示总的方法数 % 1000000000的结果 首先我们把原图的每一行转成二进制数存储(此处及以下原图均指读入的田地状况),1表示可以种植,0表示不能种植以行为阶段,对于每一行,我们把可以种的标记为1,不能种则标记为0分析同一行中,我们…