AcWing---游戏---区间dp

news/2024/7/7 20:35:08

1388. 游戏 - AcWing题库 

思路:

两个人比赛,是一道博弈论问题,主要思想就是A-B取到最大值。A是我方得到的分数,B是对方得到的分数。我们设g[i][j]是从第i个数到第j个数,先手-后手取得的最大值,分类讨论,先手选择了第i个数,那么g[i][j]=w[i]-g[i+1][j];先手选择了第j个数,那么g[i][j]=w[j]-g[i][j-1]。两者取最大值就好。

区间dp第一维遍历区间长度,第二维遍历左索引。

C++代码:
 

#include<bits/stdc++.h>
using namespace std;

int n;
int w[110];
int dp[110][110];//dp[i][j]---从i开始到j,先手-后手分数的最大值
//dp[i][j]=max(w[i]-dp[i+1][j],w[j]-dp[i][j-1])

int main(){
    cin>>n;
    int sum=0;
    for(int i=0;i<n;i++){cin>>w[i];sum+=w[i];}
    for(int len=1;len<=n;len++){
        for(int i=0;i+len-1<n;i++){
            int j=i+len-1;
            if(i+1<n && j-1>=0){
                dp[i][j]=max(w[i]-dp[i+1][j],w[j]-dp[i][j-1]);
            }
            else if(i+1<n){
                dp[i][j]=w[i]-dp[i+1][j];
            }
            else{
                dp[i][j]=w[j]-dp[i][j-1];
            }
        }
    }
    int d=dp[0][n-1];
    printf("%d %d",(sum+d)/2,(sum-d)/2);
    return 0;
}

Python代码:

n=int(input())
total=0
w=[]
while len(w)<n:
    w=w+list(map(int,input().split()))
total=sum(w)
dp=[[0 for _ in range(110)] for _ in range(110)]
for l in range(1,n+1):
    i=0
    while i+l-1<n:
        j=i+l-1
        if i+1<n and j-1>=0:
            dp[i][j]=max(w[i]-dp[i+1][j],w[j]-dp[i][j-1])
        elif i+1<n:
            dp[i][j]=w[i]-dp[i+1][j]
        else:
            dp[i][j]=w[j]-dp[i][j-1]
        i+=1
d=dp[0][n-1]
print(int((total+d)/2),int((total-d)/2))


http://lihuaxi.xjx100.cn/news/2160546.html

相关文章

azkaban的写法

先创建一个.job文件和一个.sql文件 sql语法写到一个test名字的文件里&#xff0c;之后job写法如下&#xff1a; typecommand commandhive -f test6.sql 一定要严格写&#xff0c;不管是字母还是空格&#xff0c;单引号中就是sql文件的名字 然后将它们一块打包&#xff0c;启动…

【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)

0x01 产品简介 Welcart 是一款免费的 WordPress 电子商务插件。Welcart 具有许多用于制作在线商店的功能和自定义设置。您可以轻松创建自己的原始在线商店。 0x02 漏洞概述 Welcart存在任意文件读取漏洞&#xff0c;未授权的攻击者可以通过该漏洞读取任意文件&#xff0c;获…

ETLCloud结合kafka的数据集成

一、ETLCloud中实时数据集成的使用 在ETLCloud中数据集成有两种方式&#xff0c;一种是离线数据集成&#xff0c;另一种便是我们今天所要介绍的实时数据集成了&#xff0c;两者的区别从名字便可以得知&#xff0c;前者处理的数据是离线的没有时效性的&#xff0c;后者的数据是…

springcloud==springboot3.X+JDK21

2024年新版springcloud springboot3.X JDK21 ROADMAP 配套代码地址 GitHub - hebian1994/cloud2024

Spring Boot 2(4),2024年最新十个面试小技巧

因此&#xff0c;对于Spring Cloud的用户的话&#xff0c;当前时间节点之下&#xff0c;并不太推荐马上去应用Spring Boot 2.4.x。如果你也在学习Spring Cloud&#xff0c;推荐关注这个免费连载教程。 欢迎关注我的公众号&#xff1a;程序猿DD&#xff0c;获得独家整理的免费学…

【MIT6.S081】Lab1: Xv6 and Unix utilities(详细解答版)

实验内容网址&#xff1a;https://xv6.dgs.zone/labs/requirements/lab1.html Sleep 关键点&#xff1a;函数参数判断、系统函数调用 思路&#xff1a; 通过argc来判断函数参数是否正确&#xff0c;通过atoi函数来讲字符串转化为整型&#xff0c;调用sleep函数后退出程序。 代…

rk3588开发板上安装ssh服务

目的&#xff1a;实现远程访问和控制&#xff0c;其他主机远程控制rk3588 方法及操作步骤&#xff1a; 1&#xff09;安装&#xff1a;sudo apt install openssh-server 2&#xff09; 查看运行状态 sudo systemctl status ssh 其它主机远程连接该开发板的ip和端口22即可

前端开发语言种类说明

前端开发主要涉及的语言包括HTML、CSS、JavaScript&#xff0c;以及TypeScript和JQuery等流行工具和框架。这些语言和技术的详细介绍如下&#xff1a;12 HTML&#xff08;HyperText Markup Language&#xff09;。HTML是用于构建Web页面的标记语言&#xff0c;用于定义页面的结…