首页 > 其他分享 >扑克游戏

扑克游戏

时间:2023-03-07 09:23:39浏览次数:35  
标签:花色 游戏 int 张牌 扑克 dp

描述

有一种别样“小猫钓鱼”扑克游戏。有 N 张牌,每张牌都有一个花色和点数。游戏 的规则:扑克接龙时,若前面有同样花色的牌,你可以将这两张牌连同之间的牌都取走, 得到的分值为取走牌点数之和。这里说的是可以,不是必须。给定扑克接龙的顺序,求 最多的得分。

输入

第一行一个整数 N。

第二行 N 个整数,依次表示 1~N 张牌的花色。

第三行 N 个整数,依次表示 1~N 张牌的点数。

输出

一个整数,为游戏可以得到最大得分。

输入样例 1

7

1 2 1 2 3 2 3

1 4 3 4 3 4 5

输出样例 1

23

提示

数据范围:1<=n<=3000

题目来源

BCOJ

思路

强行枚举肯定超时,这个就不多说了......

设dp[i]为前i张牌可以取到的的最大得分,最终只需要输出dp[n]即可;

dp[i]的值应该怎么取?

首先要考虑一种特殊情况:第i张牌的花色a[i]有可能是第一次出现的,也就是前面没有与它相同花色的牌,所以可以先让dp[i]=dp[i-1]。

接下来怎么做?重点来了!

由题意得,dp[i]=dp[j-1]+(b[j]+b[j+1]+...+b[i])(1<=j<i),其中对j能取到的每一个值代入,再确定dp[i]能取到的最大值即可。

这里有一个小细节:

b[j]+b[j+1]+...+b[i]的值如果直接求和,(有可能不)会出现超时的情况,所以我们可以再输入的时候进行一个求前缀和的操作,最后计算b[i]-b[j-1]的值就可以了

代码:

#include<iostream>
using namespace std;
int n,a[3005],b[3005],dp[3005],ans;
int main(){
  ios::sync_with_stdio(0);
  cin>>n;
  for(int i=1;i<=n;i++)
  cin>>a[i];
  for(int i=1;i<=n;i++){
    cin>>b[i];
    dp[i]=b[i];
    b[i]+=b[i-1];
  }
  for(int i=1;i<=n;i++){
    dp[i]=dp[i-1];
    for(int j=1;j<i;j++)
      if(a[j]==a[i])
        dp[i]=max(dp[i],dp[j-1]+b[i]-b[j-1]);
  }
  cout<<dp[n];
  return 0;
}

标签:花色,游戏,int,张牌,扑克,dp
From: https://www.cnblogs.com/cytxzgbp/p/17186918.html

相关文章

  • 2023年小程序游戏发展前景分析
    随着移动互联网时代的到来,越来越多的人参与了小程序开发。目前根据《2022微信小游戏增长白皮书》,微信小游戏开发人员人数已超过10万人。今天就来一起聊聊小程序游戏未来的发......
  • 小程序游戏未来的发展会去向何方?
    随着移动互联网时代的到来,越来越多的人参与了小程序开发。目前根据《2022微信小游戏增长白皮书》,微信小游戏开发人员人数已超过10万人。今天就来一起聊聊小程序游戏未来的......
  • nim游戏
    推荐阅读:\(nim\)\(SG\)\(OI-wiki\)公平组合游戏模板:P2197【模板】nim游戏点击查看代码#include<bits/stdc++.h>#definecsconst#defineriregisterusingna......
  • unity3D游戏存档与读档16
    Unity中使用的存档方式PlayerPrefs:数据持久化方案采用键值对的方式对数据进行存储PlayPrefs.SetInt("Index",1);可以存储IntFloatString类型的数据PlayPrefs.S......
  • unity3D游戏音效开关设置16
    得到背景音乐选框赋值赋值usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;//2.获得UIusingUnityEngine.UI;publicclassUI......
  • unity3游戏build14
    file——>buildsetting添加场景......
  • unity3D制作暂停游戏和继续游戏12
    菜单出来时枪不能旋转游戏需要暂停创建空物体控制所有的游戏状态创建脚本usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;public......
  • 斯坦福课程 UE4 C++ ARPG游戏实例教程 01.基础AI与行树
    斯坦福课程UE4C++ARPG游戏实例教程0.绪论前言&摘要本篇文章是基于斯坦福UE4C++课程的学习记录。因为B站用户surkea由于学业原因,暂停了课程笔记的更新,这里狗尾续貂,将......
  • 斯坦福课程 UE4 C++ ARPG游戏实例教程 0.绪论
    斯坦福UE4C++课程学习笔记0.绪论前言UEC++在国内目前还处于比较新的一个领域,网上能找到的教程多为蓝图教程,且质量良莠不齐。终于在B站找到了外网搬运的斯坦福UEC++......
  • Java GUI编程(包括awt,event)弹球小游戏功能扩充。
    原网址:https://gitee.com/EdsionKXXX/pinball-game-demo源代码:1packageAWT_GameDemo;234importjavax.swing.*;5importjava.awt.*;6importja......