CF687 D2 C. Bouncing Ball(DP)
题目链接
题意: 给出你长度为nnn的一个序列,你需要从第mmm个开始计算,周期是kkk(每隔kkk个取一次),你想每次取的都是111 你可以进行两种操作:
- 变换,将一个位置为0的转化成1花费xxx代价
- 删除第一个,删除是否整体前移一位,代价是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)相关推荐
- codeforces1457 C. Bouncing Ball
写这个题写了1h,赛后无意看见jly神的代码只能膜拜%%% C. Bouncing Ball 预处理从1→k1\to k1→k开始跳需要添加多少个平台,预处从k+1→nk+1\to nk+1→n这些不 ...
- 1415C. Bouncing Ball
C. Bouncing Ball:题目 很好的dp,1400分难见的题 #include <bits/stdc++.h> using namespace std; #define int ...
- AtCoder AGC002F Leftmost Ball (DP、组合计数)
题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_f 题解: 讲一下官方题解的做法: 就是求那个图(官方题解里的)的拓扑序个数,设\(dp[i ...
- 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]内一 ...
- AGC002F - Leftmost Ball(dp,组合计数)
AGC002F - Leftmost Ball Solution 设fi,jf_{i,j}fi,j表示放iii个白球,确定了jjj个颜色的球的位置的方案数. 有两种转移: 放白球,fi,j−> ...
- ios 获取相册第一个视频_历史上第一个视频游戏
ios 获取相册第一个视频 重点 (Top highlight) Looking closely at the oscilloscope, you what function the picture ...
- 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)
开始在 Windows 上使用 Python(初学者)Get started using Python on Windows for beginners 07/19/2019 本文内容 下面是一个分步 ...
- 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结
达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...
- linux 6.4定时启动,Centos6.4 设置开机自动以某个非root用户启动脚本
搭建LAMP环境注意事项 一:安装mysql 5.5以上版本需要使用cmake 和 bison 并且需要安装ncurses 在安装MySQL完毕之后,需要覆盖 掉 /etc/my.cnf centos ...
- 3Delight NSI: A Streamable Render API
3Delight是应用于高端电影级别渲染的软件渲染器,迄今为止已经参与了无数的电影制作,具体可以参见链接. 如果你对3Delight的印象就依然是RenderMan的替代品,那就显然已经和时代发展脱节 ...
最新文章
- 你不懂的JS学习笔记(作用域和闭包)
- Cling旨在提供一款高性能的C++ REPL
- 通过iTextSharp为PDF添加带有超链接的Bookmark
- dev chartcontrol获取x y轴的值_2020年深圳蛇口x情怀当铺展览详情(时间+地点+门票)...
- vuex 最简单、最详细的入门文档
- 队列处理高并发_高并发架构消息队列面试题解析
- [MCSM]随机搜索和EM算法
- Java设计模式系列之迭代器模式
- JEP JAVA 初体验
- MES助力日立电梯提升精细化管理水平
- python单例模式继承_python单例模式
- NOJ-1148-石子合并
- lab2 binary bomb 详解
- 50个Java多线程面试题
- Python编程:使用os.urandom生成Flask的秘钥SECRET_KEY
- 数据库管理系统实验答案
- 有幸被推荐到首批Oracle YEP计划
- 数学测试卷软件,小学数学练习机_随机出数学练习题软件 50.0官方版
- 对偶方法(Dual Methods)
- selenium 解决滑块验证的问题,自动化登录12306中国铁路网