首页 > 其他分享 >P5851 [USACO19DEC] Greedy Pie Eaters P

P5851 [USACO19DEC] Greedy Pie Eaters P

时间:2024-02-17 21:02:16浏览次数:21  
标签:USACO19DEC P5851 int ll 305 long Eaters 操作

n,m较小,同时又是区间问题,可以考虑区间dp。
设定\(f[i][j]\)为只在i ~ j 范围内操作的最大贡献,为了将操作表示出来可以设g[k][i][j]为在i ~ j 内操作一次的包括k点最大贡献。
通过这些可以推出:
\(f[i][j]=max_{k=i}^jf[i][k-1]+f[k+1][j]+g[k][i][j]\),这样一来两边的操作也不会冲突,又可以保证一定可以一次操作因为中间一定留了一个k点。
反过来看g,也就是又一次区间dp的操作罢了,对于一头牛的\(l_i,r_i\),把\(x\in[l_i,r_i]\)的\(g[x][l_i][r_i]=w_i\)就是初始化,然后只需要最大贡献,于是取最大值,\(g[k][i][j]=max(g[k][i+1][j],g[k][i][j-1])\)。

#include<algorithm>
#include<stdio.h>
#define ll long long
using namespace std;
int n,m;
ll g[305][305][305];
ll f[305][305];
int main() {
//	freopen("P5851.in","r",stdin);
//	freopen("P5851.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++) {
		ll w;int l,r; scanf("%lld%d%d",&w,&l,&r);
		for(int k=l;k<=r;k++) g[k][l][r]=max(g[k][l][r],w);
	}
	for(int len=1;len<=n;len++) {
		for(int l=1;l+len-1<=n;l++) {
			int r=l+len-1;
			for(int k=l;k<=r;k++) {
				g[k][l][r]=max(g[k][l][r],max(g[k][l+1][r],g[k][l][r-1]));
			}
		}
	}
	for(int len=1;len<=n;len++) {
		for(int l=1;l+len-1<=n;l++) {
			int r=l+len-1;
			for(int k=l;k<=r;k++) {
				f[l][r]=max(f[l][r],f[l][k-1]+g[k][l][r]+f[k+1][r]);
			}
		}
	}
	printf("%lld",f[1][n]);
	return 0;
}

标签:USACO19DEC,P5851,int,ll,305,long,Eaters,操作
From: https://www.cnblogs.com/1n87/p/18018393

相关文章

  • USACO19DEC P
    GreedyPieEatersP有\(m\)头奶牛,\(n\)个派。选择一个奶牛序列\(\{c_k\}\),从\(1\)到\(k\),奶牛\(c_i\)会吃掉\([l_i,r_i]\)的所有派(\([l_i,r_i]\)不能已经全部吃完)。求\(\sumw_{c_i}\)的最大值。\(n\le300\),\(m\le\frac{n(n-1)}{2}\),\(1\lew_i\le10^6\),......
  • [USACO19DEC] Greedy Pie Eaters P 区间dp
    题目背景FarmerJohnhasMMcows,convenientlylabeled1…M1…M,whoenjoytheoccasionalchangeofpacefromeatinggrass.Asatreatforthecows,FarmerJohnhasbakedNNpies(1≤N≤3001≤N≤300),labeled1…N1…N.Cowiienjoyspieswithlabelsinther......
  • P5838 [USACO19DEC] Milk Visits G
    P5838[USACO19DEC]MilkVisitsGLuoguP5838Solution提供一种奇特的\(\mathcalO(\dfrac{n\sqrtn\logn}{\omega})\)的做法。树链剖分转化成序列问题。然后变成了询问一个区间\(l,r\)是否存在一个颜色\(k\),显然可以\(\mathcalO(n)\)预处理\(\mathcalO(\sqrtn)\)......
  • P5836 [USACO19DEC] Milk Visits S - 洛谷题解
     题目链接:[P5836] USACO19DEC] MilkVisitsS-洛谷|计算机科学教育新生态(luogu.com.cn)这道题可以用并查集来解决。题目中每个结点只有两个状态:H和G。那么我们可以推断出,只有当起点和终点间每个结点的状态相同但是起点(或者终点或起点到终点之间的某一点)与所需状态不同......
  • CodeForces - 1066B Heaters 体验还不错
    B.Heaterstimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputVova'shouseisanarrayconsistingof nn eleme......
  • P5851 [USACO19DEC]Greedy Pie Eaters P
    设$K[x][y][z]$表示吃$z$的奶牛且该奶牛喜欢吃的区间在$x$至$y$之间。容易想到$K[x][y][z]$的转移方程$K[x][y][z]=\max(K[x][y][z],\max(K......
  • P5838 [USACO19DEC]Milk Visits G 【树上莫队】
    P5838[USACO19DEC]MilkVisitsG给定一颗树,每个点有点权,\(m\)次询问,每次求\(u\)到\(v\)之间的路径是否出现过权值为\(w\)的点。树上莫队板子题,我们需要一个dfs......