这个题目的做法不止一种,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. jvm工具

    jvm工具 知识,经验是基础,数据是依据,工具是运营知识处理数据的手段 数据:运行日志.异常堆栈.GC日志.线程快照.堆转存储快照 JPS:虚拟机进程状况工具 jvm process status t ...

  2. 结构-行为-样式-JqueryUI拖放使用实例(全)

    最近工作中有个需要是动态配置页面,想到之前公司有做过类似的,用的是JqueryUi,所以就看了下它的Api.下面就是我做的小Demo,想用的同学可以参考: Html: <div class=&q ...

  3. php文件上传及头像预览

    php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php 程序将文件保存在 ...

  4. 再谈加密-RSA非对称加密的理解和使用

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. Javascript设计模式之装饰者模式详解篇

    一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...

  6. Bootstrap实现弹出框和提示框效果代码

    一.Bootstrap弹出框使用过JQuery UI应该知道,它里面有一个dialog的弹出框组件,功能也很丰富.与jQuery UI的dialog类似,Bootstrap里面也内置了弹出框组件.打开 ...

  7. [Q]关于不同比例、不同纸张大小图纸的批量打印

    不同比例或不同纸张大小的图纸可以一起批量打印,但目前打图精灵不能自动识别纸张大小,纸张大小是手动指定的,且只能指定一种纸张大小,但设置打印比例为“缩放到可打印区域”或“缩放到纸张边界”仍然可以将不同比 ...

  8. 数据库索引的实现原理(笔记)详细http://www.linezing.com/blog/?p=798#nav-1

    数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B树及其变种B+树. 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某 ...

  9. jenkins 杀死衍生进程

    解决方法-1: 在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins衍生进程 解决方法-2: 修改/etc/sysconfig/jenkins配置,在 ...

  10. Jenkins slave image

    Add a new shell script configure_slave.sh as following: #!/bin/bash dnf -openjdk git wget openssh-se ...