01背包_第k优解
摘要:1 int vol[1010],val[1010],dp[1010][35],a[1010],b[1010]; 2 int n,v,k; 3 void kth_01() 4 { 5 memset(dp,0,sizeof(dp)); 6 memset(a,0,sizeof(a)); 7 memset(
阅读全文
posted @
2016-02-08 00:57
Sunny糖果
阅读(223)
推荐(0)
完全背包
摘要:题目: 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路: 这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略
阅读全文
posted @
2016-02-08 00:54
Sunny糖果
阅读(146)
推荐(0)
01背包
摘要:题目: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路: 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则
阅读全文
posted @
2016-02-08 00:51
Sunny糖果
阅读(166)
推荐(0)
数位dp
摘要:常见表示: Dp[i][j] = 符合要求且以数字j为首位的i位数的个数 Dp[i][j] = 符合要求且处于状态j的i位数的个数,如j=0/1表示首位不是/是4 步骤:init(); // 计算所有的dp[][]solve(n); // 计算[0, n]的答案[l, r] = solve(r) –
阅读全文
posted @
2016-02-04 23:58
Sunny糖果
阅读(201)
推荐(0)
BFS
摘要:1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <queue> 6 using namespace std; 7 8 struct node 9 { 10
阅读全文
posted @
2016-02-04 22:03
Sunny糖果
阅读(218)
推荐(0)
素数筛选
摘要:1 bool prime[maxn]; 2 void set() 3 { 4 memset(prime,true,sizeof(prime)); 5 int tmp; 6 for(int i=3;i<maxn;i++){ 7 tmp=(i+1)/2; 8 for(int j=2;j<=tmp;j++
阅读全文
posted @
2016-02-02 00:11
Sunny糖果
阅读(181)
推荐(0)