这题的题解和我写的有一拼,异常简洁,爆炸。

这题思路dp
dp[i][j] 表示的是讨论到第n位,并比原数的前n位多了 j∗2i
显然j只能取0,1,毕竟2进制嘛
之后转移就好了,注意下面两个重要状态
dp[i][1]=dp[i][0]+2
dp[i][0]=dp[i][1]+2

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <vector>
  4. #include <iostream>
  5. #include <queue>
  6. using namespace std;
  7. const int N = 1e6+5;
  8. const int MOD = 998244353;
  9. const int INF = 0x3f3f3f3f;
  10. char s[N];
  11. int dp[N][2];
  12. void gmin(int &a, int b) {
  13. if(a > b) a = b;
  14. }
  15. int main() {
  16. while(~scanf("%s", s)) {
  17. int len = strlen(s);
  18. memset(dp, INF, sizeof(dp));
  19. for(int i = len+1; i >= 2; --i) s[i] = s[i-2];
  20. // for(int i = 2; i < len+2; ++i) printf("%c", s[i]); printf("\n");
  21. s[1] = '0'; s[len+2] = '0';
  22. // for(int i = 2; i <= len+1; ++i) printf("%c", s[i]); printf("\n");
  23. dp[0][0] = 0;
  24. for(int i = 1; i <= len+2; ++i) {
  25. for(int j = 0; j < 2; ++j) {
  26. // if(dp[i-1][j] == INF) continue;
  27. if(j == 0) {
  28. if(s[i] == '0') {
  29. gmin(dp[i][0], dp[i-1][0]);
  30. gmin(dp[i][1], dp[i-1][0] + 2);
  31. } else {
  32. gmin(dp[i][0], dp[i-1][0] + 2);
  33. }
  34. }else {
  35. if(s[i] == '0') {
  36. gmin(dp[i][1], dp[i-1][1] + 2);
  37. }else {
  38. gmin(dp[i][0], dp[i-1][1] + 2);
  39. gmin(dp[i][1], dp[i-1][1]);
  40. }
  41. }
  42. }
  43. // printf("%d:%d %d\n", i, dp[i][0], dp[i][1]);
  44. }
  45. printf("%d\n", dp[len+2][0]-1);
  46. }
  47. return 0;
  48. }

hihocoder Challenge 29 B.快速乘法的更多相关文章

  1. hihocoder Challenge 29 A.序列的值

    我现在就感觉我这人现在真的没有dp的意识 其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集. 按照题解的意思来,表示二进制第i位的值为j(0,1)的组合有多少,然后 ...

  2. hihocoder Challenge 29 D. 不上升序列

    这场爆零比赛题目还是要补的 这道题据说是出烂掉的原题,我找了下 CF13.C/ CF371 div1 C,一模一样 我服这群原题大佬 为 当时,使 不严格递增的最小步数,那么 Otherwise 显然 ...

  3. HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)

    Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...

  4. 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai  的数 ...

  5. 快速幂&快速乘法

    尽管快速幂与快速乘法好像扯不上什么关系,但是东西不是很多,就一起整理到这里吧 快速幂思想就是将ax看作x个a相乘,用now记录当前答案,然后将指数每次除以2,然后将当前答案平方,如果x的2进制最后一位 ...

  6. [BZOJ4002][JLOI2015]有意义的字符串-[快速乘法+矩阵乘法]

    Description 传送门 Solution 由于这里带了小数,直接计算显然会爆掉,我们要想办法去掉小数. 而由于原题给了暗示:b2<=d<=(b+1)2,我们猜测可以利用$(\fra ...

  7. 整数快速乘法/快速幂+矩阵快速幂+Strassen算法

    快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c  二.矩 ...

  8. 快速乘法,幂计算 hdu5666

    在实际应用中为了防止数据爆出,在计算a*b%m和x^n%m时,可以采用此方法.在数论中有以下结论: a*b%m=((a%m)*(b*m))%m ; (a+b)%m=(a%m+b%m)%m ; _int ...

  9. HDU 5768Lucky7(多校第四场)容斥+中国剩余定理(扩展欧几里德求逆元的)+快速乘法

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Time Limit: 2000/1000 MS (Java/Others)    M ...

随机推荐

  1. 洛谷 [P3398] 仓鼠找sugar

    树剖求LCA 我们可以发现,两条路径ab,cd相交,当且仅当 dep[lca(a,b)]>=dep[lca(c,d)]&(lca(lca(a,b),c)==lca(a,b)||lca(l ...

  2. java 实现websocket的两种方式

    简单说明 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...

  3. IDEA Default模式下的常用快捷键

    功 能 快 捷 键 备 注 Back Up Ctr + Alt + Left Forword Ctr + Alt + Right Previous Tab Alt + Left Next Tab Al ...

  4. 02-Nginx+MySQL+PHP7

    [安装Nginx] #先安装如下包 yum install gcc gcc-c++ kernel-devel yum -y install pcre-devel openssl openssl-dev ...

  5. 【Javascript】在文本框光标处插入文字并定位光标 (转)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. java 中对对象的调用

    java程序设计语言对对象采用的不是引用的调用,实际上对象引用进行的是值得传递.(from:核心卷1  page:123)

  7. Mysql5.7在CentOs环境下定时备份数据库

    咱创建一个目录,专门用于存放Mysql的备份文件./data/mysql_bak.写个shell脚本,每分钟备份一次测试以下. 脚本代码: chmod /testdir/backup.sh //给脚本 ...

  8. 试着把.net的GC讲清楚(3)

    前两篇写的都是gc的一些概念和细节,这些东西对自己以后写代码有什么用,本篇我就准备将这些内容. root 第一篇文章中讲了GC在遍历存活对象的时候,都是从root开始的,root是一些对象的引用,例如 ...

  9. Qt create 如何构建 ActiveX 控件?

    ActiveX.pro #------------------------------------------------- # # Project created by QtCreator 2018 ...

  10. BUNOJ 1011

    字符串处理的题.原题链接 AC代码: #include<cstring> #include<cstdio> #include<string> #include< ...