zoukankan      html  css  js  c++  java
  • [洛谷P5322][BJOI2019][题解]排兵布阵

    0.咕

    国庆假期就这么过去了呢
    原题

    1.解法

    发现对于每一个城堡,一个对手被攻陷后所有比他小的都会被攻陷,于是我们先对对手的兵力排序。
    此时在这(s)个对手里,第(i)个对手的攻陷代价为(2 imes a_i+1),攻陷后获得的价值为(i imes k)
    每个城堡(s)个对手,选一个攻打,这是啥不用说了吧。

    2.代码

    #define N 110
    #define M 20010
    int s,n,m,a[N][N],f[M];
    int main(){
    	Read(s),Read(n),Read(m);
    	for(rg int i=1;i<=s;i++){
    		for(rg int j=1;j<=n;j++){
    			Read(a[j][i]);
    		}
    	}
    	for(rg int i=1;i<=n;i++){
    		sort(a[i]+1,a[i]+1+s);
    		for(rg int j=1;j<=s;j++)a[i][j]=a[i][j]*2+1;
    	}
    	for(rg int i=1;i<=n;i++){
    		for(rg int j=m;j>=0;j--){
    			for(rg int k=1;k<=s;k++){
    				if(j>=a[i][k]){
    					f[j]=max(f[j],f[j-a[i][k]]+i*k);
    				}
    			}
    		}
    	}
    	cout<<f[m]<<endl;
    	return 0;
    }
    

    3.完结撒花

    又水了一篇题解真好

  • 相关阅读:
    js实现冒泡排序
    AngularJS控制器
    AngularJS指令
    AngularJS表达式
    AngularJS基础
    Python小例子(判断质数)
    Python小例子(求和)
    Python笔记
    js小例子(简单模糊匹配输入信息)
    word学习笔记
  • 原文地址:https://www.cnblogs.com/juruoajh/p/13772919.html
Copyright © 2011-2022 走看看