WA90pts on #5 马蜂良好
  • 板块P1544 三倍经验
  • 楼主UKE_Piu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/30 09:12
  • 上次更新2024/11/30 12:48:11
查看原帖
WA90pts on #5 马蜂良好
787031
UKE_Piu楼主2024/11/30 09:12

rt

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
int n,k;
const int N=110;
ll max(ll _a,ll _b){ return _a>_b?_a:_b; }
ll a[N][N],f[N][N][N];
int main(){
	cin>>n>>k; k=min(k,n);
	for(int i=0;i<N;i++)
	  for(int j=0;j<N;j++)
	    for(int kk=0;kk<=k;kk++) 
		  f[i][j][kk]=-1e18;
	
	for(int i=1;i<=n;i++) 
	  for(int j=1;j<=i;j++) cin>>a[i][j];
	for(int i=1;i<=n;i++) f[n][i][0]=a[n][i],f[n][i][1]=a[n][i]*3ll;
	
	for(int i=n-1;i>=1;i--){
		
	  for(int j=1;j<=i;j++){
	    for(int kk=0;kk<=k;kk++){
	    	if(kk>0) {
	    		f[i][j][kk]=max(f[i][j][kk],max(f[i+1][j][kk-1],f[i+1][j+1][kk-1])+a[i][j]*3ll);
			//	cout<<f[i][j][kk]<<' ';
			}
			f[i][j][kk]=max(f[i][j][kk],max(f[i+1][j][kk],f[i+1][j+1][kk])+a[i][j]);
		//	cout<<f[i][j][kk]<<	' ';
		}
//		cout<<"\n\n\n";
	  }
//	  cout<<"\n\n\n\n";
	}
	ll ans=-1e18;	
	for(int i=0;i<=n;i++) {
		ans=max(ans,f[1][1][i]);
	//	cout<<f[1][1][i]<<' ';
	}
	cout<<ans;
	return 0;
}
2024/11/30 09:12
加载中...