时间限制:20000ms
单点时限:1000ms
内存限制:256MB

描述

在写代码时,我们经常要用到类似 x × a 这样的语句( a 是常数)。众所周知,计算机进行乘法运算是非常慢的,所以我们需要用一些加法、减法和左移的组合来实现乘一个常数这个操作。具体来讲, 我们要把 x × a 替换成:(x<<a0) op1 (x<<a1) op2 (x<<a2) ... opn (x<<an) 这样的形式,其中opi 是+或者-。

举个例子:x × 15 = (x<<4) - (x<<0)。

在本题中,假设左移(包括左移0)和加法、减法所需要的时间都是一个单位的时间,上述的例子所需要的时间是3。

现在给定常数 a 的二进制形式,求实现 x × a 最少需要多少单位的时间。

输入

一个01串,表示 a 的二进制形式,从左到右分别是从高位到低位。

0 < 01串的长度之和 ≤ 106。

a > 0。

输出

输出一个数,表示最小需要多少单位的时间可以实现 x × a

样例输入
1111
样例输出
3
 
   转移考虑i-1位 加还是减就好了
  时间复杂度O(n);
#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define ls i<<1
#define rs ls | 1
#define mid ((ll+rr)>>1)
#define pii pair<int,int>
#define MP make_pair
typedef long long LL;
const long long INF = 1e18+1LL;
const double Pi = acos(-1.0);
const int N = 1e6+, M = 1e3+,inf = 1e9,mod = 1e9+; char a[N];
int dp[N][],n;
int main() {
scanf("%s",a+);
n = strlen(a+);
a[n+] = '';
dp[][] = -,dp[][] = ;
for(int i = ; i <= n+; ++i) dp[i][] = inf, dp[i][] = inf;
for(int i = ; i <= n; ++i) {
if(a[i+] == '') {
dp[i+][] = min(dp[i+][],dp[i][]+);
dp[i+][] = min(dp[i+][],dp[i][]);
dp[i+][] = min(dp[i+][],dp[i][]+);
}
else {
dp[i+][] = min(dp[i+][],dp[i][]+);
dp[i+][] = min(dp[i+][],dp[i][]);
dp[i+][] = min(dp[i+][],dp[i][]+);
dp[i+][] = min(dp[i+][],dp[i][]+);
}
}
printf("%d\n",max(,(dp[n+][])));
return ;
}
 

最新文章

  1. MongoDB 常用故障排查工具
  2. C#语言数据总结
  3. strtol,strtoll,strtoul, strtoull字符串转化成数字
  4. Samba Linux 和windows 共享
  5. 用c语言产生随机数的方法
  6. WindowsPhone8 数据库增删改查
  7. Flask源码阅读笔记(一)
  8. Spring Boot 基础教程系列学习文档
  9. Pycharm中的加载多个项目
  10. bzoj2811[Apio2012]Guard 贪心
  11. MySQL Error Number 1005 Can’t create table(Errno:150)
  12. codeforces605A
  13. io系列之字节流
  14. MySQL利用binlog恢复误操作数据(python脚本)
  15. JS 实现的浏览器系统通知 iNotify.js
  16. python---hash查找
  17. 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践
  18. Appium 学习二:切换Webview
  19. Android中Bundle和Intent的区别
  20. cocoapods 更新本地仓库 pod setup/update 无限远程中断

热门文章

  1. php 投票
  2. ASP.NET(三):整体总结
  3. POJ-2078 Matrix,暴力枚举!
  4. Oracle spool 用法小结
  5. python 字典 key 和value 互换
  6. 【bzoj1109】[POI2007]堆积木Klo 动态规划+树状数组
  7. JSP表单提交中文乱码
  8. mongodb的入门学习
  9. Vijos——1359 Superprime
  10. Java修饰符关键字的顺序