AtCoder Beginner Contest 397(ABCDE)

news2025/5/13 19:16:33

目录

A - Thermometer

翻译:

思路:

实现:

B - Ticket Gate Log

翻译:

思路:

实现:

C - Variety Split Easy

翻译:

思路:

实现:

D - Cubes

翻译:

思路:

实现:


A - Thermometer

翻译:

        高桥测量了自己的体温,发现它是 X^0C

        体温分为以下几种:

  • 高于或等于 38.0^0C:"高烧"
  • 高于或等于 37.5^0C 和低于 38.0^0C:"发烧"
  • 低于 37.5^0C:"正常"

高桥的体温属于哪种分类?请根据输出部分以整数形式给出答案。

思路:

        先判断>=38.0再判断<37.5,都不对输出发烧。可以写快点。

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;

void solve(){
    double n;cin>>n;
    if (n>=38){
        cout<<"1\n";
    }else if (n<37.5){
        cout<<"3\n";
    }else{
        cout<<"2\n";
    }
}

int main(){
    // 关闭输入输出流同步
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    // 不使用科学计数法
    // cout<<fixed;
    // 中间填保留几位小数,不填默认
    // cout.precision();
    solve();
    return 0;
}



B - Ticket Gate Log

翻译:

        高桥汇总了检票口的使用记录。但是,他不小心删除了一些进出站记录。他正试图恢复被删除的记录。

        给你一个由 i 和 o 组成的字符串 S。我们想在 S 的任意位置插入 0 个或多个字符,这样得到的字符串就能满足以下条件:

  • 它的长度是偶数,每个奇数(第 1、第 3......个)字符都是 i,而每个偶数(第 2、第 4......个)字符都是 o。

        求需要插入的最少字符数。在此问题的约束条件下,可以证明通过插入适当数量的字符、 S 就能满足条件。

思路:

        字符串 io 是没问题,无需改变的。那么删除这些没问题的后剩下都是要在前后插入的字符了,统计一下剩下字符串长度即可。

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 1e5+10;

void solve(){
    string s;cin>>s;
    int cnt = 0;
    for (int i=1;i<s.size();i++){
        if (s[i]=='o' && s[i-1]=='i') cnt++;
    }
    int n = s.size();
    cout<<n-2*cnt<<"\n";
}

int main(){
    // 关闭输入输出流同步
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    // 不使用科学计数法
    // cout<<fixed;
    // 中间填保留几位小数,不填默认
    // cout.precision();
    solve();
    return 0;
}



C - Variety Split Easy

翻译:

        给你一个长度为 N 的整数序列:A=(A_1,A_2,...,A_N)

        当把 A 在一个位置分割成两个非空(连续)子数组时,求这两个子数组中不同整数的计数之和的最大值。

        更具体地说,对于整数 i,求以下两个值的最大和,使得 1≤i≤N-1:(A_1,A_2,...,A_i) 中不同整数的数量,和(A_{i+1},A_{i+2},...,A_N)中不同整数的数量。 

思路:

        前后缀分解,倒序遍历设立一个数组suffix,suffix[i]为[ i : n ]中A的不同整数数量。之后正序遍历求出以每个为分割点得到的和,比较下。

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MX = 3e5+10;
int vis[MX];
void solve(){
    int n;
    cin>>n;
    vector<int> a(n+1);
    for (int i=1;i<=n;++i) cin>>a[i];
    vector<int> suffix(n+1);
    memset(vis,0,sizeof(vis));
    for (int cnt=0,i=n;i>=1;--i){
        vis[a[i]]++;
        if (vis[a[i]]==1) cnt++;
        suffix[i] = cnt;
    }
    int maxx = 0;
    memset(vis,0,sizeof(vis));
    for (int cnt=0,i=1;i<n;i++){
        vis[a[i]]++;
        if (vis[a[i]]==1) cnt++;
        maxx = max(maxx,cnt+suffix[i+1]);
    }
    cout<<maxx<<"\n";
}

int main(){
    // 关闭输入输出流同步
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    // 不使用科学计数法
    // cout<<fixed;
    // 中间填保留几位小数,不填默认
    // cout.precision();
    solve();
    return 0;
}

D - Cubes

翻译:

        你被给予一个正整数N。决定是否存在一个正整数对(x,y)使得X^3-y^3=N。如果这个整数对,输出这样一个整数对(x,y)。

思路:

       N=x^3-y^3 \leq (y+1)^3-y^3=3y^2+3y+1如果y存在,可得y至少都为y<\sqrt\frac{N}{3}。而直接遍历明显不行。

        令d=x-y, 由N=x^3-y^3=(x-y)(x^2+xy+y^2)\geq (x-y)(x-y)^2=d^3可得d\leq \sqrt[3]N。那么如果(x,y)存在,则满足(d+y)^3-y^3=N=>d^3+3d^2y+3dy^2=N=>d^2+3dy+3y^2=\frac{N}{d}。(注意求幂使用pow返回的是浮点型存在精度问题)。且在d确定的情况下上式单调递增,可用二分判断在d确定下y是否存在。

        结论:先遍历d区间[1,\sqrt\frac{N}{3}),在内部二分搜索y是否有y满足d^2+3dy+3y^2=\frac{N}{d}。即可。时间复杂度为O(\sqrt[3]NlogN)。注意在此题中要注意整型越界问题。(纯纯数学题)

实现:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
void solve(){
    ll n;cin>>n;
    for (ll d=1;d*d*d<=n;d++){
        if (n%d!=0) continue;
        ll l = 0,r = 900000010;
        while (l+1!=r){
            ll mid = (l+r)/2;
            if (d*d+3*d*mid+3*mid*mid>=n/d){
                r = mid;
            }else{
                l = mid;
            }
        }
        if (d*d+3*d*r+3*r*r==n/d){
            cout<<r+d<<" "<<r<<"\n";
            return;
        }
    }
    cout<<-1<<"\n";
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    solve();
}

E - Path Decomposition of a Tree

翻译:

        给你一颗有NK个点的树。点的编号为1,2,...,NK,并且第 i 条边(i=1,2,...,NK-1)连接点u_iv_i

        确定这棵树是否可以分解成 N 条路径,每条路径的长度为 K。更确切地说,确定是否存在满足以下条件的 N×K 矩阵 P:

  •  P_{1,1},...,P_{1,K},P_{2,1},...,P_{N,K}是一个由1,2,...,NK组成的排列。
  • 对于每个i=1,2,...,N和j=1,2,...,K-1它们间有边连接着点P_{i,j},P_{i,j+1}

思路:

        对于一个有NK个节点的树(以1为根节点),要求得到N个互不干扰大小为K的子树。

        如果一个子树的大小为k(当前树的根节点也算上)且子节点数量 <= 2。那么这颗子树为可用路径,删除它。

        如果子树大小 >k 或 子节点数量 >=3 或 子树大小 <k 且 子节点数量 >=2。那么答案就只能为No。对于上面子树的情况可以画图辅助思考下。  

实现:

#include<bits/stdc++.h>
using namespace std;
const int MX = 2e5+10;
int n,k;
vector<vector<int>> tree(MX);
int f = 1;
// 属于当前点的子树大小
int dfs(int now,int fa){
    int res = 1,cnt = 0;
    for (int& i:tree[now]){
        if (i==fa) continue;
        int tree_size = dfs(i,now);
        res += tree_size;
        if (tree_size) cnt++;
    }
    if (res>k || cnt>=3 || res<k && cnt>=2){
        f = 0;
    }
    if (res==k && cnt<=2){
        res = 0;
    }
    return res;
}
void solve(){
    cin>>n>>k;
    for (int x,y,i=1;i<n*k;i++){
        cin>>x>>y;
        tree[x].push_back(y);
        tree[y].push_back(x);
    }
    dfs(1,1);
    if (f){
        cout<<"Yes\n";
    }else{
        cout<<"No\n";
    }
}
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    solve();
}

  有建议可以评论,我会积极改进qwq。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Profinet转Profinet以创新网关模块为核心搭建西门子和欧姆龙PLC稳定通讯架构案例​

你是否有听过PROFINET主站与PROFINET主站之间需要做数据通讯有需求&#xff1f; 例如西门子1500与霍尼韦尔DCS系统两个主站之间的通讯。应用于PROFINET为主站设备还有欧姆龙、基恩士、罗克韦尔、施耐德、GE、ABB等品牌的PLC或DCS、FCS等平台。在生产或智能领域有通讯需求。两头…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中&#xff0c;卷积神经网络&#xff08;CNN&#xff09; 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等&#xff0c;CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而&#xff0c;CNN 在捕捉全…

C++单例模式精解

单例模式&#xff08;重点*&#xff09; 单例模式是23种常用设计模式中最简单的设计模式之一&#xff0c;它提供了一种创建对象的方式&#xff0c;确保只有单个对象被创建。这个设计模式主要目的是想在整个系统中只能出现类的一个实例&#xff0c;即一个类只有一个对象。 将单…

【java】集合练习2

Student.java&#xff1a;保存学生类的定义。 public class Student {private String name;private int age;public Student(String name, int age) {this.name name;this.age age;}public String getName() { return name; }public int getAge() { return age; }Overridepu…

FineBI_实现求当日/月/年回款金额分析

需求&#xff1a;原始数据结构如下&#xff0c;需要在分组表中&#xff0c;实现各城市当日/月/年的合同金额分析 实现步骤&#xff1a; ①维度拖入城市 ②分别取当日/月/年合同金额 当日DEF(SUM_AGG(${ 地区数据分析1 _ 合同金额 }),[${ 地区数据分析1 _ 城市 }],[LEFT(${ 地…

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…

解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题

问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题&#xff1a; 1.ipadpro 接上鼠标后&#xff0c;滚轮上下反转&#xff0c;这个是苹果自己的模拟造成的问题&#xff0c;在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…

LLMs之CoD:《Chain of Draft: Thinking Faster by Writing Less》翻译与解读

LLMs之CoD&#xff1a;《Chain of Draft: Thinking Faster by Writing Less》翻译与解读 导读&#xff1a;这篇论文的核心是提出了一种名为“Chain of Draft”&#xff08;CoD&#xff0c;草稿链&#xff09;的新型提示策略&#xff0c;用于改进大型语言模型&#xff08;LLMs&a…

0CTF 2016 piapiapia 1

#源码泄露 #代码审计 #反序列化字符逃逸 #strlen长度过滤数组绕过 www.zip 得到源码 看到这里有flag &#xff0c;猜测服务端docker的主机里&#xff0c;$flag变量应该存的就是我们要的flag。 于是&#xff0c;我们的目的就是读取config.php 利用思路 这里存在 任意文件读取…

python_巨潮年报pdf下载

目录 前置&#xff1a; 步骤&#xff1a; step one: pip安装必要包&#xff0c;获取年报url列表 step two: 将查看url列表转换为pdf url step three: 多进程下载pdf 前置&#xff1a; 1 了解一些股票的基本面需要看历年年报&#xff0c;在巨潮一个个下载比较费时间&…

为什么需要使用十堰高防服务器?

十堰高防服务器的核心价值与应用必要性 一、‌应对复杂攻击的防御能力‌ ‌T级DDoS攻击防护‌ 十堰高防服务器搭载 ‌T级清洗中心‌&#xff0c;支持智能流量调度与分层处理&#xff0c;可抵御 ‌800Gbps-1.2Tbps‌ 的大规模混合攻击&#xff08;如SYN Flood、UDP反射&#xff…

人工智能中的线性代数基础详解

‌ 线性代数是人工智能领域的重要数学基础之一,是人工智能技术的底层数学支柱,它为数据表示、模型构建和算法优化提供了核心工具。其核心概念与算法应用贯穿数据表示、模型训练及优化全过程。更多内容可看我文章:人工智能数学基础详解与拓展-CSDN博客 一、基本介绍 …

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果

【蓝桥杯每日一题】3.16

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x 目录 3.9 高精度算法 一、高精度加法 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a; 解题代码&#xff1a; 二、高精度减法 题目链接&#xff1a; 题目描述&…

2.7 滑动窗口专题:串联所有单词的子串

LeetCode 30. 串联所有单词的子串算法对比分析 1. 题目链接 LeetCode 30. 串联所有单词的子串 2. 题目描述 给定一个字符串 s 和一个字符串数组 words&#xff0c;words 中所有单词长度相同。要求找到 s 中所有起始索引&#xff0c;使得从该位置开始的连续子串包含 words 中所…

电脑实用小工具--VMware常用功能简介

一、创建、编辑虚拟机 1.1 创建新的虚拟机 详见文章新创建虚拟机流程 1.2 编辑虚拟机 创建完成后&#xff0c;点击编辑虚拟机设置&#xff0c;可对虚拟机内存、处理器、硬盘等各再次进行编辑设置。 二、虚拟机开关机 2.1 打开虚拟机 虚拟机创建成功后&#xff0c;点击…

为训练大模型而努力-分享2W多张卡通头像的图片

最近我一直在研究AI大模型相关的内容&#xff0c;想着从现在开始慢慢收集各种各样的图片&#xff0c;万一以后需要训练大模型的时候可以用到&#xff0c;或者自己以后也许会需要。于是决定慢慢收集这些图片&#xff0c;为未来的学习和训练大模型做一些铺垫&#xff0c;哈哈。 …

JVM 垃圾回收器的选择

一&#xff1a;jvm性能指标吞吐量以及用户停顿时间解释。 二&#xff1a;垃圾回收器的选择。 三&#xff1a;垃圾回收器在jvm中的配置。 四&#xff1a;jvm中常用的gc算法。 一&#xff1a;jvm性能指标吞吐量以及用户停顿时间解释。 在 JVM 调优和垃圾回收器选择中&#xff0…

使用GPTQ量化Llama-3-8B大模型

使用GPTQ量化8B生成式语言模型 服务器配置&#xff1a;4*3090 描述&#xff1a;使用四张3090&#xff0c;分别进行单卡量化&#xff0c;多卡量化。并使用SGLang部署量化后的模型&#xff0c;使用GPTQ量化 原来的模型精度为FP16&#xff0c;量化为4bit 首先下载gptqmodel量化…

2025-03-16 学习记录--C/C++-PTA 习题4-2 求幂级数展开的部分和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-2 求幂级数展开的部分和 已知函数e^x可以展开为幂级数1xx^2/2!x^3/3!⋯x^k/k!⋯。现给定一个实数x&a…