A了3题给出那个气球的代码其实就是个简单的区间DP。。。#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <cctype> #include <string> #include <cstring> #include <ctime> #include <string.h> #include <string> #include <complex> #include <bits/stdc++.h> using namespace std; #define rep(i,n) for(int i = 0; i < n; ++i) #define Rep(i,n) for(int i = 1; i <= n; ++i) #define lowbit(x) ((x)&(-x)) //#pragma comment(linker,"/STACK:1024000000,1024000000") #define eps 1e-8 #define sqr(x) ((x)*(x)) #define pb(x) push_back(x) #define mp(x,y) make_pair(x,y) typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; typedef pair<ld, ld> pdd; typedef complex<double>cp; template<class T>inline void rread(T&num){     num=0;T f=1;char ch=getchar();     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}     while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();     num*=f; } const int inf = 1e8; const int maxn = 1e6+100, mod = 1e9 + 7,N = 10050,M = 1e6; const int mod1 = 1e8+7,mod2 = 41; const double pi = acos(-1); ll gcd (ll a, ll b) {return ( a ? gcd(b%a, a) : b );} void exgcd(ll a,ll b,ll &d,ll& x,ll& y) {     if(!b){d=a;x=1;y=0;}     else {exgcd(b,a%b,d,y,x);y-=x*(a/b);} } cp power(cp a, int n) {cp p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;} unsigned long long power(unsigned long long a, unsigned long long n) {unsigned long long p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;} ll power(ll a, ll n) {ll p = 1;while (n > 0) {if(n%2) {p = p * a;} n >>= 1; a *= a;} return p;} ll power(ll a, ll n, ll mod) {ll p = 1;while (n > 0) {if(n%2) {p = p * a; p %= mod;} n >>= 1; a *= a; a %= mod;} return p % mod;} //head int n,m,k; int a[600]; int dp[600][600]; int main() {     //freopen("B-small-attempt3.in","r",stdin);     //freopen("B-small-attempt3.out","w",stdout);     int t;     int kase=1;     scanf("%d",&n);     if(n==0)     {         cout<<0<<endl;return 0;     }     for(int i=1;i<=n;i++)         rread(a[i]);     int ans=0;     a[0]=1;a[n+1]=1;     memset(dp,0,sizeof dp);     for(int len = 3;len<=n+2;len++)     {         for(int i=0;i<=n-1;i++)         {             int j = i+len-1;             if(j>n+1)continue;             for(int s = i+1;s<=j-1;s++)             {             int m1 = a[i]*a[s]*a[j],m2 = a[i]*a[s]*a[j];             dp[i][j]=max(dp[i][j],dp[i][s]+dp[s][j]+max(m1,m2));             }            // cout<<i<<" "<<j<<" "<<dp[i][j]<<endl;         }     }     printf("%d\n",dp[0][n+1]);     return 0; }
点赞 3

相关推荐

06-04 18:37
门头沟学院 Java
勇敢的ssr求对象:前面看的有点奔溃,看到只有你是真玩啊,忍不住笑出了声😂
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务