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相关推荐

  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. 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)

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

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

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

  5. 3Delight NSI: A Streamable Render API

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

  6. 201771010126 王燕《面向对象程序设计(Java)》第十六周学习总结

    实验十六  线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: ‐多线程 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. 是进程执行过中产生的多条线索. ...

  7. [转]Windows Phone 7程序设计”完全版电子书可以免费下载了

    本文转自:http://www.cnblogs.com/salam/archive/2010/10/29/1864246.html 现在学习Windows Phone 7开发资料十分有限,除了MSDN ...

  8. javascript创建类_如何使用JavaScript创建吹气效果

    javascript创建类 Have you ever wondered how you can create a realistic air blowing effect with JavaScri ...

  9. 国际C语言混乱代码大赛结果公布

    国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年.1999年 ...

  10. 201771010109焦旭超《面向对象程序设计(java)》第十六周学习总结

    1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程 ...

最新文章

  1. Python 标准库之 Queue
  2. 大学计算机基础课程报告python-大学计算机基础
  3. linux android ndk r9b JNI 开发过程(COCOS2D-X配置)
  4. linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...
  5. QoE驱动的端到端视频直播技术演进
  6. 【IT笔试面试题整理】给定二叉树,给每层生成一个链表
  7. C++ 11 深度学习(四)结构、权限修饰符
  8. 我参与的一个项目的继续总结:牢骚篇
  9. Xcode开发者使用技巧
  10. 【Flutter】Dart的工厂构造方法单例对象初始化列表
  11. 【一天一个C++小知识】016:c++11中的lambda表达式
  12. matlab转置的问题
  13. RTL8762DW手环烧录方法
  14. 微型计算机硬件系统包括什么,微型计算机硬件系统由什么组成(6个基本组成部件)...
  15. android文档在线批注,文档批注
  16. 关于发布app报90096错误,iPhone5启动图片报错
  17. 【转】我是这样对待曾经背叛我的女人的!
  18. 1.PWM基本概念了解
  19. 阻容感基础10:电感器分类(1)-片式电感器
  20. 48所大学!20考研计算机/软件专业课变化的大学名单!

热门文章

  1. 分享一个强大的网盘搜索平台-猪猪盘
  2. UvaLA 4670 Dominating Patterns
  3. php dingo和jwt,laravel dingo/api添加jwt-auth认证
  4. 【upc】生命曲线(线段树) —— 一个能让你搞懂线段树懒标的题目
  5. 微信,百度,字节跳动,支付宝小程序注册流程
  6. 人事管理系统之部门结构树的展示
  7. 死亡时间推断MATLAB,AGU 本周精选文章:火星陨石坑;气候敏感性;水资源压力;洪水灾害建模...
  8. 一次因JDK夏令时导致接口输出日期格式的时间与预期时间不一致的bug排查
  9. i59300h够用吗计算机网络技术,i5 9300H属于什么档次?看完跑分透心凉
  10. ISE UCF 写法