[hihocoder1527]快速乘法
来源:互联网 发布:淘宝店铺开店教程 编辑:程序博客网 时间:2024/05/16 02:54
题目描述
在写代码时,我们经常要用到类似 x × a 这样的语句( a 是常数)。众所周知,计算机进行乘法运算是非常慢的,所以我们需要用一些加法、减法和左移的组合来实现乘一个常数这个操作。具体来讲, 我们要把 x × a 替换成:
f[i]=min(f[j-1]+2+sum[i]-sum[j-1])
枚举j则复杂度是平方。
注意不同的两个决策j和k,在i移一单位时,变化量一样,因此最优决策很容易维护。
#include<cstdio>#include<algorithm>#include<cstring>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=1000000+10;char s[maxn];int sum[maxn],f[maxn];int i,j,k,l,t,n,m,ans,mx;int main(){ scanf("%s",s+1); n=strlen(s+1); reverse(s+1,s+n+1); fo(i,1,n) sum[i]=sum[i-1]+(s[i]=='0'); mx=-1; fo(i,1,n){ if (s[i]=='0') f[i]=f[i-1]; else{ f[i]=f[i-1]+1; if (mx) f[i]=min(f[i],f[mx-1]+2+sum[i]-sum[mx-1]); } if (mx==-1||f[mx-1]+2+sum[i+1]-sum[mx-1]>=f[i-1]+2+sum[i+1]-sum[i-1]) mx=i; } ans=f[n]; printf("%d\n",ans*2-1);}
阅读全文
0 0
- [hihocoder1527]快速乘法
- 快速乘法
- 快速乘法
- 快速乘法
- 快速乘法
- 快速乘法
- 快速幂&&快速乘法
- 快速幂 快速乘法
- 快速幂+快速乘法
- 快速乘法-快速幂
- 快速幂和快速乘法
- 快速幂与快速乘法
- 矩阵快速乘法---代码
- 快速幂乘法
- 矩阵乘法&&快速幂
- 乘法快速幂
- 快速乘法 Lucas定理
- 快速乘法/幂
- 自定义软键盘(Android)
- ubuntu安装svn
- 项目配置技巧及打包
- Spring Mybatis 事务
- ssm框架中el表达式获取model.addAttribute()值的方法
- [hihocoder1527]快速乘法
- java中创建对象的几种方式
- npm install -dev与npm install --save-dev区别
- selenium webdriver (python)的基本用法
- extjs设置一个空的属性
- Linux 终端浏览器 w3m
- 【算法】各种排序算法
- 详解 rs.open sql,conn,1,1 后数字参数的含义
- 【剑指Offer】JS实现两个队列表示一个栈