首页 > 其他分享 >P5322 [BJOI2019] 排兵布阵

P5322 [BJOI2019] 排兵布阵

时间:2024-03-03 20:33:17浏览次数:15  
标签:BJOI2019 排兵 P5322 enemy int player troop castle dp

原题链接

题解

巧妙的背包问题
我可以用按顺序遍历城堡,顺便表示出遍历到当前城堡时用掉了多少兵力,这样是可以穷尽所有兵力派送情况的
同时把这个城堡里的敌方兵力升序排序,然后遍历,表示为了消灭所有兵力小于等于ta的敌人所加的分

code

#include<bits/stdc++.h>
using namespace std;
int enemy[105][105]={0};
int dp[100005]={0};
int main()
{
    int PLAYERS,CASTLES,FORCES;
    cin>>PLAYERS>>CASTLES>>FORCES;
    for(int player=1;player<=PLAYERS;player++)
        for(int castle=1;castle<=CASTLES;castle++)  cin>>enemy[castle][player];//矩阵转置,以便排序

    for(int castle=1;castle<=CASTLES;castle++) sort(enemy[castle]+1,enemy[castle]+1+PLAYERS);//每个城堡只要超过一定人数就会加一定分

    for(int castle=1;castle<=CASTLES;castle++)
        for(int troop=FORCES;troop>=0;troop--)//troop代表当前城堡时还剩下多少兵力
            for(int player=1;player<=PLAYERS;player++)//不是特指哪个敌人,而是遍历敌人的兵力
                if(troop>2*enemy[castle][player])  dp[troop]=max(dp[troop],dp[troop-2*enemy[castle][player]-1]+player*castle);//降维背包
                else break;
    cout<<dp[FORCES]<<endl;
    return 0;
}

标签:BJOI2019,排兵,P5322,enemy,int,player,troop,castle,dp
From: https://www.cnblogs.com/pure4knowledge/p/18050653

相关文章

  • 企业排兵布阵之道
    开年后,各企业都纷纷梳理了年度规划。在年度目标,策略,路径明确之后,我们就要考虑用什么样的组织,人才来支撑业务,这就涉及到企业的排兵布阵。 所谓排兵布阵,就是指在具体的业务场景里面,进行组织设计、组织拆分、组织合并、组织目标设计,以及评估什么样的人在里面担任某个团队的leader,......
  • P5321 [BJOI2019] 送别 题解--zhengjun
    由于大家的做法需要大量分类讨论和代码量,这里提供一种不怎么分类的,容易实现的做法。首先,由于墙体会随时变化,所以直接对墙体本身维护不是很方便。我们可以牺牲一点常数,对\((i,j)\)建立四个点\(UL_{i,j},UR_{i,j},DL_{i,j},DR_{i,j}\)分别表示\((i-\varepsilon,j-\varepsilo......
  • P5323 [BJOI2019] 光线
    P5323[BJOI2019]光线题目描述当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收。设对于任意\(x\),有\(x\timesa_i\%\)单位的光会穿过它,有\(x\timesb_i\%\)的会被反射回去。现在\(n\)层玻璃叠在一起,有\(1\)单位......
  • P5319 [BJOI2019] 奥术神杖
    原题虽然不会AC自动机,但这题的前半部分解法让我小小的震撼了由于本人水平有限,所以这里只说前半部分思路我们发现答案\(ans=\sqrt[c]{\prod_{i=1}^{c}{w_i}}\),其中这个\(\sqrt[c]{}\)是很不好算的我们可以把这个柿子写成这个形式:\(ans=(\prod_{i=1}^{c}{w_i})^{\frac{1}{c}}\)......
  • 洛谷P5322 [BJOI2019] 排兵布阵
    题目大意有s名对手,n座城堡,你有m名士兵如果一名玩家向第\(i\)座城堡派遣的士兵数严格大于对手派遣士兵数的两倍,那么这名玩家就占领了这座城堡,获得\(i\)分。求最大得分数据范围对于\(10\%\)的数据:\(s=1,n\le3,m\le10\)对于\(20\%\)的数据:\(s=1,n\le10,m\le1......
  • P5322
    P5322状态表示\[dp[i]表示主人公出动i名士兵获得的分数\]转移将输入数组进行排序,使得\(in[i][j]\)表示对于第\(i\)座城堡,出动兵力第\(j\)小的玩家的士兵数这样做,如果主人公能在\(i\)城堡打败第\(j\)个人,将获得\(i\timesj\)分\[dp[j]=max(dp[j-in[i][k]*......
  • P5322 BJOI2019 排兵布阵
    P5322BJOI2019排兵布阵本题主要考察对模型的转化能力。首先要察觉两条性质:对于一个城堡,想打败一个玩家的同时用最少的士兵,肯定是正好派出这个玩家在这个城堡派出的士兵数量的二倍加一名士兵。在一个城堡上,打败了一个在这个城堡派出士兵数量为\(x\)的玩家,就可以顺便打败所......
  • P5322 [BJOI2019] 排兵布阵
     小C正在玩一款排兵布阵的游戏。在游戏中有nn座城堡,每局对战由两名玩家来争夺这些城堡。每名玩家有m名士兵,可以向第ii座城堡派遣ai名士兵去争夺这个城堡,使得总......
  • [BJOI2019]勘破神机
    题目描述定义\(f_n\)为用\(1\times2\)骨牌填满\(2\timesn\)网格的方案数,\(g_n\)为填满\(3\timesn\)网格的方案数。求:\[\frac{1}{r-l+1}\sum_{i=l}^rC_{f_i}^k/\frac{......