zoukankan      html  css  js  c++  java
  • 2017 JUST Programming Contest 3.0 J. Boxes Game

    题意:n个价值的东西,A,B两个人可以从最左或最右拿加入自己的分数,都想尽量大,问A-B

    思路:dp[i][j]表示当前这个人取l-r区间的最大值是多少,即为max(sum(a[l]+...a[r])-dp[l][r-1],sum(a[l]+...a[r])-dp[l+1][r]);

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int inf=-1e9;
     4 
     5 int dp[1100][1100];
     6 int a[1100];
     7 int n;
     8 
     9 int hh(int l,int r){
    10     if(dp[l][r]!=inf) return dp[l][r];
    11     if(l>r) return dp[l][r]=0;
    12     int sum=0,ans=inf;
    13     if(l<=r) sum+=a[r]-a[l-1];
    14     if(l<=r){
    15         ans=max(ans,sum-hh(l+1,r));
    16         ans=max(ans,sum-hh(l,r-1));
    17     }
    18     return dp[l][r]=ans;
    19 }
    20 int main(){
    21     int t;
    22     cin>>t;
    23     while(t--){
    24         scanf("%d",&n);
    25         for(int i=1;i<=n+1;i++)
    26             for(int j=1;j<=n+1;j++) dp[i][j]=inf;
    27         for(int i=1;i<=n;i++){
    28             int x;
    29             scanf("%d",&x);
    30             a[i]=a[i-1]+x;
    31 
    32         }
    33        int x=hh(1,n);
    34         cout<<x-(a[n]-x)<<endl;
    35     }
    36 }
  • 相关阅读:
    Redis安装配置
    Git本地服务器搭建
    JDK安装配置
    ssh免密登录
    设计模式
    IDEA 快捷键
    LeetCode Sliding Window Maximum
    ElasticSearch 使用小结
    LeetCode Product of Array Except Self
    LeetCode Delete Node in a Linked List
  • 原文地址:https://www.cnblogs.com/hhxj/p/7528065.html
Copyright © 2011-2022 走看看