题目:[HAOI2012]添加号  

描述:

【题目描述】

有一个由数字1,2,…9组成的数字串(长度不超过8),问如何将M(M<=5)个加号"+"插入到这个数字串中,使所形成的算术表达式的值最小。请编一个程序解决这个问题。

注意:

加号不能加在数字串的最前面或最末尾,也不应有两个或两个以上的加号相邻。

M保证小于数字串的长度。

例如:数字串79846,若需要加入两个加号,则最佳方案为79+8+46,算术表达式的值133。

【输入格式】

第一行是一个数字串(数字串中间无空格),第二行是一个正整数M。

【输出格式】

所求得的最小和的精确值。

【样例输入】

79846
2

【样例输出】

133

【提示】

全部数据:数字串长度不超过8,M<=7。

30%的数据M=1。

50%数据M<=2。

【来源】

2012年河南省青少年信息学(计算机)奥林匹克赛竞赛(初中组)

此题太水了,直接深搜一遍过,不带剪枝和优化,数据太小了……另外吐槽一下Pascal的过程太坑了,变量必须要清零,让我调了两分钟……

AC代码:

{

program zht;
var
i,ans,m,c:longint;
a:array[0..100] of longint;
s:array[0..100] of 0..1;
z:ansistring; function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end; procedure work;
var
h,k,l:longint;
begin l:=0;
h:=0;
for k:=1 to length(z) do
begin
l:=l*10+a[k];
if s[k]=1 then begin h:=h+l; l:=0; end;
end;
h:=h+l;
ans:=min(ans,h);
end; procedure find;
var
k:longint;
begin
if c=m then begin work; exit; end;
for k:=1 to length(z)-1 do
begin
if s[k]=0 then begin s[k]:=1; inc(c); find; dec(c);
s[k]:=0; end;
end;
end; begin
assign(input,'purasu.in');
assign(output,'purasu.out');
reset(input);
rewrite(output); readln(z); for i:=1 to length(z) do
a[i]:=ord(z[i])-48;
readln(m); c:=0;
ans:=maxlongint;
fillchar(s,sizeof(s),0); find; writeln(ans);
close(input);
close(output);
end.
} <Marvolo原创,严禁转载>

搜索——[HAOI2012]添加号的更多相关文章

  1. mac上如何搜索文件?

    在Mac上如果你用会了搜索功能那绝对是个事半功倍的技巧.因为Mac本身有强大的文件索引能力, 可以帮你快速的找到你需要的文件.就好比我要找到上周修改过的word文档应该怎么办? * 使用语音命令让Si ...

  2. PHP正则表达式详解(一)

    前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时,发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一 ...

  3. 如何使用Git——(二)

    8.首次安装git,然后要把创建好的仓库放到github上,首先,你要先做一些基本设置,继续设置吧~~. 在git黑框框中输入  ssh-keygen -t rsa -C "your ema ...

  4. google hacking

    Google是一个强大的搜索引擎:而对于黑客而言,则可能是一款绝佳的黑客工具.正因为google的检索能力强大,黑客可以构造特殊的关键字,使用Google搜索互联网上的相关隐私信息.通过Google, ...

  5. [转载]ValidationExpression验证规则

    ValidationExpression验证规则  在ASP.NET中,ValidationExpression 验证规则属性可以根据自已的需要,对输入的数据进行限制,其常用符号如下表所示: 符号  ...

  6. Android 标题栏(1)

    本文来自网易云社区 作者:孙有军 标题栏在每个应用中都有,有各种各样的标题栏,今天我们就主要来说说标题栏怎么做,主要内容涉及到自定义标题,ActionBar,Toolbar等知识. 自定义标题 几年前 ...

  7. poj1722 SUBTRACT

    应该是基础的dp练手题 线性dp最主要的就是关于阶段的划分,这个题中我没想到的一点就是开状态的时候使用了前i个数能合成的数来记录 我自己的想法就是类似于区间dp这样的记录方法,这种方法确实开了很多冗余 ...

  8. google浏览器插件fq教程

    google插件fq教程 思路 谷歌浏览器的应用市场 上有很多vp恩插件,不过要能访问谷歌浏览器的应用市场就得fq出去才行,而有一个很棒的插件就可以访问谷歌的旗下的一些东西,例如邮箱,Google搜索 ...

  9. 百度URL链接中文转码

    百度搜索链接规则为: http://www.baidu.com/s?wd=[搜索词目]&cl=3 有多个搜索词通过加号进行链接: http://www.baidu.com/s?wd=keywo ...

随机推荐

  1. android入门系列- TextView EditText Button ImageView 的简单应用

    第一篇原创,其实自己就是一菜鸟,简单分享点基本知识吧.希望能有所帮助吧. TextView EditText Button ImageView 这几个控件可能是Android开发中最常用.最基本的几个 ...

  2. HDU 4010.Query on The Trees 解题报告

    题意: 给出一颗树,有4种操作: 1.如果x和y不在同一棵树上则在xy连边 2.如果x和y在同一棵树上并且x!=y则把x换为树根并把y和y的父亲分离 3.如果x和y在同一棵树上则x到y的路径上所有的点 ...

  3. seaJs初体验

    目录结构 模块定义define define(function(require,exports,module){ //exports可以把方法或属性暴露给外部 exports.name = 'hell ...

  4. Windows7 IIS7 无法启动计算机上的服务W3SVC如何修复

    错误提示 启动iis7管理服务器提示:无法启动计算机上的服务W3SVC 启动Windows Process Activation Service服务,报错:6801 指定资源管理器中的事务支持未启动或 ...

  5. css去除webkit内核的默认样式

    做移动端的朋友应该知道,iphone的默认按钮是个很恶心的圆角,select下拉框也有默认样式无法修改. 这时候可以用到 -webkit-appearance:none //去除默认样 在按钮和sel ...

  6. dedecms修改templets为别的名字

    修改templets模板文件夹的方法: 首先找到系统配置文件common.inc.php,此文件存放在Include目录下,打开common.inc.php来修改默认模板目录templets, 查找: ...

  7. Win8.1 64bit安装Genymotion模拟器

    其实安装并不复杂,只要环境正常,此事并不难.但估计最坏的情况都被我撞上了,才折腾了差不多一天的 那我有哪些环境不正常呢? 破解了系统主题 Device Install Service服务未启动 下面来 ...

  8. MySql数据库4【命令行赋权操作】

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant selec ...

  9. srand((double)microtime()*1000000)

    分为4个步骤1:执行microtime(),获取当前的微秒数 2:把获取的微秒数转换为double类型 3:再用转换后的数字去乘以1000000 4:给随机数发生器播种,播种数为第三步得出的结果 ra ...

  10. C#.NET快速开发框架-企业版V4.0截图打包下载

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) http://www.csframework.com/cs-framework-4.0.htm 其它图片打包下载: ht ...