codeforces round973 div2

news2024/11/16 21:50:57

A zhan's blender

问题:

思路:

模拟

代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

void solve() {
    int n, x, y;
    cin >> n >> x >> y;
    cout << (n + min(x, y) - 1) / min(x, y) << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t -- ) solve();
    return 0;
}

B Battle for survive

问题:

思路:注意到最后只会剩下最后一个战士$n$, 并且该战士的对手是战士$n - 1$, 因此如果让最后一个战士的rating最大,让倒数第二个战士的rating最小即可 即rating_{n} - (rating_{n - 1} - \sum_{i = 1}^{n - 2}rating_{i})

代码:
 

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1);
    for(int i = 1; i <= n; i ++ ) cin >> a[i];
    if(n == 2) {
        cout << a[2] - a[1] << "\n";
        return;
    }
    vector<ll> s(n + 1);
    for(int i = 1; i <= n - 1; i ++ ) {
        s[i] = s[i - 1] + a[i];
    }
    
    cout << a[n] - (a[n - 1] - s[n - 2]) << "\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t -- ) solve();
    return 0;
}

C password cracking

问题:

思路:
我们可以想象这样一种情况,如果我们一直向一个串的末尾加0或1字符,并且得到的反馈都是不是子串,那么是否说明我们现在找到的子串就是原串的一个后缀。答案是一定的,如果不是后缀的话那么至少会有一种情况得到的反馈是子串,同样的,在我们找到后缀后,按照同样的方法向前添加字符,就可以确定最后的串,由于我们每次拓展一位最多进行两次询问,因此我们的询问总数不会超过2 * n

代码:
 

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int ask(string s) {
    cout << "? " << s << endl;
    int re;
    cin >> re;
    //cout << re << endl;
    return re;
}

void solve() {
    int n;
    cin >> n;
    string ans;
    string a = "0";
    string b = "1";
    bool ok = true;
    for(int i = 1; i <= n - 1; i ++ ) {
        //cout << ans + a<<"LOJPJP" << endl;
        if(ok) {
            if(ask(ans + a)) {
                ans += a;
            } else if(ask(ans + b)) {
                ans += b;
            } else {
                ok = false;
                i --;
            }
        } else {
            if(ask(a + ans)) {
                ans = a + ans;
            } else if(ask(b + ans)) {
                ans = b + ans;
            }
        }
    }
    
    if(ok) {
        if(ask(ans + a)) {
            ans += a;
            cout << "! " << ans << endl;
        } else if(ask(ans + b)) {
            ans += b;
            cout << "! " << ans << endl;
        } else {
            if(ask(a + ans)) {
                ans = a + ans;
                cout << "! " << ans << endl;
            } else {
                ans = b + ans;
                cout << "! " << ans << endl;
            }
        }
    } else {
        if(ask(a + ans)) {
            ans = a + ans;
            cout << "! " << ans << endl;
        } else {
            ans = b + ans;
            cout << "! " << ans << endl;
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t -- ) solve();
    return 0;
}

E prifix gcd

思路:

对于一个数组,从前往后对这个数组进行gcd操作有这样一个性质:
即gcd的值最多变化log_{2}max(a[i])

这里进行一个简单的证明,倘若一个数组中的数足够多... 64,8,4,2那么每次进行gcd操作gcd的值都会变成gcd^{1/2} 如果存在其他的值只会让这种衰减衰减的更快

有了这个性质之后我们就可以执行一个循环,每次循环找出当前最小的gcd值,当我们发现本次循环的gcd与上一次循环的gcd的值一致时就可以break掉,由上述性质可知该循环是log级别的

代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll gcd(ll a, ll b) {
    return b? gcd(b, a % b): a;
}

void solve() {
    ll n;
    cin >> n;
    vector<ll> a(n + 1);
    for(ll i = 1; i <= n; i ++ ) cin >> a[i];
    //让式子的值最小,如果存在质数或互质的数, 输出min(互质的数) + n - 1 
      
    
    sort(a.begin() + 1, a.end());
    ll now = a[1];
    ll g = a[1];
    ll cnt = n - 1;
    ll ans = g;
    //cout << g << " ";
    while(true) {
        for(ll i = 1; i <= n; i ++ ) {
            now = min(now, gcd(g, a[i]));
        }
        //cout << now << " ";
        if(now == g) break;
        g = now;
        ans += now;
        cnt --;
    }
    //cout << now << " " << cnt << " ";
    cout << ans + now * max(0ll, cnt) << "\n";
}

int main() {
    ll t;
    cin >> t;
    while(t -- ) solve();
    return 0;
}

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

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

相关文章

第164天:应急响应-挖矿脚本检测指南_威胁情报_样本定性_文件清除_入口修复

目录 案例一&#xff1a;挖矿样本-Win&Linux-危害&定性 案例二&#xff1a;Linux-Web安全漏洞导致挖矿事件 案例三&#xff1a; Windows-系统口令爆破导致挖矿事件 案例一&#xff1a;挖矿样本-Win&Linux-危害&定性 windows样本 非常明显的特征就是cpu的占…

一定要收藏的4款AI论文大纲写作方法!说不定就用上了~

在当今学术研究和写作领域&#xff0c;AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。本文将推荐四款优秀的AI论文大纲写作方法&#xff0c;并特别推荐千笔-AIPassPaper&…

拼图缺口形状检测系统源码分享

拼图缺口形状检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

车间调度 | 利用遗传算法(GA)求解混合流水车间调度问题(Hybrid flow-shop scheduling problem, HFSP)

车间调度 | 利用遗传算法(GA)求解混合流水车间调度问题(Hybrid flow-shop scheduling problem, HFSP) 目录 车间调度 | 利用遗传算法(GA)求解混合流水车间调度问题(Hybrid flow-shop scheduling problem, HFSP)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 利用遗传算…

11-pg内核之锁管理器(六)死锁检测

概念 每个事务都在等待集合中的另一事务&#xff0c;由于这个集合是一个有限集合&#xff0c;因此一旦在这个等待的链条上产生了环&#xff0c;就会产生死锁。自旋锁和轻量锁属于系统锁&#xff0c;他们目前没有死锁检测机制&#xff0c;只能靠内核开发人员在开发过程中谨慎的…

【测试项目】——个人博客系统自动化测试

&#x1f4d6; 前言&#xff1a;本文针对个人博客项目进行测试&#xff0c;个人博客主要由四个页面构成&#xff1a;登录页、列表页、详情页和编辑页&#xff0c;主要功能包括&#xff1a;登录、编辑并发布博客、查看详情、删除博客以及注销等功能。对于个人博客的测试就是针对…

JavaScript的注释与常见输出方式

注释 源码中注释是不被引擎所解释的&#xff0c;它的作用是对代码进行解释。Javascript 提供两种注释的写法:一种是单行注释&#xff0c;用//起头;另一种是多行注释&#xff0c;放在/*和*/之间。 单行注释&#xff1a; //这是单行注释 多行注释&#xff1a; /*这是 多行 注…

享元模式详解:内存优化的利器

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过共享相同对象来减少内存消耗&#xff0c;从而提高系统性能。享元模式适用于大量细粒度对象的场景&#xff0c;这些对象具有相同或相似的状态。 一&#xff0c;享元模式的结构 享元模…

NXP i.MX8系列平台开发讲解 - 4.1.5 GNSS篇(五) - GPSD 编译(包含交叉编译)详解

专栏文章目录传送门&#xff1a;返回专栏目录 Hi, 我是你们的老朋友&#xff0c;主要专注于嵌入式软件开发&#xff0c;有兴趣不要忘记点击关注【码思途远】 文章目录 目录 1. 编译GPSD[Ubuntu] 2. 交叉编译 2.1 解决依赖库编译 2.1.1 libusb 编译 2.1.2 libncurses 编译…

Redis的一些通用指令

首先我们需要先连接客户端服务器&#xff0c;此时我们需要通过redis-cli和redis服务器进行交互&#xff0c;输入ping来确保通路的流畅 &#xff08;一&#xff09;get和set redis中最核心的两个命令就是get和set&#xff0c;get就是根据key来取出对应value&#xff0c;set就是把…

2024年汉字小达人区级自由报名比赛的真实流程图解——和往年比有一个重大变化

今天是2024年9月25日&#xff0c;上海小学生&#xff08;和家长&#xff09;们最关注的赛事之一——美丽汉字中文自修杯第十一届上海市小学生汉字小达人区级自由报名区级比赛正式开始了&#xff01; 虽然今天才是比赛的第一天&#xff0c;但是很多孩子已经摩拳擦掌开始展示自己…

信息安全工程师(18)常见密码算法

前言 常见的密码算法主要分为三大类&#xff1a;对称加密算法、非对称加密算法和摘要算法。 一、对称加密算法 对称加密算法&#xff0c;又称为秘密密钥算法或单密钥算法&#xff0c;是指加密和解密使用相同密钥的加密方式。这种算法的特点是加密速度快&#xff0c;适用于大量数…

【延时队列的实现方式】

文章目录 延时队列JDK自带的延时队列实现Redis实现延迟队列RabbitMQ 延时队列 延时队列 延时队列是一种特殊类型的队列&#xff0c;它允许元素在特定时间间隔后才能被处理。这种队列在处理具有延迟需求的任务时非常有用&#xff0c;例如定时任务、事件驱动系统等 延时队列在项…

Cannon-es.js编程进阶:复杂形状的碰撞

本文目录 前言最终复杂模型碰撞效果1、碰撞事件及休眠事件1.1 前文回顾及代码整改1.2 效果1.3 监听碰撞事件与休眠1.3.1 碰撞事件collide1.3.2 休眠事件sleepy及sleep2、多个形状的组合物体碰撞2.1 效果3、Trimesh3.1 代码3.2 效果前言 我们在Cannon-es.js基础入门:3D 物理碰撞…

新闻媒体宣发套餐扩大影响力和建立品牌形象方法-华媒舍

在当今互联网时代&#xff0c;营销推广是任何企业必须要面对的挑战。而在众多的营销方式中&#xff0c;精准投放和新闻媒体宣发套餐推广成为了越来越受欢迎的选择。本文将从精准投放和新闻媒体宣发套餐推广两个方面进行科普介绍&#xff0c;解析其背后的重要意义和带来的百倍回…

微软宣布弃用WSUS,企业用户尽早准备替换方案

微软最近宣布将逐步弃用Windows Server Update Services (WSUS)&#xff0c;不再为其开发新功能&#xff0c;但会继续支持现有的更新和功能。这一决定对企业客户来说影响深远&#xff0c;尤其是那些依赖WSUS来管理大规模Windows设备更新的组织。 对企业客户的影响 安全性与合规…

如何使用ant design vue的a-select下拉框,实现既能输入内容,也可以下拉选择的效果,apiselect同样适用

修改mode 强烈推荐 代码如下&#xff0c;重点在search和mode <ApiSelectv-if"editableData[record.key]"mode"SECRET_COMBOBOX_MODE_DO_NOT_USE"search"inputinspect":api"problem":params"{projectId:projectId}"showS…

[前端]DOM+CSS+HTML实现水波进度效果

效果展示&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…

PAT甲级-1115 Counting Nodes in a Binary Search Tree

题目 题目大意 给定节点个数&#xff0c;以及每个节点的值&#xff0c;要求构造一棵二叉排序&#xff08;搜索&#xff09;树&#xff0c;并按照规定格式输出最后一层和倒数第二层的节点个数。 思路 二叉排序树的构造方法是递归&#xff0c;但思路类似于二分查找。逐个将n个…

浅克隆与深克隆

1、浅克隆 1.1、什么是浅克隆&#xff1f; 被复制对象的所有变量都含有与原来的对象相同的值&#xff0c;而所有的对其他对象的引用仍然 指向原来的对象(克隆对象与原型对象共享引用数据类型变量)。 如下图所示&#xff1a; 1.2、浅克隆代码实现 类实现接口 Cloneable&#xf…