首页 > 其他分享 >牛客小白月赛90 A~D

牛客小白月赛90 A~D

时间:2024-04-05 23:58:48浏览次数:16  
标签:using int ++ ans cin long 牛客 小白月赛 90

A - 小A的文化节 (Nowcoder78306 A)

题目大意

将 n 个数中选定的数相加并输出。

解题思路

数据量很小只需int即可。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

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

    int n, m;
    cin >> n >> m;

    int a[n];
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    int ans = 0;
    for (int i = 0; i < m; i++) {
        int x;
        cin >> x;
        ans += a[x - 1];
    }
    
    cout << ans;

    return 0;
}


B - 小A的游戏 (Nowcoder78306 B)

题目大意

小A和小B在玩一个游戏,每局游戏的结果可能有胜平负三种。游戏的胜者得到 3 分,败者不得分,若打平则双方都得 1 分。

小A为 X 分,小B为 Y 分。请你来判断一下此时的比分是否合法吧。

解题思路

双方得分的差值一定是 3 的倍数,否则就不合法。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

void solve() {
    int a, b;
    cin >> a >> b;

    int ans = abs(a - b);

    if (ans % 3 == 0) {
        cout << "Yes\n";
    } else {
        cout << "No\n";
    }
}

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

    int t;
    cin >> t;

    while (t--) {
        solve();
    }

    return 0;
}


C - 小A的数字 (Nowcoder78306 C)

题目大意

小A给定一个数字 n ,请你帮她找出从低位对齐后任意一位均与 n 对应数位不同的最小正整数

对于本题题面描述中的从低位对齐后任意一位均与 n 对应数位不同,你需要保证你所输出的答案的位数小于 n 的位数时,即使在添加前导零至与 n 的位数相同后,也不应有任意一位的数字两两相同。

解题思路

数字 n 从最高位开始遍历。如果该位为 0 则答案该位为 1 是最小的选择,相反如果该位不为 1 则答案该位为 0 。去除前导零。如果经过前面的判断后答案为 0 且 n 个位不为 1 答案就是 2,如果 n 个位不是 1 答案就是 1 。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

void solve() {
    string s;
    cin >> s;

    string ans;
    for (int i = 0; i < s.size(); i++) {
        if (s[i] != '0' && i == 0) {
            i++;
            while (s[i] != '0' && i < s.size()) i++;
        }
        if (s[i] == '0') ans += '1';
        else ans += '0';
    }

    if (ans == "0") {
        if (s[s.size() - 1] == '1') ans = "2";
        else ans = "1";
    }
    
    cout << ans << "\n";
}

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

    int t;
    cin >> t;

    while (t--) {
        solve();
    }

    return 0;

}


D - 小A的线段(easy version) (Nowcoder78306 D)

题目大意

在一个标有 1 - n 的数轴上给定 m 条线段,第 i 个线段的左右端点分别为 s t i st_i sti​ 和 e d i ed_i edi​ ,求有多少种线段的选择方案可以使得数轴上的每个整数点至少被覆盖两次。

解题思路

m最大为10。则方案数最多只有 2 的 10 次方 - 1,1023种。数据量很小直接采用 dfs 爆搜。

这里我用的是二进制枚举。即枚举从 1 到 1024,其二进制数的每一位决定每一条线段选不选。

使用一个差分数组存储选择的线段。最后前缀和 pre 加回来检查是否每一个端点都被覆盖两次。判断第一个点是否大于等于 2 做一个小小的剪枝。

神奇的代码
#include <bits/stdc++.h>
using namespace std;
using LL = long long;

int n, m, ans;
vector<pair<int, int>> p(10);

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

    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        cin >> p[i].first >> p[i].second;
    }

    for (int i = 1; i <= 1 << m; i++) {
        string s = "0000000000";
        vector<int> a(n + 5);
        
        int t = i;
        for (int j = 0; j < m; j++, t >>= 1) {
            if (t & 1) {
                s[j] = '1';
            }
        }

        for (int j = 0; j < m; j++) {
            if (s[j] == '0') continue;
            a[p[j].first]++;
            a[p[j].second + 1]--;  
        }

        if (a[1] >= 2) {
            int pre = 0;
            bool ok = 1;
            for (int i = 1; i <= n; i++) {
                pre += a[i];
                if (pre < 2) {
                    ok = 0;
                    break;
                }
            }
            if (ok) {
                ans++;
            }
        }
        a.clear();
    }
    cout << ans;

    return 0;
}


E - 小A的任务 (Nowcoder78306 E)

题目大意

<++>

解题思路

<++>

神奇的代码



F - 小A的线段(hard version) (Nowcoder78306 F)

题目大意

<++>

解题思路

<++>

神奇的代码



标签:using,int,++,ans,cin,long,牛客,小白月赛,90
From: https://blog.csdn.net/2301_80309588/article/details/137409597

相关文章

  • 牛客 HJ5进制转换
    暴力匹配求解:java字符与整型之间的转换:char-'0'与(char)int,字符串与整型转换:String.valueOf(int)与Integer.parseInt(str)importjava.util.Scanner;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String[]args)......
  • P9902 『PG2』模拟最大流 题解
    首先最大流等于最小割,然后就能很容易地想到一个状压dp做法:记\(f_{i,s}\)表示使得前\(i\)个点中,最后\(k\)个点与点\(1\)的联通情况为\(s\)的最小代价。然后考虑下一个点是否联通直接转移即可,然后就做完了。时间复杂度\(\mathcalO(n2^k)\)。参考代码:#include<bits/s......
  • 4.5Codeforces Round 905 (Div. 3)
    C题题意:几个数字,挑选其中几个进行+1.得到的数字的乘积可以整除k注意题目条件:k只能是2,3,4,5这几种情况每个数字只能是1——10(不算大)(好像没啥用,因为可以自增超过10)思路:对于2,3,5要想整除,这些个数里必须要有一个数是可以整除2,3,5的。所以思路很简单,去造,找到一个“变成5的倍数”所需......
  • P9058 [Ynoi2004] rpmtdq 题解
    Description给定一棵有边权的无根树,需要回答一些询问。定义\(\texttt{dist(i,j)}\)代表树上点\(i\)和点\(j\)之间的距离。对于每一组询问,会给出\(l,r\),你需要输出\(\min(\texttt{dist(i,j)})\)其中\(l\leqi<j\leqr\)。\(n\leq2\times10^5\),\(q\leq10^6\),\(1\l......
  • Cisco Nexus 9000v Switch, NX-OS Release 10.4(3)F
    CiscoNexus9000vSwitch,NX-OSRelease10.4(3)F用于网络原型设计和学习研究的虚拟化数据中心交换机请访问原文链接:https://sysin.org/blog/cisco-nexus-9000v/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgReleaseDateNX-OSSystemSoftwareReleaseDate......
  • Cisco IOS XRv 9000 Router IOS XR Software 24.1.1(ED) - 服务提供商边缘虚拟路由器
    CiscoIOSXRv9000RouterIOSXRSoftware24.1.1(ED)-服务提供商边缘虚拟路由器CiscoIOSXRv9000路由器请访问原文链接:https://sysin.org/blog/cisco-ios-xrv-9000/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科IOS-XR简介CiscoIOSXRv9000路由......
  • Codeforces Round 901 (Div. 2) E
    链接有些部分和常规的题目有很大的区别,所以我理解的过程产生的很大很大的障碍。我看了4天吧,这题和题解。好烦。我的第一个思路就是暴力。因为很明显,其实对于每一个二进制位,a,b,m的情况数量是很有限的,就只有8种,而相应的,c,d的对应位是由这4种位运算得到的。我先尝试对每一种情况看......
  • ADS1298的国产代替芯片LHE7908
    LHE7904、LHE7906、LHE7908(LHE790X)是多通道同步采样24位Δ-Σ模数转换器(ADC)系列,内置有可编程增益放大器(PGA)、内部基准以及振荡器。LHE790X包含医疗心电图(ECG)和脑电图(EEG)应用中通常所需的全部功能。凭借高集成度和出色性能,LHE790X能够以大幅缩小的尺寸、显著降低的功......
  • CF1909G Pumping Lemma 题解
    题目链接题目要求我们对合法三元组进行计数,直接做是困难的,因此考虑通过枚举确定一部分元素再进行判定求解,那我们固定什么呢?固定\(x\)和\(y+z\)的分界线没啥用,因此我们枚举确定\(S\)中\(x+y\)和\(z\)的分界线,这样能确定一长串\(y^{k-1}\)所在的区间。接着我们不难想......
  • 【WCH以太网接口系列芯片】STM32+CH390+Lwip协议栈简单应用测试
    本篇文章基于STM32F103和CH390H芯片进行例程移植及相关注意事项,简单验证TCP\UDP\Ping基础功能。硬件:STM32F103开发板+沁恒CH390H的评估版图一示,SPI使用接口为:INT->PA0,RST->PA1,CS->PA2,SCK->PA5,MISO->PA6,MOSI->PA7,WOL->PA8。 图一 软件移植:采用的沁恒官方提供的CH......