首页 > 其他分享 >ZZJC新生训练赛第十二场题解

ZZJC新生训练赛第十二场题解

时间:2024-10-30 20:44:07浏览次数:6  
标签:std ZZJC 新生训练 int 题解 cin long tie cout

难度分类(同一难度下按字典序上升)

  • 入门: G
  • 简单: C, E, A
  • 中等: F, D, B
  • 困难: H

G-解题思路

按照题意模拟即可

G-代码实现

#include <bits/stdc++.h>

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    std::string s;
    std::cin >> s;

    std::transform(s.begin(), s.end(), s.begin(), ::tolower);
    
    if (s == "yes") {
        std::cout << "accept";
    } else {
        std::cout << "wrong answer";
    }
}
print('accept' if input().lower() == 'yes' else 'wrong answer')

C-解题思路

对数字降序看看有没有变化就能得出答案

C-代码实现

#include <bits/stdc++.h>

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    int t;
    std::cin >> t;

    while (t--) {
        std::string s1, s2;
        std::cin >> s1;
        s2 = s1;

        std::sort(s1.begin(), s1.end(), std::greater<>());

        if (s1 == s2) {
            std::cout << "NO\n";
        } else {
            std::cout << "YES\n";
        }
    }
}

E-解题思路

按照题意纯模拟即可,注意数据范围,本题需要开long long

E-代码实现

#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    i64 n, x, ans = 0;
    std::cin >> n >> x;

    for (int i = 0; i < n; i++) {
        int t;
        std::cin >> t;

        if (x) {
           if (x > 0) {
               x -= t;
           } else {
               x += t;
           }
           ans += t;
        } else {
            break;
        }
    }

    std::cout << ans;
}

A-解题思路

显然至少要三条边才能组成一个封闭图形,所以先统计长度相等的边数,然后在满足数量的长度里选最小的边数*3即可。(注意任意大于3的边数取3才是最小的)

A-代码实现

#include <bits/stdc++.h>

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie();
    std::cout.tie();

    int t;
    std::cin >> t;

    while (t--) {
        int n;
        std::cin >> n;

        std::map<int, int> mp;
        for (int i = 0; i < n; i++) {
            int x;
            std::cin >> x;

            mp[x]++;
        }
        
        int f = 1;
        for (auto [x, y]: mp) {
            if (y >= 3) {
                std::cout << "yes\n";
                std::cout << x * 3 << "\n";
                f = 0;
                break;
            }
        }
        
        if (f) {
            std::cout << "no\n";
        }
    }
}

F-解题思路

先成对的1*3能填就填,记得要先%3排除1*2的影响,这样就可以消除后续1*3砖块的影响,然后再看在这个条件下用1*2能否填充即可

F-代码实现

#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    int t;
    std::cin >> t;
    
    while (t--) {
        int a, b, n;
        std::cin >> a >> b >> n;
        
        c = n % 3;
        n -= c;
        n -= std::min(3 * (b / 2), n);
        
        if (n + c <= a) {
            std::cout << "YES\n";
        } else {
            std::cout << "NO\n";
        }
    }
}

D-解题思路

通常会考虑答案是能表示第一个大于等于n的二的幂,但是不正确,打表可以发现还需要对n==2进行特判

D-代码实现

#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    int t;
    std::cin >> t;

    while (t--) {
        i64 n;
        std::cin >> n;

        if (n == 2) {
            std::cout << 1 << "\n";
            continue;
        }

        i64 x = 1;
        while (x < n) {
            x *= 2;
        }

        std::cout << x << "\n";
    }
}

B-解题思路

一道赤石题,按照题目进行格式筛选即可(py高光时刻,正则一行秒了)

B-代码实现

import re; [print("Yes" if re.compile(r'^[a-z0-9](?:[a-z0-9.]{0,62}[a-z0-9])?@[a-z0-9](?:[a-z0-9.-]{0,253}[a-z0-9])?$', re.I).fullmatch(input()) else "No") for _ in range(int(input()))]

H-解题思路

题目的意思是在不打乱每个ai中数字相对顺序的情况下,找到将所有ai拼接起来的最大字典序,可以优先队列维护每次要挑选的数字,取出它的第一个数字(也就是当前能选的最大的数字),然后剔除并塞回队列,这样就可以保证没有打乱相对顺序,重复操作直到所有待选择的数字为空就能获得答案

H-代码实现

#include <bits/stdc++.h>

using i64 = long long;

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);

    int n;
    std::cin >> n;

    std::priority_queue<std::string> pq;
    for (int i = 0; i < n; i++) {
        std::string x;
        std::cin >> x;
        pq.push(x);
    }

    std::string ans = "";
    while (!pq.empty()) {
        std::string s = pq.top();
        pq.pop();
        ans += s[0];
        s = s.substr(1);
        if (!s.empty()){
           pq.push(s);
        }
    }
    
    std::cout << ans;
}

标签:std,ZZJC,新生训练,int,题解,cin,long,tie,cout
From: https://www.cnblogs.com/udiandianis/p/18515651

相关文章

  • P7408 [JOI 2021 Final] 地牢 3 题解
    Description有一个\(N+1\)层的地牢,在地牢里有\(M\)个玩家。地牢的每层从入口开始,用\(1\)到\(N+1\)的整数编号。玩家从\(1\)到\(M\)标号。玩家使用能量从一层移动到下一层。玩家从第\(i\(1\lei\leN)\)层移动到第\(i+1\)层所用的能量为\(A_i\)。因为这是一个......
  • CF1187题解
    前言这套题相对来讲难度不算高,并且质量也很好,建议尝试CF1187A一眼秒,但我没有考虑s,t只有这一种排列方式,所以取一下\(max(n-s,n-t)\)#include<bits/stdc++.h>usingnamespacestd;intT,n,s,t;intmain(){ scanf("%d",&T); while(T--){ scanf("%d%d%d",&n,&s,&t)......
  • 动态规划题解报告
    Findacar注意到矩阵本质上是一个分形,即每次向右下复制当前矩阵,证明考虑归纳法。由此可以知道一个比较好的性质\(a_{i+k,j+k}=a_{i,j}\)其中\(k=2^n\),由于每次是复制加倍,所以横纵坐标都会加上一个\(2^n\),且每次增加的二次幂一定是横纵坐标二进制减一后没有的那一位(证明考虑......
  • CF2030 题解
    因为cf炸了所以没办法提供代码,抱歉喵。A给定序列,定义$mn_i=\min_{j\lei}a_j,mx_i=\max_{j\lei}a_j$。重排该序列,最大化$\sum_{i=1}^nmx_i-mn_i$。$n\le10^5$正解手玩出一个构造,把最大和最小值放在前两个位置,这样的价值是\((n-1)\times(mx-mn)\)。由于\(m......
  • 天眼销常见问题解答
    天眼销上线已经有一段时间了,用户在此期间提出了一些问题。经过我们的整理在这里为大家解答。回答问题整理1.你们的数据来源是哪?精确吗?本平台的企业数据来源于全网公开数据,包含全国企业信用信息公示系统,其中企业联系方式主要来源于全国企业信用信息公示系统中的公示的......
  • [CodeForces] CF628 题解
    A.TennisTournamentLink-CFLink-Luogu【题目大意】\(n\)个选手进行若干场比赛,胜者保留,败者淘汰。每场比赛为两人。每场比赛每个人需要\(b\)瓶水,裁判需要\(1\)瓶水。每个人参加这些比赛总共需要\(p\)条毛巾。注意:洛谷题面翻译有误!建议看英文版。【解题思路】每场比......
  • CSP-J2024 T1(poker/扑克)题解
    洛谷CSP-J2024自测指路前情提要:虽然洛谷讨论区里大多数都是倾向用哈希解决该题,但实际上可以用一些邪门小技巧来A这道题awa先来读题。题目中说小P想知道他至少得向小S借多少张牌,才能让从小S和小Q借来的牌中,可以选出52张牌构成一副完整的扑克牌。题目说了是求至少要......
  • 01背包问题(经典dp题解)
    有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来......
  • 2024湖南省赛题解(不全)
    湖南省赛K题题意你可以免费移动经过一条边,求在满足在任意点开始都能成功渡劫的最小花费。思路建一个虚拟源点,连向每一个点,将这条边的边权设为这个点渡劫需要的花费。跑最短路,这样会把每一种情况囊括在内,但是没有考虑免费的移动。建一个dist2数组,用来记录每一个点当前......
  • [一直更新中]一句话题解
    目录一句话题解2024.10.29AT_abc290_fAT_arc156_c2024.10.30P5749[IOI2019]排列鞋子AT_abc285_e一句话题解不能什么题都随便写写就过了,留点印象好一点。一直更新。2024.10.29AT_abc290_f组合数数。满足树的形态要有\(\sumdeg_i=2n-2\)。考虑目前有\(k\)个儿子节点,直径......