题目链接
题意: 给出你长度为nnn的一个序列,你需要从第mmm个开始计算,周期是kkk(每隔kkk个取一次),你想每次取的都是111 你可以进行两种操作:

  1. 变换,将一个位置为0的转化成1花费xxx代价
  2. 删除第一个,删除是否整体前移一位,代价是yyy

题解: 
我是fw就是从后往前看是否需要变换,然后从前往后看删除前面的数代价大还是不删除代价大.
简单的说就是,两种方式 变换与删除,表示就OK了。
变换:因为我们是从前往后删数,所以后面的相对不变化所以我们就需要维护这个相对不变化的。就像前缀和一样维护出来。以达到取数取的都还是1
删除:我们是从前往后删,那么就是看从那个地方开始更优。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5;
ll T, n, p, k, x, y;
bool a[N];
ll sum[N];
inline ll read() {ll tot = 0, f = 1; char c = getchar ();while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar (); }while (c >= '0' && c <= '9') { tot = tot * 10 + c - '0'; c = getchar (); }return tot * f;
}
int main(){T = read();while (T--) {memset (sum, 0, sizeof (sum));ll ans = 0x3f3f3f3f;n = read (); p = read (); k = read ();char ch[N]; cin >> ch + 1;for (ll i = 1; i <= n; i++) a[i] = ch[i] - '0';///找到没个点的代价x = read (); y = read ();for (ll i = n; i >= 1; i--) {sum[i] = sum[i + k] + (a[i] == 0 ? 1: 0) * x;///从后往前枚举是否需要换数}for (ll i = 0; i <= n - p; i++) {ans = min(ans, i * y + sum[p + i]);///从前往后枚举 是否删数}printf ("%lld\n", ans);}return 0;
}

CF687 D2 C. Bouncing Ball(DP)相关推荐

  1. codeforces1457 C. Bouncing Ball

    写这个题写了1h,赛后无意看见jly神的代码只能膜拜%%% C. Bouncing Ball 预处理从1→k1\to k1→k开始跳需要添加多少个平台,预处从k+1→nk+1\to nk+1→n这些不 ...

  2. 1415C. Bouncing Ball

    C. Bouncing Ball:题目 很好的dp,1400分难见的题 #include <bits/stdc++.h> using namespace std; #define int ...

  3. AtCoder AGC002F Leftmost Ball (DP、组合计数)

    题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_f 题解: 讲一下官方题解的做法: 就是求那个图(官方题解里的)的拓扑序个数,设\(dp[i ...

  4. Codeforces Round #740 (Div. 2) D2. Up the Strip dp + 分块优化 + 逆向思维

    传送门 文章目录 题意: 思路 题意: 有nnn个细胞,你初始在第nnn细胞上,假设你当前在xxx处,你每次可以进行如下两个操作: (1)(1)(1)选择[1,x−1][1,x-1][1,x−1]内一 ...

  5. AGC002F - Leftmost Ball(dp,组合计数)

    AGC002F - Leftmost Ball Solution 设fi,jf_{i,j}fi,j​表示放iii个白球,确定了jjj个颜色的球的位置的方案数. 有两种转移: 放白球,fi,j−> ...

  6. ios 获取相册第一个视频_历史上第一个视频游戏

    ios 获取相册第一个视频 重点 (Top highlight) Looking closely at the oscilloscope, you what function the picture ...

  7. 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)

    开始在 Windows 上使用 Python(初学者)Get started using Python on Windows for beginners 07/19/2019 本文内容 下面是一个分步 ...

  8. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...

  9. linux 6.4定时启动,Centos6.4 设置开机自动以某个非root用户启动脚本

    搭建LAMP环境注意事项 一:安装mysql 5.5以上版本需要使用cmake 和 bison 并且需要安装ncurses 在安装MySQL完毕之后,需要覆盖 掉 /etc/my.cnf centos ...

  10. 3Delight NSI: A Streamable Render API

    3Delight是应用于高端电影级别渲染的软件渲染器,迄今为止已经参与了无数的电影制作,具体可以参见链接. 如果你对3Delight的印象就依然是RenderMan的替代品,那就显然已经和时代发展脱节 ...

最新文章

  1. 你不懂的JS学习笔记(作用域和闭包)
  2. Cling旨在提供一款高性能的C++ REPL
  3. 通过iTextSharp为PDF添加带有超链接的Bookmark
  4. dev chartcontrol获取x y轴的值_2020年深圳蛇口x情怀当铺展览详情(时间+地点+门票)...
  5. vuex 最简单、最详细的入门文档
  6. 队列处理高并发_高并发架构消息队列面试题解析
  7. [MCSM]随机搜索和EM算法
  8. Java设计模式系列之迭代器模式
  9. JEP JAVA 初体验
  10. MES助力日立电梯提升精细化管理水平
  11. python单例模式继承_python单例模式
  12. NOJ-1148-石子合并
  13. lab2 binary bomb 详解
  14. 50个Java多线程面试题
  15. Python编程:使用os.urandom生成Flask的秘钥SECRET_KEY
  16. 数据库管理系统实验答案
  17. 有幸被推荐到首批Oracle YEP计划
  18. 数学测试卷软件,小学数学练习机_随机出数学练习题软件 50.0官方版
  19. 对偶方法(Dual Methods)
  20. selenium 解决滑块验证的问题,自动化登录12306中国铁路网

热门文章

  1. 【原创】JS 数字转换成英文写法(包含小数)
  2. 电脑桌面打开计算机窗口,电脑怎么打开运行窗口
  3. 如何购买阿里云香港服务器?又有什么什么好处呢?
  4. MFC编辑框控件绑定变量出现神奇bug
  5. 《机器学习实战》笔记——第四章:基于概率论的分类方法:朴素贝叶斯
  6. 元数据管理 开源项目技术选型
  7. Windows 系统引导过程
  8. 2015年imac一体机安装双系统问题及解决技巧
  9. 2015 iMac如何绕过TMP安装Windows11(不用Parallels虚拟机实现macOS与Windows11双系统)
  10. MSP430F149TIMER_A的连续计数模式