洛谷P5322 [BJOI2019] 排兵布阵

2024-02-29 18:36

本文主要是介绍洛谷P5322 [BJOI2019] 排兵布阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分组背包
题目链接

思路

发现因为策略不变,所以当第 j j j个人的第 i i i个城堡被攻占时,所有对第 i i i个城堡出兵数量小于第 j j j个人的都会被攻占
现在我们可以用上面的结论推翻 s s s轮对做题的限制,让每个城堡作为一组,每组里有 s s s个玩家
为了方便计算增加的分数,我们需要给每个城堡排序

ACcode

#include<bits/stdc++.h>using namespace std;const int M = 2e4 + 9;
int dp[M], a[M][M];int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int s, n, m;cin >> s >> n >> m;for (int i = 1;i <= s;i++)for (int j = 1;j <= n;j++)cin >> a[j][i];//第i个玩家的第j个城堡for (int i = 1;i <= n;i++)sort(a[i] + 1, a[i] + 1 + s);for (int i = 1;i <= n;i++)//城堡for (int j = m;j >= 0;j--)for (int k = 1;k <= s;k++)//每个玩家if (j > a[i][k] * 2)dp[j] = max(dp[j], dp[j - a[i][k] * 2 - 1] + i * k);int ans = 0;for (int i = 0;i <= m;i++)ans = max(ans, dp[i]);cout << ans;return 0;
}

这篇关于洛谷P5322 [BJOI2019] 排兵布阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759683

相关文章

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

【hdu】敌兵布阵(线段树,更加结点,区间求和)

最近开始刷线段树,主要围绕notonlysuccess的线段树总结刷。 结点修改还是比较简单的,不需要什么懒惰标记,直接二分递归就可以了。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vecto

洛谷 凸多边形划分

T282062 凸多边形的划分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先整一个半成品,高精度过两天复习一下补上 #include <iostream>#include <algorithm>#include <set>#include <cstring>#include <string>#include <vector>#include <map>

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

HDU 1166 敌兵布阵 (树状数组--单点更新,区间求值)

OJ题目 : click here ~~~ 中文的,大概题意就不说了。树状数组的水题。 忘记清空数组,导致WA,真可恨啊~~~~~~~ AC_CODE int n;int num[50002];int lowbit(int x){return x&(-x);}int sum(int x){int ret = 0;while(x > 0){ret += num[x];x -= l

洛谷P5490扫描线

0是最小的数字,将一个线段看成一个区间,对于一个矩形,从下扫到上,入边为1,而出边为-1,意思是将这个区间上的所有点加1(区间修改).把线段表示为Line[i],其中记录了l,r,h,tag,左右端点,高度,入边还是出边(1或-1) 那么每次区间修改后不为0的区间它的值可能是1,2,3或者是其它数字,这不好统计,可以将它转化一下,0是不是表示没有被覆盖过的地方,我们只要统计0的个数然后用总长减去

挤牛奶洛谷uasco

题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。

洛谷刷题(7)

P8738 [蓝桥杯 2020 国 C] 天干地支 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊 (wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。 地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、

A 敌兵布阵

A. 敌兵布阵 Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format:  %I64d      Java class name:  Main Submit  Status  PID: 5379 Font Size:  +  - C国的死对头A国这段