首页 > 其他分享 >【牛客训练记录】牛客小白月赛105

【牛客训练记录】牛客小白月赛105

时间:2024-11-23 11:46:45浏览次数:7  
标签:return 000000 int long 牛客 solve 小白月赛 define 105

训练情况

赛后反思

看十佳歌手去了,比较晚回来,只开了A题,B题不看数据范围直接一眼丁真直接WA了一发

A题

两个数相乘进行比较,再判断即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    int a1,b1,a2,b2; cin>>a1>>b1>>a2>>b2;
    if(a1*b1<a2*b2) cout<<"lz"<<endl;
    else cout<<"gzy"<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

B题

刚开始想直接扔到 double 里面,然后乘 \(10^6\) 再取 int,但是数字的长度为 \(2\times 10^5\) 用 double 存会炸,所以我们选择字符串做法,对于只有整数部分的,我们直接在后面补 .000000,如果有小数部分(防止小数位不足 6 位)就补 000000,最后取到小数后六位,直接进行比较即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    string a,b; cin>>a>>b;
    if(a.find('.') == string::npos) a+=".000000";
    else a+="000000";
    if(b.find('.') == string::npos) b+=".000000";
    else b+="000000";
    a.erase(a.find('.') + 7);
    b.erase(b.find('.') + 7);
    if(a == b) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

D题

题目有 \(m\) 种限制 \(i,j\) 花的颜色要相同,我们使用DSU(并查集)维护联通块中的颜色,我们只需要把联通块中出现次数最多的颜色留下来,其他的颜色全部染成出现次数最多的颜色,所以答案就是联通块大小 - 出现次数最多的颜色求个和即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

const int N = 2e5 + 3;

int n,m;
int a[N];
int fa[N];

int Find(int x){
    if(fa[x] == x) return x;
    return fa[x] = Find(fa[x]);
}

void Union(int x,int y){
    x = Find(x); y = Find(y);
    if(x == y) return;
    fa[y] = x;
}

void solve(){
    cin>>n>>m;
    for(int i = 1;i<=n;i++) fa[i] = i;
    for(int i = 1;i<=n;i++) cin>>a[i];
    for(int i = 1;i<=m;i++){
        int x,y; cin>>x>>y;
        Union(x,y);
    }
    map<int,map<int,int>> cnt;
    for(int i = 1;i<=n;i++){
        int x = Find(i);
        cnt[x][a[i]]++;
    }
    int ans = 0;
    for(int i = 1;i<=n;i++){
        if(!cnt[i].size()) continue;
        int siz = 0;
        int ma = 0;
        for(auto j:cnt[i]){
            siz += j.second;
            ma = max(ma,j.second);
        }
        ans+=siz-ma;
    }
    cout<<ans<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

标签:return,000000,int,long,牛客,solve,小白月赛,define,105
From: https://www.cnblogs.com/longxingx/p/18564267

相关文章

  • 每日OJ题_牛客_AB20走迷宫_BFS_C++_Java
    目录牛客_AB20走迷宫_BFS题目解析C++代码Java代码牛客_AB20走迷宫_BFS走迷宫_牛客题霸_牛客网(nowcoder.com)描述:        给定一个n×m的网格,在网格中每次在不超过边界的情况下可以选择向上、向下、向左、向右移动一格。网格中的一些格子上放置有障碍物,放有......
  • 20241022_105024 c语言 模拟用户登陆
    需求代码......
  • C - sum(牛客小白月赛102)
    题目链接:C-sum题目描述:示例说明:解:这题典型的贪心问题,是求最小的操作次数。首先我们可以先算出这n个数的和s,s和sum的大小有三种情况。当s=sum时,一个数字也不用修改,答案为0。而剩下的两种情况可以合为一种情况来做。首先我们要知道如果把这n个数都变为相反数,则s也会变为......
  • 每日OJ题_牛客_非对称之美_最长非回文字符串_C++_Java
    目录牛客_非对称之美_最长非回文字符串题目解析C++代码Java代码牛客_非对称之美_最长非回文字符串非对称之美(nowcoder.com)题目解析找到规律就是最长非回文字符串(判断是否全同->0,否则是n-1(回文减去1)或n)。C++代码#include<iostream>usingnamespacestd;int......
  • 牛客周赛63(C++实现)
    ......
  • 软件开发----Java基础每日刷题(转载于牛客)
    1.        A 是抽象父类或接口, B , C 派生自 A ,或实现 A ,现在 Java 源代码中有如下声明:1. A a0=new A();2. A a1=new B();3. A a2=new C();问以下哪个说法是正确的?()A        第1行不能通过编译B        第1、2行能通......
  • 牛客周赛63部分题解
    比赛地址:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ(nowcoder.com)A.小红的好数#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsignedlonglongvoidsolve(){lln;cin>>n;if(n>=10&&n<=99......
  • 牛客周赛 Round 63
    总体思路:        A签到、B小思维、Cbfs(),注意需要和初始位置的值相同、D数学(找规律)E,F待补,比赛时打的暴力 A代码:#include<bits/stdc++.h>usingnamespacestd;stringa;intmain(){  cin>>a;  if(a.size()!=2)  {    cout<......
  • 牛客AB33.相差不超过k的最多数 (滑动窗口) 牛客.DP最长公共子序列牛客.春游主持人调度
    目录牛客AB33.相差不超过k的最多数 (滑动窗口) 牛客.DP最长公共子序列牛客.春游主持人调度(二)牛客AB33.相差不超过k的最多数 (滑动窗口) 和之前那个空调吹风属于一道题的类型,当然滑动窗口,最大值-最小值,然后<=p即可也可以双指针来取寻找最大值和最小值impor......
  • 刷c语言练习题8(牛客网)
    1、如果有inta=5,b=3,在执行!a&&b++;后a和b的值分别是()A、5,3B、0,1C、0,3D、5,4答案:A解析:按照优先级顺序,先计算!a,得到0。由短路法则,b++不进行计算,又!a并没有改变a的值,所以a和b的值分别是5,3,选择选项A。2、以下程序的输出结果是()1234567main(){     ......