Bouncing Ball
DIV2-C
题意:
就是给你一个字符穿,如果为1就是有板字,为0没有平台。然后刚开始要从第m个点开始跳,每次条约距离+k,每次跳下去必须有板子。然后给你两个操作一个操作是把最开头的字符删掉,还有一个操作是让一个空的地方有板子。不同的操作花费不同,求最小的花费。
思考:
怎么说呢,读题的时候没注意到只能删最前面的,想了很久,后来才发现。然后呢就是转化为可以从一个点开始跳,但是这个点要>=m,然后就是跳到最后花费多少。这里起点需要枚举,但是每次跳k到底要修改多少次呢,如果每次再累加k,这是n*n的复杂度。想来想去想不到,其实我们的终点是确定把就是n这个点,我们可以从n点开始往前dp,看看这个点如果跳到最后一个点要多少次,更新dp即可。刚开始我还想从前面dp,这怎么dp?必须要从状态确定的地方开始去dp。
代码:
int T,n,m,k;
int va[N];
int dp[N];signed main()
{IOS;cin>>T;while(T--){int a,b;string s;cin>>n>>m>>k>>s>>a>>b;s.insert(s.begin(),' ');for(int i=0;i<=n;i++) dp[i] = 0;int minn = inf;for(int i=n;i>=m;i--){if(i+k<=n) dp[i] = dp[i+k]+(s[i]!='1');else dp[i] = (s[i]!='1');}for(int i=m;i<=n;i++){int sum = dp[i]*a+(i-m)*b;minn = min(minn,sum);}cout<<minn<<"\n";}return 0;
}
总结:
一定要读完题意,然后去思考怎么办,当感觉方法正确的时候,但是复杂度高的时候一定要去想线性的方法去优化,注意dp的本质,不能老想着以前的方法之类的。
Bouncing Ball相关推荐
- 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 ...
- 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)
开始在 Windows 上使用 Python(初学者)Get started using Python on Windows for beginners 07/19/2019 本文内容 下面是一个分步 ...
- 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结
达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...
- 3Delight NSI: A Streamable Render API
3Delight是应用于高端电影级别渲染的软件渲染器,迄今为止已经参与了无数的电影制作,具体可以参见链接. 如果你对3Delight的印象就依然是RenderMan的替代品,那就显然已经和时代发展脱节 ...
- 201771010126 王燕《面向对象程序设计(Java)》第十六周学习总结
实验十六 线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: ‐多线程 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. ...
- [转]Windows Phone 7程序设计”完全版电子书可以免费下载了
本文转自:http://www.cnblogs.com/salam/archive/2010/10/29/1864246.html 现在学习Windows Phone 7开发资料十分有限,除了MSDN ...
- javascript创建类_如何使用JavaScript创建吹气效果
javascript创建类 Have you ever wondered how you can create a realistic air blowing effect with JavaScri ...
- 国际C语言混乱代码大赛结果公布
国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年.1999年 ...
- 201771010109焦旭超《面向对象程序设计(java)》第十六周学习总结
1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程 ...
最新文章
- Python 标准库之 Queue
- 大学计算机基础课程报告python-大学计算机基础
- linux android ndk r9b JNI 开发过程(COCOS2D-X配置)
- linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...
- QoE驱动的端到端视频直播技术演进
- 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
- C++ 11 深度学习(四)结构、权限修饰符
- 我参与的一个项目的继续总结:牢骚篇
- Xcode开发者使用技巧
- 【Flutter】Dart的工厂构造方法单例对象初始化列表
- 【一天一个C++小知识】016:c++11中的lambda表达式
- matlab转置的问题
- RTL8762DW手环烧录方法
- 微型计算机硬件系统包括什么,微型计算机硬件系统由什么组成(6个基本组成部件)...
- android文档在线批注,文档批注
- 关于发布app报90096错误,iPhone5启动图片报错
- 【转】我是这样对待曾经背叛我的女人的!
- 1.PWM基本概念了解
- 阻容感基础10:电感器分类(1)-片式电感器
- 48所大学!20考研计算机/软件专业课变化的大学名单!
热门文章
- 分享一个强大的网盘搜索平台-猪猪盘
- UvaLA 4670 Dominating Patterns
- php dingo和jwt,laravel dingo/api添加jwt-auth认证
- 【upc】生命曲线(线段树) —— 一个能让你搞懂线段树懒标的题目
- 微信,百度,字节跳动,支付宝小程序注册流程
- 人事管理系统之部门结构树的展示
- 死亡时间推断MATLAB,AGU 本周精选文章:火星陨石坑;气候敏感性;水资源压力;洪水灾害建模...
- 一次因JDK夏令时导致接口输出日期格式的时间与预期时间不一致的bug排查
- i59300h够用吗计算机网络技术,i5 9300H属于什么档次?看完跑分透心凉
- ISE UCF 写法