首页 > 其他分享 >洛谷P5322 [BJOI2019] 排兵布阵 题解

洛谷P5322 [BJOI2019] 排兵布阵 题解

时间:2024-08-28 20:22:57浏览次数:7  
标签:BJOI2019 排兵 int 题解 long 士兵 101 dp

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int dp[20001],a[101][101],s,n,m;
signed main(){
	cin>>s>>n>>m;
	for(int j=1;j<=s;j++){
		for(int i=1;i<=n;i++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		sort(a[i]+1,a[i]+s+1);
	}
	for(int i=1;i<=n;i++){
		for(int j=m;j>=0;j--){
			for(int k=1;k<=s;k++){
				if(j>2*a[i][k])dp[j]=max(dp[j],dp[j-2*a[i][k]-1]+k*i);
			}
		}
	}
	cout<<dp[m]<<endl;
	return 0;
}

题解

我们用滚动 dp 来完成这道题,其中 dp[j] 表示在前 i 个城堡放 j 个士兵的最高分。

第 13 行对各个对手的士兵数升序排列,这样方便计算转移时的贡献。

由于滚动数组是倒着滚的,所以 16 行要从大到小排。

第 18 行解释:如果剩下的士兵可以抢下这个城堡,那么我们取选与不选总分的最大值。

最后输出在有 m 个士兵的情况下的最高分,即 dp[m]

标签:BJOI2019,排兵,int,题解,long,士兵,101,dp
From: https://blog.csdn.net/2401_86458279/article/details/141648866

相关文章

  • 局域网内两台设备只有一方可以ping通问题解决
    场景局域网内有两台笔记本,都是windows系统,都是连接的同一个路由器,在同一个网段中。但是其中的一台笔记本192.168.1.101,另外一台是192.168.1.100ping命令测试发现192.168.1.101无法ping通192.168.1.100这是为什么呢?排查与修复首先的两台电脑为了安全,防火墙都是开启的。既然......
  • Atcoder [AGC006D] Median Pyramid Hard 题解 [ 紫 ] [ 二分 ] [ adhoc ]
    MedianPyramidHard:二分trick加上性质观察题。trick我们可以二分值域,然后把大于等于它的数标记成\(1\),其他标记为\(0\)(有些题需要标记成\(-1\)),然后根据这个来check方案是否可行,这通常通过判断某个数是否是\(1\)来实现。本质上其实就是check大于等于它的数能否成为......
  • 文件排版 题解
    前言题目链接:HDU。题意简述给\(n\)个单词和一张图片排版。每个单词长度为\(a_i\)。图片占行不确定,但是占列始终为\([dw+1,dw+pw]\)。排版宽度为\(W\),高度无限制。要求单词间有长度为\(1\)的空格,单词不能超出宽度\(W\),不能覆盖在图片上,单词间相对顺序不能发生改变......
  • 题解 [ABC199F] Graph Smoothing(中文/English)
    本题解提供英文版,位于示例代码之后。Englishversionofthiseditorialisprovidedafterthesamplecode.设行向量:\[A^{(k)}=\begin{bmatrix}a_1^{(k)}&a_2^{(k)}&\cdots&a_n^{(k)}\end{bmatrix}\]表示\(k\)次操作后每个节点点权的期望。特别地,\(A^{(0)}\)表......
  • 递推配套P1192 & 题解:P1192 台阶问题
    我们现在考虑递推。现在的问题是,如何从前几个数据推导出下一个数据。我们现在先推导\(f(n)\)。设\(k=3\)。到\(n\)的方法就是到能一步到\(n\)的台阶的方法总和,所以我们可以推导出:\(f(n)=f(n-1)+f(n-2)+\dots+f(n-k)/f(1)\)。即为:\(f(n)=\sum_{i=......
  • LOJ #160. 树形背包 题解
    Description有\(N\)个物品,编号分别为\(1\ldotsN\)。物品\(i\)的重量为\(w_i\),价值为\(v_i\)。给出每个物品依赖于哪个物品。我们用\(d_i=j\(i>j>0)\)表示:如果要选取物品\(i\),就必须先选取物品\(j\)。另外,我们用\(d_i=0(i>0)\)表示:该物品不依赖于任何物品。......
  • CF1810G The Maximum Prefix 题解
    Description构造一个长度最多为\(n\)的数组\(a\),其每个元素均为\(1\)或\(-1\)。生成方式如下:选择任意整数\(k\in[1,n]\)作为\(a\)的长度。对于\(\foralli\in[1,k]\),有\(p_i\)的概率设\(a_i=1\),有\(1-p_i\)的概率设\(a_i=-1\)。在数列被生成后,计算\(s_i=a......
  • NOI2024 D1T3 口胡题解
    NOI2024D1T3口胡题解题目条件其实就是说对于点对\((a,b)\),从\(a\)到\(b\)的路径上至少要有一条从\(b\)指向\(a\)​的边。将初始状态记作\((T,S)\)​,其中\(T\)​是树,\(S\)​是二元组\((a,b)\)​的集合。注意到特殊性质A蕴含了:如果对于所有二元组\((a,b)\),\(a......
  • [COCI2012-2013#1] SNAGA 题解
    前言题目链接:洛谷。题意简述定义\(f(x)\)表示不能整除\(x\)的最小正整数。给出数字\(n\),每次\(n\getsf(n)\),当\(n=2\)时停止。定义\(g(n)\)为这一过程中的数字个数,例如\(g(6)=4\)。给定\(l,r\),求\(\sum\limits_{i=l}^rg(i)\)。\(3\leql\ltr......
  • 【题解】「CQOI2014」通配符匹配
    【题解】「CQOI2014」通配符匹配https://www.luogu.com.cn/problem/P3167令\(s\)为模式串,\(t\)为文本串。首先有一个显然的的dp是,\(f_{i,j}\)表示模式串的前\(i\)个和文本串的前\(j\)个是否匹配。显然\(O(n^2)\)是过不了的。Motivation:注意到题目限定了通配符......