ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ZRound#1

2021-09-14 11:05:15  阅读:207  来源: 互联网

标签:10 le ZRound Nearest Number while version


题目

还想冲一冲 2500 分的题, 有点做梦了, 2100 分的题都没有 a 出来, 最近的训练还是要1900 - 2200 为主

做 C 的时候心态崩了, 写的越来越乱, 其实 C 不难, 只要稳住心态好好想一想实现就可以比较快的 A 掉

A. Nearest Beautiful Number(easy version)

Tag: 1900 暴力

题意

给一个整数 \(n\) , 求大于等于 \(n\) 的第一个 \(k-beautiful\) 数, 指数字中数位总数小于等于 \(k\)

如 122221,11111,770 都是 2-beautiful

Easy-version : \(1 \le k \le 2\)

Hard-version: \(1\le k \le 10\)

对于 easy-version ,直接暴力求出所有数, 然后 lower_bound 即可

B. Nearest Beautiful Number (hard version)

补题

大致有两种解法, 一种是贪心的解法, 只能说是妙哇, 找到 k + 1 个不同数字的前缀, 然后 ++, 不停这样操作即可

#include<bits/stdc++.h>
using namespace std;

int count(int v){
    int res = 0;
    while(v){
        res |= (1 << (v % 10));
        v /= 10;
    }
    return __builtin_popcount(res);
}
int T, n, k;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> T;
    while(T--){
        cin >> n >> k;
        while(count(n) > k){
            int f = n, t = 1;
            while(count(f / 10) > k){
                f /= 10;
                t *= 10;
            }
            f++; n = f * t;
        }
        cout << n << '\n';
    }
    
}

还有一种是数位 dp + 二分的做法, 先 m 住, 后边刷 dp 后再来补

C. Expression Evaluation Error

Tag: 2000 贪心

题意

给 \(s\) 和 \(n\) , 有长度为 \(n\) 的数组 \(A\) , 满足 \(\sum_{i=1}^n A_i = s\) , 现在用 11-base 进制来解释 \(A\)​ ,要使得其在 11-base 的意义下和最大, 给出任意符合要求的构造, \(1 \le A_i\)

思路

对于向上的进制转换,贪最高位即可。

D. Rescue Niwen

标签:10,le,ZRound,Nearest,Number,while,version
来源: https://www.cnblogs.com/sduwh/p/15266588.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有