GYM 102059 G Fascination Street

2023-11-15

G Fascination Street

参考
给出一串n(2e5)个灯, 每个灯点亮可以照到相邻三个位置, 每个灯点亮都有不同的花费, 现在可以交换k(9)次灯的位置, 求把所有n个位置都照到的最小花费.
交换的肯定是一个亮的灯和一个灭的灯, 不然是没有意义的.(即, 将一个花费低的灯点亮, 根花费高, 未点亮的灯交换位置.)
对于每个位置i, 保存最后两个灯(i-1,i)是否点亮(注意是点亮, 不是被照到), 并保存当前有多少个点亮的灯被交换走, 多少个未点亮的灯被交换进来.
那么只会有4种转移方式:
点亮 花了钱, 灯到账
未点亮 没花钱, 不点亮
点亮被换走(对于这个位置相当于没电亮(因为换过来的是没点亮的)) 花了钱, 跑了
没点亮换过来一个(白piao) 没花钱, 到了

int n, k;
ll w[M];
ll dp[M][2][2][10][10];
//    i  a  b  x   y
// 到i位置, i-1位置是a状态, i位置是b状态, 换走了a个点亮的, 换来了b个不亮的

void init() {
    n = read(), k = read();
    for (int i = 1; i <= n; i++)w[i] = read();
    memset(dp, 0x3f, sizeof(dp));
    dp[0][1][0][0][0] = 0;
    for (int i = 0; i < n; ++i) {
        for (int x = 0; x <= 1; ++x) {
            for (int y = 0; y <= 1; ++y) {
                for (int a = 0; a <= k; a++) {
                    for (int b = 0; b <= k; ++b) {//点亮i+1
                        checkMin(dp[i + 1][y][1][a][b], dp[i][x][y][a][b] + w[i + 1]);
                        if (x || y)//不点亮i+1 不能有000
                            checkMin(dp[i + 1][y][0][a][b], dp[i][x][y][a][b]);
                        if (b < k)//别地方拿一个点亮的放在i+1         (相当于白嫖到一个点亮的)
                            checkMin(dp[i + 1][y][1][a][b + 1], dp[i][x][y][a][b]);
                        if (a < k && (x || y))//这个点亮之后, 放到其他位置去   (相当于没点亮)
                            checkMin(dp[i + 1][y][0][a + 1][b], dp[i][x][y][a][b] + w[i + 1]);
                    }
                }
            }
        }
    }
    ll ans = INF;
    for (int kk = 0; kk <= k; kk++) {
        for (int x = 0; x <= 1; ++x) {
            for (int y = 0; y <= 1; ++y) {
                if (x || y)
                    checkMin(ans, dp[n][x][y][kk][kk]);
            }
        }
    }
    write(ans), enter;
}
I Game on Plane

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GYM 102059 G Fascination Street 的相关文章

  • Codeforces Round #291 (Div. 2)

    题目链接contest 514 A Chewba ca and Number 不允许有前导零 所以如果第一位是9的话 需要特别考虑 一开始理解错了题意 又WA了呜呜呜 include
  • Testing the CATCHER

    http poj org problem id 1887Description A military contractor for the Department of Defense has just completed a series
  • 算法课四

    算法报告四 Dijkstra算法 最短距离 16122020 钟顺源 一 题目大意 给出一张图 并给定起点和终点 问起点到终点的最短距离是多少 有两个特殊要求 1 如果从顶点i到顶点j有不止一条最短路径 那么输出路段数最少者 2 如果具有最
  • poj 1742 Coins

    Problem poj org problem id 1742 Reference www cppblog com flyinghearts archive 2010 09 01 125555 html blog csdn net wang
  • 【BZOJ 4069】 [Apio2015]巴厘岛的雕塑

    4069 apio2015 巴厘岛的雕塑 Time limit 1000 ms Memory limit 65536 KB Description The province of Bali has many sculptures locat
  • 最长01交替子串(浪潮笔试题)

    题意 给一个只有0和1的字符串 允许反转一个连续区间 即0变成1 1变成0 求最长的01交替串多长 允许不连续 我最先想到的是动态规划解法 状态设计方面 首先一个串的状态会有以0结尾和以1结尾两种 然后题目中说允许反转一个连续区间 那么根据
  • hdu 1058 Humble Numbers

    Problem acm hdu edu cn showproblem php pid 1058 题意 找出从小到大第 n 个因子 除了 1 和本身 只有 2 3 5 7 的数 即第 n 个 num 2 a 3 b 5 c 7 d 的数 据说
  • 动态规划问题——最长上升子序列(LIS)(二)

    原文转载自我的博客benym cn 推荐链接 动态规划问题 最长上升子序列 LIS 一 动态规划问题 最长上升子序列 LIS 三 题目描述 一天 小凯同学震惊的发现 自己无内的PM2 5指标是有规律的 小凯采样了PM2 5数值 发现PM2
  • 2020牛客暑期多校训练营(第八场)E Enigmatic Partition —— 找规律,差分上差分,有丶东西

    This way 题意 定义合法序列 n a1 a2 am m的大小是你自己构造的 m gt 3 并且满足以下条件 定义f n 为构造n的合法序列的情况数 然后每次问你n为l r中所有数的f的和是多少 题解 其实就相当于要预处理每个数有多少
  • hdu 1024 Max Sum Plus Plus

    Problem acm hdu edu cn showproblem php pid 1024 题意 给一个长为 n 的序列 有从中挑 m 个相互不重合的子序列求总和 让总和最大 分析 没能看懂百度的前几份题解 好像都跟 kuangbin
  • codeforces Gym 101341 K Competitions

    Problem codeforces com gym 101341 problem K vjudge net contest 162325 problem K Meaning 有 n 场比赛 每一场有 开始时间 a 结束时间 b 价值 c
  • hdu 4405 Aeroplane chess

    Problem acm hdu edu cn showproblem php pid 4405 vjudge net contest 151678 problem R Reference bbs csdn net topics 380193
  • 过河 【状态压缩DP】+【完整的数论推导过程】

    题目链接 题意 很多人以为青蛙是要跳到石头上 一个个往后跳 问最少需要的石头数量 其实不然 题目给的样例的确也是有些坑了 青蛙每次都有跳的距离范围 题目求的是最少会跳到的石头 青蛙可以在水中起跳 它要尽可能的避开石头 也就是问抵达终点时最少
  • gym102263 problem J Thanos Power (dp)

    链接 题意 给出一个大数 有两种操作 加 1 0 x 10 x 10x和减 1 0
  • Human Gene Functions

    http acm hdu edu cn showproblem php pid 1080 Problem Description It is well known that a human gene can be considered as
  • 骰子【概率dp】

    题目链接 P1409 骰子 因为会有人被弹出队列 所以我设置的期望dp为 表示当现在队列中有i个人的时候 第j个人获胜的概率 于是有当只剩一个人的时候 那个人必胜 再往下 先看它在队首的情况 也就是直接获胜的概率加上它被弹到队尾时候的概率
  • hdu 1080 Human Gene Functions

    Problem acm hdu edu cn showproblem php pid 1080 Meaning 给出一个二维表 similarity 表示对应核苷酸配对时的相似度值 横杠 表示用空格代替一个核苷酸 给出两个DNA序列 a 和
  • Palindrome subsequence【区间DP+冗斥】

    题目链接HDU 4632 题目让我们求给定的一段字符串上回文串的长度 一个数也算是回文串 于是我就想怎样去找其中的规律 我举了些例子 先是从相同的字符串开始举例 aaa 对于aaa dp 1 1 1 dp 2 2 1 dp 1 2 dp 1
  • 编程之美2015初赛第二场AB

    题目1 扑克牌 时间限制 2000ms 单点时限 1000ms 内存限制 256MB 描述 一副不含王的扑克牌由52张牌组成 由红桃 黑桃 梅花 方块4组牌组成 每组13张不同的面值 现在给定52张牌中的若干张 请计算将它们排成一列 相邻的
  • 插入数计数类 / 转为换行类dp:AT_agc024_e

    https www luogu com cn problem AT agc024 e 首先题目可以转化成每次插入一个数 满足字典序递增 如果只考虑暴力dfs 先别上dp 想想怎么合法和不算重 合法 也就是插入数有3种情况 插到末尾 插到比他

随机推荐

  • R语言的科学编程与仿真 chapter 4 答案

    chapter 4 Ex1 programe cha4 6 ex1 Ex1 https img blog csdn net 20151226125117523 12 25 15 author Sigua file path file age
  • java 加载oracle 驱动 19c_037、Java--JDBC技术

    1 JDBC 简介 JDBC Java DataBase Connectivity java 数据库连接 是 JavaEE 平台下的技术规范 定义了在 Java 语言中连接数据 执行 SQL 语句的标准 可以为多种关系数据库提供统一访问 数
  • https认证过程(TLS认证过程)

    最近在准备春招 刚好看到https 网上搜了一圈没看到满意的 于是打算自己整理一下 以下内容来源于 计算机网络 第8版 谢希仁 加上了一些自己的拙见 目前的HTTPS是使用http tls的 所以直接了解tls的认证过程即可 曾经广泛使用的
  • SAP接口 财务凭证集成_差旅费报销

    OA系统调用此接口 传输差旅费报销流程的凭证信息到SAP 生成借款类型SAP凭证 调用标准的BABI方法实现 1 首先先介绍一下实现会计凭证生成的BAPI 参考链接 2 增强操作在另一篇文章 SAP接口 财务凭证集成 借款 在此不再赘述 3
  • 最近研究xcodebuild批量打包的一些心得

    转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的 不但开发的时候要适配一堆的机型 好不容易开发完了还要打一堆不同的包给不同的市场 没想到现在这些市场都开辟iOS市场 于是需要打一堆的包给不同的市场 面对暂时给的十二个
  • +-1 RMQ

    考虑分块 令 b log 2 n
  • [SQL系列] 从头开始学PostgreSQL 分库分表

    什么是分库分表 分库分表是一种数据库架构设计的方法 用于应对大规模数据的存储和查询 当单个数据库的存储容量或查询性能无法满足需求时 可以通过将数据分散存储在多个数据库服务器上 以提高系统的可扩展性和性能 分库分表通常包括两个步骤 分库和分表
  • 【模板】AC自动机(加强版)【AC自动机fail树上求最多出现次数】

    题目链接 P3796 给出N个模式串 然后我们用一个文本串去进行匹配 这样的做法 就是AC自动机了 于是乎 我们可以先将N个模式串丢进去 然后建立fail树 然后先对所有的节点求出最大串在文本串中出现的次数 然后利用dfs跑fail树的办法
  • 工业数据存储数据库选型比较

    我们讲工业互联网 工业大数据 首先需要把数据从工业现场采集上来 这是第一步也是基础 海量的数据从工业现场采集之后存在哪里呢 使用什么样的存储方式对后面的数据分析和计算有重要影响 这里对数据库方式的存储进行了一个选型比较 当前的数据库按类型分
  • 线性滤波和卷积的概念 ,线性和非线性对比理解

    一 线性滤波与卷积的基本概念 线性滤波可以说是图像处理最基本的方法 它可以允许我们对图像进行处理 产生很多不同的效果 做法很简单 首先 我们有一个二维的滤波器矩阵 有个高大上的名字叫卷积核 和一个要处理的二维图像 然后 对于图像的每一个像素
  • python多个%s的使用方法 %格式符 使用

    直接看代码理解 usr bin python coding utf 8 a wry b zjl c xxx print a s b s c s a b c 输出 a wry b zjl c xxx 参考 格式符 格式符为真实值预留位置 并控
  • lua 中table的字符串索引和变量索引

    a x y a x 10 print a x 输出10 print a x 输出nil print a y 输出10 a x表示以字符串 x 来索引table a x 以变量x的值来索引table
  • 利用ChatGPT如何进行批量长文本处理工具GPTBAT

    大家好 我是技术宅小伙 今天要跟大家分享一下我之前写的 GPT 长文本处理程序 当时我写完后就把它放到 Hog 上了 因为最开始是为了自己用 所以后来就忘掉了 最近有同学把它翻出来用 然后经常来问我 说不知道这个东西怎么用 其实在我看来这个
  • RTX3090 与pytorch对应版本的安装问题汇总

    一 Linux查看CUDA版本以及cudnn版本号 1 查看CUDA版本 方法1 查看文件 cat usr local cuda version txt 方法2 命令 nvcc version 2 查看cudnn版本 cat usr loc
  • django 转发_为什么django既是MVC也用了MTV 框架?

    概述 前面项目已经创建好 网站也有了 所以接下来要实现网站的具体功能 在 Django 人们把这具体的功能称为 应用 application 创建应用 作用 把相同的东西提取出来比如文章的标题内容等这些相同的字段设置我们可以将他提取出来 p
  • SQL统计次月复购率

    复购率 select zry 首次购买月份 zyhs 当月新增客户数 max case when fgy zry 1 then fgyhs else null end m1 max case when fgy zry 2 then fgyh
  • js生成四个随机字母

    function getRanNum var result for var i 0 i lt 4 i var ranNum Math ceil Math random 25 生成一个0到25的数字 大写字母 A 的ASCII是65 A Z的
  • chatgpt应用知识之如何提问

    与ChatGPT实现高质量会话的关键之一是输入高效的指令和提示 以引导ChatGPT生成准确 有用的回复 以下是一些可以提高与ChatGPT沟通技巧 明确的问题 提出明确 具体的问题可以帮助ChatGPT理解您的需求 并生成更准确的回复 避
  • MAC表、ARP表、IP路由表区别比较

    作用 生成方式 组成 存在设备 MAC表 数据链路层转发 交换机根据数据帧的目的MAC地址查看MAC表 根据表项由相应接口转发出去 根据数据帧的源MAC进行学习 数据帧从那个接口进来的 就把该接口以及该帧的源MAC学习记录下来 MAC地址
  • GYM 102059 G Fascination Street

    G Fascination Street 参考 给出一串n 2e5 个灯 每个灯点亮可以照到相邻三个位置 每个灯点亮都有不同的花费 现在可以交换k 9 次灯的位置 求把所有n个位置都照到的最小花费 交换的肯定是一个亮的灯和一个灭的灯 不然是