- 博客(100)
- 收藏
- 关注
原创 poj 1018 dp
#include#include#define INF 0x3f3f3f3f#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int dp[120][400];int main(){ int T; scanf("%d",&T); while(T--) { int n; scanf("
2017-04-30 22:04:18 243
原创 扩展欧几里德 求最小整数解 a,b,c可以为负数
我们先讨论a,b,c都大于0的情况 (都为整数)int exgcd(int a,int b,int &x,int &y){ int d=a; if(b!=0) { d=exgcd(b,a%b,y,x); y-=(a/b)*x; } else { x=1; y=0; } return d;}可以用扩展欧几里德算出 一个特解 x0 , y0; 满
2017-04-30 17:08:53 3483
原创 TaoSama Becomes the God of Stocks dp
H. TaoSama Becomes the God of StocksTime Limit: 1000msMemory Limit: 65536KB64-bit integer IO format: %lld Java class name: MainSubmit StatusSample Input18 2
2017-04-30 11:25:56 301
原创 不再孤独的HandsomeHow 状压dp
G. 不再孤独的HandsomeHowTime Limit: 1000msMemory Limit: 65536KB64-bit integer IO format: %lld Java class name: MainSubmit StatusSample Input220 22 040 2 4
2017-04-30 08:35:22 342
原创 hdu 4044
敌人从树根(1号节点)出发,叶子节点是你的基地,敌人的路线不固定,经过每个节点的塔后受到伤害问你在总的花费下,你选择建一些塔,敌人的血量至多是多少才能保证不伤害到你的基地。
2017-04-29 18:45:15 443
原创 poj 1947 树形dp(求一颗树最少经过几次剪枝,可以得到特定大小的子树)
#include#include#define MIN(x,y) ((x)>(y)?(y):(x))struct node{ int to,next;}e[200];int head[200],cnt;int dp[200][200];int f[200],n,p,num[200],flag[200];void add_edge(int from,int to){ e[cn
2017-04-28 07:16:11 337
原创 hdu 1011 树形dp
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))struct node{ int to,next;}e[240];int cnt,head[120];int n,m,dp[120][120],num[120];int value[120];void add_edge(int from,int to){ e[cnt].to=
2017-04-27 14:59:48 404
原创 poj 1155 树形dp
#include#include#define INF 10000000#define MAX(x,y) ((x)>(y)?(x):(y))struct node{ int to,next,v;}e[3200];int cnt,head[3200],f[3200],n,m,tot,vis[3200]; int dp[3200][3200];void add_edge(int f
2017-04-27 12:48:16 299
原创 hdu 3810 超大容量背包(n=50不是40)
先贴一个挑战上解决n=40时的超大容量背包,不过解决n=50时会TLE和MLE#include#include#include#include#define MIN(x,y) ((x)>(y)?(y):(x))using namespace std;const long long INF=5010000000000;vectorQ[100];pairps[1<<21];int
2017-04-26 09:54:24 491
原创 poj 3211 背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int w[12][120],num[12],sum[12];int dp[11000];int main(){ char s2[100][100],s1[100]; int n,m,x; while(~scanf("%d%d",&n,&m)&&(n+m)) { memset
2017-04-25 06:40:53 337
原创 poj 1837 dp推方案数
#include#includeint dp[25][16000];int lo[30],w[30];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=0;i<n;i++) scanf("%d",&lo[i]); for(int i=1;i<=m;i++) scanf("%d",&w[i]);
2017-04-24 20:23:38 436
原创 hdu 3033 分组背包,每组最少取一个
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))long long int dp[12][11000];int w[12][120],v[12][120],num[12];;int main(){ int m,col,n; while(~scanf("%d%d%d",&m,&col,&n)) { int lo,a,b;
2017-04-24 19:40:00 439
原创 hdu 1712 背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int dp[1000];int v[120][120];int n,col; int main(){ while(~scanf("%d%d",&n,&col)) { if((n+col)==0) break; memset(dp,0,sizeof(dp)); f
2017-04-24 12:25:27 243
原创 poj 1276 (完全背包二进制转化01背包)
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int dp[100010];int v[1250],m[1250];int main(){ int col,n; while(~scanf("%d%d",&col,&n)) { for(int i=
2017-04-23 21:34:01 915
原创 hdu 2192 (二进制)多重背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int dp[1000];int w[125],v[125],m[125];int main(){ int T; scanf("%d",&T); while(T--) { int col,n; scan
2017-04-23 21:17:12 331
原创 hdu 1059 背包
#include#include#define MIN(x,y) ((x)>(y)?(y):(x))#define MAX(x,y) ((x)>(y)?(x):(y))int dp[42000];int n[8];int main(){ int s=1; while(~scanf("%d%d%d%d%d%d",&n[1],&n[2],&n[3],&n[4],&n[5],&n[6]
2017-04-23 20:37:44 184
原创 hdu 1114 背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))#define INF 0x3f3f3f3fint dp[10100];int w[1000],v[1000];int main(){ int T; scanf("%d",&T); while(T--) {
2017-04-23 20:06:19 196
原创 hdu 2571 命运
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int dp[25][1005];int m[25][1005];int main(){ int T,col,row; scanf("%d",&T); while(T--) { scanf("%d%d",&row,&col); for(int i=1;i<=row;i++
2017-04-23 10:56:26 330
原创 zoj 3662 dp (递推k个数 组成的和为n,最小公倍数为m的所有可能)
#include#include#define MOD 1e9+7int dp[2][1010][1002];int lo[1100][1100],L[110];int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}int lcm(int a,int b){ return a/gcd(a,b)*
2017-04-22 15:53:59 468
原创 zoj 3623 背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int dp[1000],w[100],v[100];int main(){ int n,life; while(~scanf("%d%d",&n,&life)) { for(int i=0;i<n;i++) scanf("%d%d",&w[i],&v[i]); mems
2017-04-22 11:16:35 246
原创 poj 2063 背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int dp[100000];int w[11],v[11];int main(){ int T,col,t,num,n; scanf("%d",&T); while(T--) { scanf("%d%d",&col,&t); scanf("%d",&n); for(
2017-04-22 08:13:33 214
原创 poj 1787 求达到总钱数的选硬币的最大数量(硬币有个数限制)
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))int dp[10010],path[10010],u[10010];int main(){ int v[]={1,5,10,25}; int n[5],col,ans[26]; while(~scanf("%d%
2017-04-21 20:34:37 794
原创 poj 3181 求各种纸币组成某个特定值的方案数
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))long long dp1[1010];long long dp2[1010];long long MID;int main(){ int n,k; long long ans; scanf("%d%d",&n
2017-04-21 18:05:45 321
原创 hdu 4281 mtsp(多重旅行商问题)
#include#include#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))#define INF 0x3f3f3f3fusing namespace std;int map[30][30];int tot,dp[1<<17],dp1[20][1<<17],
2017-04-21 16:20:05 8427 1
原创 hdu 2126 求方案数
#include#include#include#define MAX(x,y) ((x)>(y)?(x):(y))using namespace std;int dp[5050][2];int w[1000];int main(){ int n,col,T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&col); f
2017-04-21 08:43:04 272
原创 hdu 3466 01背包
#include#include#include#define MAX(x,y) ((x)>(y)?(x):(y))using namespace std;int dp[5050];struct node{ int p,q,v;}m[550];bool cmp(const node &a,const node &b){ return a.q-a.p<b.q-b.p;}i
2017-04-21 06:50:58 459
原创 poj 2923 状态压缩dp
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))#define INF 0x3f3f3f3fint dp[1025];int vis[1025],w[105],d[1025];int n,c1,c2;int judge(int x){ int sum=0;
2017-04-20 15:15:34 292
原创 poj 2639 背包的第k最优解
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))int dp[1000][100];int v[200],w[200];int a,b,c,t1[200],t2[200];int main(){ int T,n,col,rank; scanf("%d",&T); while(T--) { scanf("%d%d%d",&
2017-04-20 13:36:14 515
原创 poj 2184 01背包,求体积和重量(有负数)之和最大。
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define INF 0x3f3f3f3fint dp[200200],count[200200],ts[200],tf[200];int main(){ int n; scanf("%d",&n); int sum=0; for(int i=1;i<=n;i++) {
2017-04-20 12:03:58 762
原创 hdu 2955
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))double dp[110000],v[110];int w[100];int main(){ int n,T; double col; scanf("%d",&T); while(T--) { int sum=0; scanf("%lf%d",&col,&n);
2017-04-20 06:34:36 269
原创 hdu 2546 01背包(从一堆物品中尽可能组成接近给定重量的方案)
#include#include#include#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))using namespace std;int dp[1010];int c[1010];int main(){ int n,col; while(~scanf("%d",&n)&&n)
2017-04-19 13:00:21 382
原创 poj 3624 01背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))long long dp[12888];int v[3480],w[3480];int main(){ int n,col; scanf("%d%d",&n,&col); for(int i=1;i<=n;i++) scanf("%d%d",&w[i],&v[i]);
2017-04-19 11:26:39 354
原创 hdu 2602 01背包
#include#include#define MAX(x,y) ((x)>(y)?(x):(y))long long dp[1010];int v[1010],w[1010];int main(){ int T; scanf("%d",&T); while(T--) { int n,col; scanf("%d%d",&n,&col); for(int i=1;
2017-04-19 11:23:16 526
原创 poj 2528 线段树 离散化()
#include#include#include#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define MAX_N 20001using namespace std;int L[MAX_N],R[MAX_N],d[MAX_N<<3],t[MAX_N<<3];int ans; int flag;void update1(in
2017-04-18 20:54:45 452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人