Codeforces 711 C. Coloring Trees (dp)】的更多相关文章

题目链接:http://codeforces.com/problemset/problem/711/C 给你n棵树,m种颜色,k是指定最后的完美值.接下来一行n个数 表示1~n树原本的颜色,0的话就是没颜色(一定要上色),非0就是有颜色(不能上色). 接下来n行 每行m个数,第i行第j个数表示 编号为i的树上第j种颜色的代价为a[i][j]. 问你最后要使完美值为k的上色代价最小为多少,要是不可能的话就为-1. 我们来考虑dp,每个树和前一个树有联系. dp[i][j][x] 表示第i棵树 完美…
题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有.现在让你把没被染色的树染色.使得beauty = k.问,最少使用的颜料是多少.   K:连续的颜色为一组,一共有多少组. 颜料用量:p[i][j]表示第i棵树用颜料j染色 需要p[i][j]颜料. 思路:DP. dp方程:dp[i][j][k] = a 表示前i棵树beauty = j,且第j棵树染色为k时,需要的最少颜料为a. 状态转移:初始化第一棵树dp[1][1][col[1]or(1~m)].…
题目链接: C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the park where n trees grow. They decided…
C. Coloring Trees time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the park where n trees grow. They decided to be…
C. Coloring Trees   ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the park where n trees grow. They decided to be naughty and color the trees in the park. The trees are numbered with integers from 1 to n from left to right…
传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output ZS the Coder and Chris the Baboon has arrived at Udayland! They wal…
Codeforces 1027E Inverse Coloring 题目链接 #include<bits/stdc++.h> using namespace std; #define N 1010 #define LL long long #define Mod 998244353 int n,k; LL dp[N][N],ans=; LL sum[N][N]; int main(){ cin>>n>>k; dp[][]=; ;i<=n;i++) ;j<=i…
题意:给定n棵树,其中有一些已经涂了颜色,然后让你把没有涂色的树涂色使得所有的树能够恰好分成k组,让你求最少的花费是多少. 析:这是一个DP题,dp[i][j][k]表示第 i 棵树涂第 j 种颜色恰好分成 k 组,然后状态转移方程是什么呢? 如果第 i 棵已经涂了,那么要么和第 i-1 棵一组,要么不和第 i-1 棵一组. 如果第 i 棵没有涂,和上面差不多,就是加上要涂的费用,并且要选择最少的. 代码如下: #pragma comment(linker, "/STACK:1024000000…
一直在考虑, 每一段的贡献, 没想到这个东西能直接dp..因为所有的h都是一样的. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #define SZ…
[链接] 我是链接,点我呀:) [题意] 连续相同的数字分为一段 你可以改变其中0为1~m中的某个数字(改变成不同数字需要不同花费) 问你最后如果要求分成恰好k段的话,最少需要多少花费 [题解] dp[i][j][k]前i棵树,分成j段,第j段最后一棵树颜色为m的最小花费 很好转移了,分情况就好 [代码] import java.io.*; import java.util.*; public class Main { static InputReader in; static PrintWri…