这个题目的做法不止一种,solve1:每个数字使用的火柴棒都在2~7之间,而且是连续的,就是2-7之前没有空着的数。这样就有一个结论,在下界为l,上界为r的情况下,假设有n个数,那么火柴棒总数一定在n*l 与n*r之间,首先容易想到这个问题肯定是只关心火柴棒的总数,然后就是一个重新组合的问题,假设第一个重组后的数消耗了x个火柴棒,那么剩下的sum-x如果在(n-1)*l 与 (n-1)*r之间,那么一定可以组合成n-1个数,且最后正好用光,条件是数字必须连续,为什么读者可以自己举样例。 这样从9到1枚举即可了。

  solve2:观察这里的数,发现1是一个非常好的数,他是最小的数,并且消耗火柴棒最少,等等……0呢? 0直接无视掉变成9啊……最后的时候其实只会有1,9,7,4,8这几个数,我们可以让他们都变成1,然后把剩下的火柴棒加上去即可,肯定是加4根变成9最好,可以除以4看一下能出多少9,放不满余数只能是0,1,2,3讨论一下即可,放满了说明只能放8,每次加一个,从低位向高位加即可。

  总之,第一个算是上下界的结论,第二个是贪心,也是我自己的做法,第二个稍微快一点~

  代码如下:

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+;
char a[MAXN];
int w[] = {,,,,,,,,,};
int fan[] = {,,,,,,,};
void solve1(int n) {
int sum = ,tmp;
for(int i = ; i < n; i++) {
sum += w[a[i]-''];
}
for(int i = ; i <= n; i++) {
for(int j = ; j >= ; j--) {
tmp = sum-w[j];
if(tmp>=*(n-i) && tmp<=*(n-i)) {
printf("%d",j);
sum = tmp;
break;
}
}
}
printf("\n");
}
void solve2(int n) {
int sum = ,tmp;
for(int i = ; i < n; i++) {
sum += w[a[i]-''];
a[i] = '';
}
tmp = sum-*n;
int k = tmp/;
int yu = tmp%;
for(int i = ; i<n&&i<k; i++) {
a[i] = '';
}
if(k < n) {
if(k == n-) {
a[k] = fan[+yu]+'';
} else if(k == n-) {
if(yu == ) a[k] = '';
if(yu == ) a[k] = a[k+] = '';
if(yu == ) a[k]='',a[k+] = '';
} else if(k == n-) {
if(yu == ) a[k] = '';
if(yu == ) a[k] = a[k+] = '';
if(yu == ) a[k] = a[k+] = a[k+] = '';
} else {
for(int i = ; i < yu; i++) {
a[k+i] = '';
}
}
} else {
tmp -= *n;
int ip = n-;
while(tmp--) {
a[ip--] = '';
}
}
printf("%s\n",a);
}
int main() {
// freopen("B.in.cpp","r",stdin);
int T,n;
scanf("%d",&T);
while(T--) {
scanf("%d%s",&n,a);
// solve1(n);
solve2(n);
}
return ;
}

Gym 101102B The Little Match Girl(贪心+规律)的更多相关文章

  1. Codeforces Gym - 101102B - The Little Match Girl

    B. The Little Match Girl time limit per test 1 second memory limit per test 256 megabytes input stan ...

  2. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

  3. codeforces Gym 100187F F - Doomsday 区间覆盖贪心

    F. Doomsday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/F ...

  4. Codeforces Gym H. Hell on the Markets 贪心

    Problem H. Hell on the MarketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vj ...

  5. 2019.03.25 NOIP训练 匹配(match)(贪心)

    题意简述: 思路: 直接考虑把人和物品都看成二维平面上面的a,ba,ba,b两类点,然后一个aaa和bbb匹配的条件是xa≤xb&&ya≤ybx_a\le x_b\&\& ...

  6. GYM 101755 K.Video Reviews 【贪心】+【二分】

    <题目链接> 题目大意: 一家公司想让n个人给他们的产品评论,所以依次去找这n个人,第i个人会评论当且仅当已经有ai个人评论或他确实对这个产品感兴趣,但是这n个人都不对这个产品感兴趣,问这 ...

  7. GYM 101173 F.Free Figurines(贪心||并查集)

    原题链接 题意:俄罗斯套娃,给出一个初始状态和终止状态,问至少需要多少步操作才能实现状态转化 贪心做法如果完全拆掉再重装,答案是p[i]和q[i]中不为0的值的个数.现在要求寻找最小步数,显然要减去一 ...

  8. Gym - 100187A A - Potion of Immortality —— 贪心

    题目链接:http://codeforces.com/gym/100187/problem/A 题解: 光题意就想了很久:在最坏情况下的最小兔子数.其实就是至少用几只兔子就一定能找出仙药(答案存在的话 ...

  9. Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)

    传送门 Description Using at most 7 matchsticks, you can draw any of the 10 digits as in the following p ...

随机推荐

  1. C语言之结构体

    结构体类型 C语言中还有一种类型叫做结构体类型,它是可以保存不同类型数据并且可以把这些不同类型的数据当做一个整体来管理的类型 1).结构体的定义 语法: struct 结构体名{ 成员列表; };   ...

  2. Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!

    再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好 ...

  3. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  4. 正则表达式之js检验密码强度

    最近一直在做通行证项目,里面的注册模块中输入密码需要显示密码强度(低中高).今天就把做的效果给大家分享下,代码没有网上搜索的那么复杂,能够满足一般的需求. html 代码如下: <!DOCTYP ...

  5. mybatis-generator 代码自动生成工具(maven方式)

    由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,mybatis-gennerator插件帮我们自动生成mybatis所需要的 ...

  6. Netty(7)源码-ByteBuf

    一.ByteBuf工作原理 1. ByteBuf是ByteBuffer的升级版: jdk中常用的是ByteBuffer,从功能角度上,ByteBuffer可以完全满足需要,但是有以下缺点: ByteB ...

  7. 运用PhantomJS测试JavaScript

    我认为我不需要说服你,测试你的JavaScript代码是一个好主意.但是,测试需要DOM操作的JavaScript代码有时候确是繁琐的.这意味着你需要在浏览器中测试代码而不能使用终端,对吗?错了,事实 ...

  8. Oracle 收集统计数据

    查看最新用户表统计信息 select owner,table_name,last_analyzed from dba_tables where owner not like '%SYS%' order ...

  9. Winform DataGridView直接导出Excel

    /// <summary> /// 导出excel /// </summary> /// <param name="fileName">导出文件 ...

  10. URL中的#

    作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html 一.#的涵义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如 ...