首页 > 其他分享 >题解:UVA10482 The Candyman Can

题解:UVA10482 The Candyman Can

时间:2025-01-05 20:11:54浏览次数:6  
标签:int 题解 sum mn long -- Candyman UVA10482 dp

UVA10482 The Candyman Can

思路

记总重量为 \(sum\)。因为 \(n\le 32\) 所以可以暴力。使用动态规划,\(dp_{i,j}\) 代表第 \(1\) 组重量为 \(i\),第 \(2\) 组重量为 \(j\)(则第 \(3\) 组重量为 \(sum-i-j\))是否可以达到。最后再暴力枚举取所有 \(\max (i,j,sum-i-j)- \min (i,j,sum-i-j)\) 中的最小值即为答案。

AC 代码

#include<bits/stdc++.h>
using namespace std;
#define N 2005
long long t,tt,n,a[N],sum,mn,dp[N][N];
int main(){
	cin>>t;
	tt=t;
	while(t--){
		mn=1e9,sum=0;
		cin>>n;
		for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i];
		memset(dp,0,sizeof(dp));
		dp[0][0]=1;
		for(int i=1;i<=n;i++){
			for(int j=sum;j>=0;j--){
				for(int k=sum-j;k>=0;k--){
					if(dp[j][k]){//若dp[j][k]可以达到
						dp[j+a[i]][k]=dp[j][k];//则dp[j+a[i]][k]和dp[j][k+a[i]]也可以
						dp[j][k+a[i]]=dp[j][k];	
					}
				}
			}
		}
		for(int j=sum;j>=0;j--){
			for(int k=sum-j;k>=0;k--){
				if(dp[j][k]) mn=min(mn,max({(long long)j,(long long)k,sum-j-k})-min({(long long)j,(long long)k,sum-j-k}));
			}
		}
		cout<<"Case "<<tt-t<<": "<<mn<<endl;
	}
	return 0;
}

AC 记录

标签:int,题解,sum,mn,long,--,Candyman,UVA10482,dp
From: https://www.cnblogs.com/JimmyQ/p/18653794

相关文章

  • LOJ #3273. 「JOISC 2020 Day1」扫除 题解
    Description平面直角坐标系上一个等腰直角三角形,维护\(4\)种操作:加入\((x,y)\)。把\(y\leql\)的点横坐标变成\(\max⁡(x,n-l)\)。把\(x\leql\)的点纵坐标变成\(\max(y,n-l)\)。查询第\(i\)个点现在的位置。\(1\leqn\leq10^9,1\leqm\leq5\times10^5,1\le......
  • 整数序列的元素最大跨度值题解
    【题目要求】求出n个数中的最大跨度值(最大值-最小值)。一、求出最大值如果a比最大值(max)还要大,那么最大值(max)就变成a,最后max就是n个数中最大的数。二、求出最小值如果a比最小值(min)还要小,那么最小值(min)就变成a,最后min就是n个数中最小的数。【题解代码】#include<bits/stdc++.h>usin......
  • D. World is Mine 题解(动态规划, 思维)
    原题链接:https://codeforces.com/contest/1987/problem/D思路:动态规划,思维。A,B两人吃蛋糕,A吃的蛋糕要求美味度单调递增,所以决定她吃的蛋糕多少就是吃到的蛋糕美味度的种数。对于答案,A从美味度最小的开始吃,吃到该美味度的一块即有效,而B需要将这个美味度的所有蛋糕都吃掉才有......
  • B. 树上的回忆 (memory) 题解
    \(dis(i,j)\)有两种转换方式,第一种是统计每条边被经过了多少次,第二种是变成\(\sum_{i=l}^{r}\sum_{j=l}^{r}dep(lca(i,j))\)。这里采用第二种(因为第一种寄了)。先考虑暴力,采取换根DP:把\([l,r]\)建一棵虚树。对于一个点\(x\)尝试计算\(\sum_{y}dep(lca(x,y))\)。\(y\)......
  • Codeforces 319B Psychos in a Line 题解 [ 绿 ] [ 单调栈 ] [ 动态规划 ] [ adhoc ]
    PsychosinaLine:很好的单调栈优化dp题!观察我们先观察,一个精神病人会一直杀到什么时候。显然,会杀到右边第一个比他大的精神病人那里,然后他就杀不动了。因此我们可以从右往左考虑,算出左边的精神病人杀掉这个精神病人后左边的人的答案是什么。假设左边的人目前已经刀了\(x\)......
  • 题解:AT_abc203_e [ABC203E] White Pawn
    由于\(m\le2\times10^{5}\),所以可以把有黑格子的行扔到一个map里面,然后再用一个set存储当前能走到哪些格子。按照题意暴力转移,开两个vectorin和out,分别存储哪些格子要删掉,哪些格子要加入。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;int......
  • [WC2014] 紫荆花之恋 题解
    啊啊啊啊啊啊啊啊啊啊啊我终于改完啦啊啊啊啊啊啊啊。因为没有在最开始的时候将所有点设置为已经重构的,所以直接\(R15-R70\)间卡了两三天。似乎也是我第一次大规模使用指针了。这道题假如只有一次询问,就是一道简单淀粉质,直接在根节点建立平衡树,记录\(r_x-dis(x,rt)\),然后找......
  • [CF2053E] Resourceful Caterpillar Sequence 题解
    显然两步之内决胜负。否则两个人会来回拉扯,平局。考虑何时Aron会赢。称与叶子结点边距离小于等于\(1\)的结点为【制胜点】。开局\(q\)在叶子,\(p\)不在叶子,直接赢。方案数\(c(n-c)\),其中\(c\)为叶子数量。\(q\)在一个连着【制胜点】的点,\(p\)不在【制胜点】。Nora......
  • [CF2043D] Problem about GCD 题解
    首先的一个观察是可以把\(G\)除掉,转化成\([\lceil\frac{l}{G}\rceil,\lfloor\frac{r}{G}\rfloor]\)中的两个互质数的差最大值。然后的性质非常神奇。令\(l'\gets\lceil\frac{l}{G}\rceil,r'\gets\lfloor\frac{r}{G}\rfloor\)。若\(r'-l'\)充分大,则一定有一组......
  • P4229 某位歌姬的故事 题解
    题目描述\(T\)组数据,求有多少个长为\(n\)的数组\(h\)满足\(1\leh_i\lea\)和以下\(q\)条限制:\[\max_{l_i\lej\leh_i}h_j=w_i\]对\(998244353\)取模。数据范围\(1\leT\le20\)。\(1\len,a\le9\cdot10^8,1\leq\le500\)。\(1\lel_i\ler_i\len,......