DP
小耿要努力变强!
neuqacmer
展开
-
2021 ICPC新疆省赛 J - do NOT a=2b (动态规划)
NEVER,NEVER,NEVER have a=2bin an array!You have an array P , and each element is denoted as p1,p2…pn. Nowyou can take any two numbers a and b from it. If a=2×bis satisfied, this array is a “bad array”.Now you need to delete some elements from this ar.原创 2021-07-07 21:13:44 · 1003 阅读 · 3 评论 -
Educational Codeforces Round 109 (Rated for Div. 2)D. Armchairs (DP)
There are ???? armchairs, numbered from 1 to ???? from left to right. Somearmchairs are occupied by people (at most one person per armchair),others are not. The number of occupied armchairs is not greater than????2.For some reason, you would like to te原创 2021-06-09 21:25:28 · 300 阅读 · 0 评论 -
G - String Game(动态规划)***
Clair and Bob play a game.Clair writes a string of lowercase characters, in which Bob sets the puzzle by selecting one of his favorite subsequence as the key word of the game. But Bob was so stupid that he might get some letters wrong.Now Clair wants to k原创 2021-05-26 18:45:12 · 149 阅读 · 0 评论 -
鸣人的影分身(分苹果题)(技巧dp)
在火影忍者的世界里,令敌人捉摸不透是非常关键的。我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。针对不同的作战情况,鸣人可以选择制造出各种强度的影分身,有的用来佯攻,有的用来发起致命一击。那么问题来了,假设鸣人的查克拉能量为 M ,他影分身的个数最多为 N,那么制造影分身时有多少种不同的分配方法?注意:影分身可以分配0点能量。分配方案不考虑顺序,例如:M=7,N=3,那么 (2,2,.原创 2021-03-20 18:23:02 · 217 阅读 · 0 评论 -
分组背包问题
有 N 组物品和一个容量是 V的背包。每组物品有若干个,同一组内的物品最多只能选一个。 每件物品的体积是 vij ,价值是 wij,其中 i 是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。接下来有 N组数据:每组数据第一行有一个整数 Si,表示第 i 个物品组的物品数量; 每组数据接下来有 Si 行,每行有两个整数 vij,wij,用空格隔开,分别表.原创 2021-03-20 16:55:20 · 243 阅读 · 0 评论 -
多重背包问题 II(二进制优化)
有 N 种物品和一个容量是 V的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i种物品的体积、价值和数量。 输出格式输出一个整数,表示最大价值。 数据范围0<N≤10000<V≤2000 0<vi,wi,si≤.原创 2021-03-20 16:19:12 · 118 阅读 · 0 评论 -
多重背包问题 I
有 N 种物品和一个容量是 V的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。 输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i种物品的体积、价值和数量。 输出格式输出一个整数,表示最大价值。 数据范围0<N,V≤1000<vi,wi,si≤100输入样例4 .原创 2021-03-20 15:30:07 · 99 阅读 · 0 评论 -
完全背包问题
有 N 种物品和一个容量是 V的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i种物品的体积和价值。 输出格式输出一个整数,表示最大价值。 数据范围0<N,V≤10000<vi,wi≤1000输入样例4 5 1 .原创 2021-03-20 15:20:29 · 39 阅读 · 0 评论 -
01背包问题
有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i件物品的体积和价值。 输出格式输出一个整数,表示最大价值。 数据范围0<N,V≤10000<vi,wi≤1000输入样例4 5 1 2.原创 2021-03-20 15:17:49 · 60 阅读 · 0 评论 -
[蓝桥杯2019初赛]试题I:糖果(状压DP+位运算)
#include <bits/stdc++.h>using namespace std;const int N=105,M=(1<<20)+10;int n,m,k,x,a[N],dp[M];// dp[i]表示组成i状态的所需的最小包数int main() { ios::sync_with_stdio(false); cin>>n>>m>>k; memset(dp,-1,sizeof(dp)); for(int i=1;i.原创 2021-03-19 23:54:39 · 292 阅读 · 1 评论