Codeforces Harbour.Space Scholarship Contest 2023-2024 (Div. 1 + Div. 2)

news2024/9/24 21:26:14

解题情况 3of 9 A B C    日期 9.1

目录

A. Increasing and Decreasing

题目分析:

代码:

B. Swap and Reverse

题目分析:

代码:

 C. Divisor Chain


A. Increasing and Decreasing

题目分析:

x->y递增,且每次加的数要比前一次要小,判断一下,从x到y这个区间是否能承载满足这个条件的数,这里我们选择最有可能的情况,也即y-1,(y-1)-2,(y-1-2)-3... 可以转化为(y-x)和 1+2+3+...(n-2)比较,到n-2的原因是去掉了x和y。如果可以的化,就按照这样的形式输出即可,否则输出-1

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll sum[1000];
bool isok(int a,int b,int n)
{
    ll sum=0;
    sum+=a;
    for(int i=1;i<=n-2;i++)
    {
        sum+=i;
    }

    if(sum+(n-2)<b)return true;
    else return false;
}

int main()
{
    int t;cin>>t;
    
    while(t--)
    {
        int x,y,n;cin>>x>>y>>n;
        isok(x,y,n);
        if(!isok(x,y,n))cout<<"-1"<<endl;
        else
        {
                ll p=0;
            cout<<x<<" ";
            for(int i=1;i<=n-2;i++)
            {
                p+=i;
                sum[i]=y-p;
            }
            for(int i=n-2;i>=1;i--)cout<<sum[i]<<" ";
            cout<<y<<endl;
        }
        
    }
}

B. Swap and Reverse

题目分析:

两种交换方式:

①i和 i+2 交换,也即 奇奇交换,偶偶交换 

② (1)k为奇 也等同于 奇奇交换,偶偶交换 

  (2)k为偶 等同于 奇偶可以交换

所有整体上取决于k的奇偶,若k为奇,则分别在奇数范围内和偶数范围内寻求最优解输出

反之则可以在整个字符串上寻求最优解输出

代码:

#include<bits/stdc++.h>
using namespace std;
const int N =1e5+7;
char a[N];
char a1[N],a2[N];
bool cmp(char a ,char b)
{
    return a<b;
}
int main()
{
    int t;cin>>t;
    while(t--)
    {
        int n,k;cin>>n>>k;
        for(int i=0;i<n;i++)
        cin>>a[i];
        if(k%2==0)
        {
            sort(a,a+n,cmp);
            for(int i=0;i<n;i++)
            {
                cout<<a[i];
            }
            cout<<endl;
        }
        else
        {
            int o=0,p=0;
            for(int i=0;i<n;i++)
            {
                if((i+1)%2)
                {
                    
                    a1[o++]=a[i];
                }
                else
                {
                    a2[p++]=a[i];
                }
                
            }
                sort(a1,a1+o,cmp);
                sort(a2,a2+p,cmp);
                if(n%2)
                {for(int i=0;i<p;i++)
                {
                    cout<<a1[i]<<a2[i];
                }
                cout<<a1[o-1]<<endl;
                }
                else
                {
                    for(int i=0;i<p;i++)
                {
                    cout<<a1[i]<<a2[i];
                }
                cout<<endl;
                }
        }
    }
}

 C. Divisor Chain

题目分析:

从x减到1,每次减的数都必须是当前数的除数,减的数的使用次数不能超过两次

第一反应为判断素数,因为素数只能-1,题目又说,数据保证合法,所以,从这方面考虑,最终发现不太可能实现。

看到了一个大佬使用的位运算之类的方式做的特别简单

分为两步:

1.找到x内的最大二进制位数2^{t}并 把x减到2^{t} 比如 9->2^{^{3}}   20 ->2^{4} 

2.将 2^{t} 减到1 

代码:

#include <bits/stdc++.h>

#define all(a) (a).begin(), (a).end()
#define sz(a) (int)(a).size()
#define pb push_back
#define mp make_pair

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;

bool bit(int mask, int pos) {
    return (mask >> pos) & 1;
}

int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int tt;
    cin >> tt;
    while (tt--) {
        int x;
        cin >> x;
        int p;
        vector<int> ans;
        ans.pb(x);
        for (int i = 0; ; ++i) {
            if (bit(x, i)) {
                if (x == (1 << i)) {
                    p = i;
                    break;
                }
                x -= (1 << i);
                ans.pb(x);
            }
        }
        while (p > 0) {
            x -= (1 << (p - 1));
            ans.pb(x);
            --p;
        }
        cout << sz(ans) << "\n";
        for (int y : ans) {
            cout << y << " ";
        }
        cout << "\n";
    }

}

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

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

相关文章

keepalived 主备都存在vip, keepalived主备跨网段配置;keepalived主备服务器不在同一个网段怎么配置

keepalived 主备都有vip问题&#xff1b;主备服务器不在同一个网段怎么配置 主机&#xff1a;128.192.10.10 备机&#xff1a;128.192.11.11 备机&#xff1a;128.192.22.22 # keepalived的配置文件增加如下配置即可实现 # 主机&#xff1a;128.192.10.10 vrrp_instance VI_1 {…

【Latex】使用技能站:(三)使用 Vscode 配置 LaTeX

使用 Vscode 配置 LaTeX 引言1 安装texlive2 安装vscode2.1 插件安装2.2 配置 3 安装SumatraPdf3.1 vscode配置3.2 配置反向搜索 引言 安装texlive 安装vscode 安装SumatraPdf 1 安装texlive 在线LaTeX编辑器&#xff1a;https://www.overleaf.com TeX Live下载&#xff1a;h…

layui数据表格实现表格中嵌套表格,并且可以折叠展开

效果&#xff1a; 思路&#xff1a; 1、最外层的表格先渲染&#xff0c;在done回调中向每个tr后面插入一个用来嵌套子级表格的tr。 tr的class和table的id需要用索引 i 关联 //向每一行tr后面追加显示子table的trlet trEles $(".layui-table-view[lay-idlist] tbody tr&…

openGauss学习笔记-53 openGauss 高级特性-Ustore

文章目录 openGauss学习笔记-53 openGauss 高级特性-Ustore53.1 设计原理53.2 核心优势53.3 使用指导 openGauss学习笔记-53 openGauss 高级特性-Ustore Ustore 存储引擎&#xff0c;又名 In-place Update 存储引擎&#xff08;原地更新&#xff09;&#xff0c;是 openGauss …

Vite打包性能优化及填坑

最近在使用 Vite4.0 构建一个中型前端项目的过程中&#xff0c;遇到了一些坑&#xff0c;也做了一些项目在构建生产环境时的优化&#xff0c;在这里做一个记录&#xff0c;以便后期查阅。(完整配置在后面) 上面是dist文件夹的截图&#xff0c;里面的内容已经有30mb了&#xff…

开学季ipad手写笔什么牌子好?第三方电容笔推荐

自从ipad之类的平板电脑上出现了电容笔&#xff0c;电容笔就成功的取代了我们的手指&#xff0c;大大加快了我们的写作速度。不过&#xff0c;由于苹果pencil自带的先进芯片&#xff0c;导致其售价一直很高&#xff0c;给很多人&#xff0c;特别是学生&#xff0c;造成了很大的…

Python(Web时代)—— Django操作现有数据库表

Mysql操作 前言 在实际开发过程中&#xff0c;我们经常会遇到数据库表已经建立好了&#xff0c;现在只需要开发项目功能&#xff0c;操作已有数据库表的情况。 Django为我们提供了inspecdb的方法。他的作用即是对已经存在的数据库表来反向映射结构到models.py中. 操作 第一…

前端监听SDK(上报埋点数据)

1、使用方式 <head><script>window.pineapple || (pineapple {});pineapple.param {"src": "http://127.0.0.1:3001/pa.gif","token": "dsadasd2323dsad23dsada",};</script><script src"js/pineapple.j…

sql各种注入案例

目录 1.报错注入七大常用函数 1)ST_LatFromGeoHash (mysql>5.7.x) 2)ST_LongFromGeoHash &#xff08;mysql>5.7.x&#xff09; 3)GTID (MySQL > 5.6.X - 显错<200) 3.1 GTID 3.2 函数详解 3.3 注入过程( payload ) 4)ST_Pointfromgeohash (mysql>5.…

如何截取视频中的一段视频?分享几种视频分割方法

当处理长视频时&#xff0c;视频分割可以使您更加高效。如果您只需要处理其中的一部分&#xff0c;而不是整个视频&#xff0c;那么分割视频可以使您更容易找到需要处理的部分。而且&#xff0c;分割视频还可以使您更容易在不同的项目之间重复使用视频片段。教大家几种简单的视…

前端面试中Vue的有经典面试题一

1. 谈谈你对MVVM开发模式的理解 MVVM分为Model、View、ViewModel三者。 Model&#xff1a;代表数据模型&#xff0c;数据和业务逻辑都在Model层中定义&#xff1b; View&#xff1a;代表UI视图&#xff0c;负责数据的展示&#xff1b; ViewModel&#xff1a;负责监听Model中…

Argument of type {****} is not assignable to parameter of type ‘never‘.ts(2345)

在日常开发中配置eslintTypescript之后&#xff0c;会出先各种校验报错提示&#xff0c;今天在开发过程中遇到ts2345报错&#xff0c;出错场景发生在数组push一个Object对象报错。 const obj { title: , children: [] }; const currentObj obj.children; 其实就是obj.chilr…

C语言每日一练---Day(14)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;统计每个月兔子的总数 数列的和 &#x1f493;博主csdn个人主页&#x…

链表模拟栈

定义节点 class Node {var num: Int _var next: Node _def this(num: Int) {thisthis.num num}override def toString: String s"num[${this.num}]" }定义方法 class LinkStack {private var head new Node(0)def getHead: Node head//判断是否为空def isEmp…

每日一题 1110删点成林

题目 给出二叉树的根节点 root&#xff0c;树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现&#xff0c;我们就把该节点从树上删去&#xff0c;最后得到一个森林&#xff08;一些不相交的树构成的集合&#xff09;。 返回森林中的每棵树。你可以按任意顺序组…

Pandas+Pyecharts | 2023软科中国大学排名分析可视化

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 数据信息 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 2023中国大学综合排名TOP303.2 2023中国大学各类型占比3.3 2023中国各省地区大学…

Redis 复制(replica)

1. 是什么 1.1 官网地址 https://redis.io/docs/management/replication/ 1.2 一句话 1. 就是主从复制&#xff0c;master以写为主&#xff0c;slave以读为主 2. 当master数据变化的时候&#xff0c;自动将新的数据异步同步到其它slave数据库 2. 能干嘛 1. 读写分离 2. 容灾…

准备HarmonyOS开发环境

引言 在开始 HarmonyOS 开发之前&#xff0c;需要准备好开发环境。本章将详细指导你如何安装 HarmonyOS SDK、配置开发环境、创建 HarmonyOS 项目。 目录 安装 HarmonyOS SDK 配置开发环境 创建 HarmonyOS 项目 总结 1. 安装 HarmonyOS SDK HarmonyOS SDK 是开发 Harmo…

共享办公空间的SWOT分析:

S&#xff08;优势&#xff09;&#xff1a; 灵活性和多样性&#xff1a;共享办公空间通常提供多种套餐和服务&#xff0c;适合不同需求和预算的初创企业和个人。 资源共享和合作&#xff1a;共享办公空间提供了与其他企业家、创新者和专业人士交流和合作的机会&#xff0c;可…