Codeforces Round 901 (Div. 2)

news2024/11/23 5:11:59

Problem - A - Codeforces

贪心

每次都先让b减到1,然后再去选择工具来增加时间

AC代码:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=110;
int x[N];
int a,b,n;
void solve() {
    cin>>a>>b>>n;
    for(int i=1;i<=n;i++) cin>>x[i];
    sort(x+1,x+1+n);
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=b-1;
        b=1;
        b=min(b+x[i],a)-1;
        ans++;
    }
    ans+=b;
    cout<<ans<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

Problem - B - Codeforces

一开始只记录a,b的最小值和最大值,没有考虑到a的最小值去换b的最大值,然后b的最小值去换a的最大值时可能b的最小值不是刚换过来的a的最小值

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=55;
int a[N],b[N];
int n,m,k;
void solve() {
    cin>>n>>m>>k;
    int mina=2e9,minb=2e9;
    int maxa=0,maxb=0;
    int ans=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ans+=a[i];
        mina=min(mina,a[i]);
        maxa=max(maxa,a[i]);
    }
    for(int i=1;i<=m;i++){
        cin>>b[i];
        minb=min(minb,b[i]);
        maxb=max(maxb,b[i]);
    }
    if(mina>=maxb){
        if(k%2==0) ans=ans-maxa+minb;
    }
    else{
        if(k%2==1) ans=ans-mina+maxb;
    }
    cout<<ans<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

最优策略就是用最小值去换最大值

可以模拟第一回合和第二回合的情况,这样就涵盖了所有的情况了,当k为奇数时,和第一回合答案一样,当k为偶数时,和第二回合答案一样

AC代码:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N=55;
int a[N],b[N];
int n,m,k;
void solve() {
    cin>>n>>m>>k;
    int ans1=0,ans2=0;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=m;i++) cin>>b[i];
    sort(a+1,a+1+n);
    sort(b+1,b+1+m);
    if(a[1]<b[m]){
        swap(a[1],b[m]);
        sort(a+1,a+1+n);
        sort(b+1,b+1+m);
    }
    for(int i=1;i<=n;i++) ans1+=a[i];
    if(b[1]<a[n]) swap(b[1],a[n]);
    for(int i=1;i<=n;i++) ans2+=a[i];
    if(k%2==1) cout<<ans1<<endl;
    else cout<<ans2<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

Problem - C - Codeforces

如果用小数做的话,由于数过于大,会有精度问题

错误代码:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
int n,m;
void solve() {
    cin>>n>>m;
    if(n%m==0){
        cout<<0<<endl;
        return;
    }
    if(n>m) n%=m;
    double x=(double)n/m;
    double y=0.5;
    if(x<y) swap(x,y);
    double diff;
    if(x!=y) diff=x-y;
    else diff=x;
    while(diff>0.5){
        if(x<y) swap(x,y);
        diff=x-y;
        x-=y;
    }
    double d=0.5;
    while(d>0){
        d-=diff;
    }
    if(d!=0){
        cout<<-1<<endl;
        return;
    }
    int cnt=0;
    for(double i=1;;i/=2){
        if(i==diff) break;
        cnt++;
    }
    int ans=0;
    for(int i=1;i<=cnt-1;i++){
        ans+=n;
        n*=2;
    }
    ans+=m/2;
    cout<<ans<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

f(n,m)表示n个苹果均分给m个人的次数

由于m最大1e9,n最小为1,所以最多log1e9次,大概30次

AC代码:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
int n,m;
void solve() {
    cin>>n>>m;
    n%=m;
    int ans=0;
    int cnt=0;
    while(n){
        ans+=n;
        n*=2;
        n%=m;
        cnt++;
        if(cnt>30) break;
    }
    if(n%m){
        cout<<-1<<endl;
        return;
    }
    cout<<ans<<endl;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    cin>>t;
    while(t--) {
        solve();
    }
    return 0;
}

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

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

相关文章

【C语言】模拟实现strlen

strlen是非常常用的字符串函数 目录 介绍&#xff1a;模拟实现&#xff1a;计数器递归指针-指针 介绍&#xff1a; 我们可得这个函数是求在字符串开始与\0之间的字符串长度 代码示例&#xff1a; #include <stdio.h> int main() {const char* str1 "abcdef"…

神器 CodeWhisperer

这两天看到了好多关于 Amazon CodeWhisperer 针对个人用户终身免费使用的消息&#xff0c;便抽空简单来重点介绍下如何在 VS Code 这款 IDE 上安装和使用 CodeWhisperer。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视…

Linux——进程间通信——system V系列

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——进程间通信——system V系列 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;system V 版本进程间通信的机制。 目录 一.共享…

WebGPU 入门:绘制一个三角形

大家好&#xff0c;我是前端西瓜哥。 今天我们来入门 WebGPU&#xff0c;来写一个图形版本的 Hello World&#xff0c;即绘制一个三角形。 WebGPU 是什么&#xff1f; WebGPU 是一个正在开发中的潜在 Web 标准和 JavaScript API&#xff0c;目标是提供 “现代化的 3D 图形和计…

AutoCAD 产品设计:图形单位

本文讲解 AutoCAD 产品的图形单位功能产品设计&#xff0c;没有任何代码实现。 使用的 AutoCAD 为 2020 版本 图形单位是什么&#xff1f; 图形单位是用于设置 一些属性数据应该用什么格式显示 的命令&#xff0c;命令标识为 un&#xff08;units&#xff09;。 举个例子。 …

操作EXCEL计算3万条数据的NDVI并填入

Python操作EXCEL&#xff0c;计算3万条数据的NDVI并填入 问题描述 现在是有构建好了的查找表&#xff0c;不过构建了3万条数据&#xff0c;在excel中手动计算每行的NDVI值太麻烦了&#xff0c;也不会操作。 就试试python吧&#xff0c;毕竟python自动处理大型EXCEL数据很方便…

黑马头条项目环境搭建

注册中心网关配置 spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:[/**]:allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 平台管理- id: useruri: lb://…

51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

51单片机可调幅度频率信号发生器( proteus仿真程序原理图报告讲解视频&#xff09; 讲解视频1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图4. 设计报告5. 设计资料内容清单&&下载链接***[资料下载链接](https://docs.qq.com/doc/DS1daV1BKRXZMeE9u)*** 51单片机可…

数据结构——计数与归并非递归

排序算法 前言一、归并的非递归实现二、计数排序三、序算法复杂度及稳定性分析总结 前言 重要的事说三遍&#xff01; 学习&#xff01;学习&#xff01;学习&#xff01; 努力!努力!努力&#xff01; 一、归并的非递归实现 代码实现&#xff1a; void MergeSortNonR(int* a,…

3分钟在移动盘上安装Ubuntu系统和ROS2

目录 原视频准备烧录 一个usb移动固态硬盘可以干什么呢&#xff1f; 可以用移动盘解决电脑存储空间不足的问题&#xff0c;可以用移动盘存储数据&#xff0c;可以用移动盘装其他系统当做双系统来使用&#xff0c;可以在一个移动固态硬盘里装两个甚至更多的系统… 下面&#xf…

《C++ primer plus》精炼(OOP部分)——对象和类(8)

学习是一项持续的投资&#xff0c;永远不会白费——本杰明富兰克林 文章目录 第13章&#xff1a;类继承一个基类和派生类公有继承的逻辑关系&#xff1a;is-a多态公有继承 第13章&#xff1a;类继承 一个基类和派生类 从一个类派生出另一个类时&#xff0c;原始类称为基类&am…

SLAM简要介绍

过去二十年&#xff0c;计算机视觉和机器学习领域都取得了很多进步。这一切都归功于硬件的改进&#xff0c;这使得研究人员和工程师能够设计和训练更复杂和更准确的模型&#xff0c;同时以以前难以想象的规模处理和分析数据。随着硬件的这些改进&#xff0c;未知环境的映射已经…

基于Java的学校固定资产管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

vue 使用 创建二维数组响应数据 渲染 echarts图标

目前我遇到的情况就是用动态的二维数组数据渲染echarts图标&#xff0c;我们从后端收到的接口一般是个一维数组&#xff0c;需要手动构建并且保证响应式。接下来我做了个案例 一、案例总逻辑 1. 先创建一个vue项目 2. 添加 echarts依赖 3. 模拟数据请求&#xff0c;构建二维数组…

支付宝2023年收单外包服务机构评级启动,截止11月15日

9月22日消息&#xff0c;支付宝近日发布公告称&#xff0c;已启动2023年收单外包服务机构评级工作。支付宝表示&#xff0c;收单外包服务机构评级工作是金融监管部门规范引导收单外包服务市场的重要举措&#xff0c;其结果将会向社会公示&#xff0c;直接关系到外包机构的业务开…

QT 之数据库 QSqlQuery CURD 实战

零、参考文档 https://doc.qt.io/archives/qt-6.0/qsqldatabase.html 一、开发环境 Ubuntu 20.04 QT6.0 Microsoft SQL Server 2022 Developer Edition (64-bit) 先修改 /etc/odbc.ini 的数据源配置&#xff0c;指定连接数据库 vdb&#xff0c; sudo vim /etc/odbc.ini[mss…

《发现的乐趣》作者费曼(读书笔记)

目录 一、书简介 二、作者理查德•费曼 费曼式思维 教育与传承 三、个人思考 四、笔记 科学家眼中的花之美 关于偏科 父亲教育我的方式 知道一个概念和真正懂得这个概念有很大区别 我没有义务去成全别人对我的期望 诺贝尔奖——够格吗&#xff1f; 探究世界的游戏规…

基于SpringBoot的商品物品产品众筹平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

内网综合扫描工具-fscan的安装和使用

简介 一款内网综合扫描工具&#xff0c;方便一键自动化、全方位漏扫扫描。 支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。相当强大&#xff01;&…

JavaSE | 初始Java(九) | 包的使用

包 包是对类、接口等的封装机制的体现&#xff0c;是一种对类或者接口等的很好的组织方式&#xff0c;比如&#xff1a;一个包中的类不想被其他包中的类使用。包还有一个重要的作用&#xff1a;在同一个工程中允许存在相同名称的类&#xff0c;只要处在不同的包中即可。 可以…