Codeforces Round #808 (Div. 2)

2023-11-08

小吃一波分

A. Difference Operations

       贪心从左往右推过去就好,首先a2肯定要是a1的倍数,不然减不到0,同样的a3也一定要是a2的倍数,但是这里a2可能被操作成a1的其他倍数,比如1 2 3,先变成 1 1 3,然后把a3清0 再清0 a2即可,也就是说a3一定要是a1的倍数,以此类推,全部模a1==0才行

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int maxn = 1e6+10;
const int mod = 1e6+10;
int num[maxn];

void DE(int x){
    printf("%d",x);
}

int GCD(int a, int b) {
    return b ? GCD(b, a % b) : a;
}


int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--) {
        int n;
        cin>>n;
        for(int i = 1;i<=n;i++)
            cin>>num[i];
        int j = 1;
        for(int i = 2;i<=n;i++){
            if(num[i]%num[1]!=0)
                j = 0;
        }
        if(j)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
}

B. Difference of GCDs

构造性题目,直接构造一个大于l且小于r的并且是对应i的倍数即可。

原理的话就是,i是从1-n的,同时gcd(ai,i)必然会等于i。首先gcd(ai,i)的值必然是i的因数,那么gcd(ai,1)必然等于1,gcd(ai,2)可以等于1或者2,但因为前面已经有1了,那么这里只能选2,以此类推,gcd(ai,i)必然等于i,然后进行构造就好了。

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int maxn = 1e6+10;
const int mod = 1e6+10;
int num[maxn];

void DE(int x){
    printf("%d",x);
}

int GCD(int a, int b) {
    return b ? GCD(b, a % b) : a;
}


int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--) {
        int n;
        cin>>n;
        int l,r;
        cin>>l>>r;
        int j = 1;
        vector<int>ans;
        int now;
        for(int i = 1;i<=n;i++){
            if(l%i)
                now = (l/i+1)*i;
            else
                now = l;
            if(now>r){
                j = 0;
                break;
            }
            ans.push_back(now);
        }
        if(j){
            cout<<"YES"<<endl;
            for(auto i:ans)
                cout<<i<<" ";
            cout<<endl;
        }
        else
            cout<<"NO"<<endl;
    }
}

C. Doremy's IQ

比当前q小或相等的任务当然要选,那么分歧点就在,比当前q大的任务到底要不要选?

如果我们做了这个任务,有两种情况,一种是不影响后面任务的选取,一种是会影响后面任务的选取,如果会影响,那么我们选择不做前面做后面的,这是因为影响后面的任务选取可能一影响就影响好几个,如果只影响一个那么选前选后都一样,综合来说选后面即可,比如q=1 任务是 2 1 1选第一个的话只做了一个任务,不做第一个能做两个,比如q = 1 任务是 2 1做前做后都一样。也就是说,我们优先做后面的所有任务。

换而言之,我们只需要在每个点进行对比,做完之后所有任务所需的最低q为多少,如果当前q大于等于最低q就可以做,否则不做。

同时我们还要从后往前对数据进行处理,比如4 5 2 3 6这个数据,很明显 做最后一个任务需要的q至少为1,因为已经是最后一个任务了,减到0也没事 然后是3这个数据 比q=1大但因为是倒数第二个任务,最低q=2就可以做完后面所有任务,然后是2这个数据,由于第四第五个任务最低q=2就可以全部做完,延续q=2就可以做完,即q=2可以做完第三第四第五个任务,推到5的时候,由于后面三个任务q=2可以全部做完,这个任务至少要以此类推。代码里我分两次进行处理了。

有点像aov网络图

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int maxn = 1e6+10;
const int mod = 1e6+10;
int num[maxn];
int w[maxn];
int mi[maxn];
int mx[maxn];

void DE(int x){
    printf("%d",x);
}

int GCD(int a, int b) {
    return b ? GCD(b, a % b) : a;
}



int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--) {
        int n,q;
        cin>>n>>q;
        for(int i = 1;i<=n;i++)
            cin>>w[i];
        for(int i = n;i>=1;i--){
            mi[i] = min(w[i],n-i+1);
        }
        mx[n] = 1;
        for(int i = n-1;i>=1;i--){
            mx[i] = mx[i+1];
            if(mi[i]>mx[i+1])
                mx[i]++;
        }
        for(int i = 1;i<=n;i++){
            if(q>=w[i])
                cout<<1;
            else if(q>=mx[i]){
                cout<<1;
                q--;
            }
            else{
                cout<<0;
            }
        }
        cout<<endl;
    }
}

D. Difference Array

挺神秘的。。。。大概其实就是 排序好以后前面的0不用去计算,每次操作前面的0减少一个,后面的正常操作就好了。原理不是很懂,脑补一下就是由于相减,数组中的数会越来越少,相减为0会越来越多,要操作的数越来越少。0是不用处理的,因为0-0还是0,在数组中的位置也不用动,所以时间够用,剩下的暴力就行。

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
const int maxn = 1e6+10;
const int mod = 1e6+10;
int num[maxn];
int w[maxn];
int mi[maxn];
int mx[maxn];

void DE(int x){
    printf("%d",x);
}

int GCD(int a, int b) {
    return b ? GCD(b, a % b) : a;
}

void show(vector<int>a){
    for(int i  =0;i<a.size();i++)
        cout<<a[i]<<" ";
    cout<<endl;
}

int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int t;
    cin>>t;
    while(t--) {
        int n,x;
        cin>>n;
        for(int i = 1;i<=n;i++){
            cin>>num[i];
        }
        int tar = n;
        for(int i = 1;i<=n;i++)
            if(num[i]){
                tar = max(i-1,1);
                break;
            }
        while(n>1&&num[n-1]){
            for(int i = tar;i<n;i++){
                num[i] = num[i+1]-num[i];
            }
            n--;
            sort(num+tar,num+n+1);
            for(int i = tar;i<n;i++){
                if(num[i]==0)
                    tar++;
                else{
                    tar = max(tar-1,1);
                    break;
                }
            }
         /*   for(int i = 1;i<=n;i++){cout<<num[i]<<" ";}
            cout<<endl;*/
        }
        cout<<num[n]<<endl;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Codeforces Round #808 (Div. 2) 的相关文章

  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 重载<<的返回值

    include
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • SVM(核函数、高斯核函数RBF)

    转载自博客园 https www cnblogs com volcao p 9465214 html SVM 核函数 高斯核函数RBF 一 核函数 Kernel Function 1 格式 K x y 表示样本 x 和 y 添加多项式特征得
  • 《thinkphp》一、通用化api和异常解决方案

    一 通用化API接口数据封装 1 将下面代码放到common php公共文件中 方便调用 通用化API接口数据输出 param int status 业务状态码 param string message 信息提示 param data 数据
  • 闲鱼项目如何操作?日收入1000+详细讲解!

    想通过互联网赚钱 必须认识到两点 哪里有人哪里就有钱赚 信息资源差可以产生很大的价值 其实 有很多赚钱项目都是利用信息差进行一个放大化操作 闲鱼卖货就是其中一种 闲鱼就是利用信息差赚钱的项目 很多推广者利用用户贪小便宜的心理赚的盆满钵满 闲
  • 连载---《自动调节系统解析与PID整定》之一

    原创连载 自动调节系统解析与PID整定 之一 360doc com
  • mybatis-plus-boot-starter2.3.12.RELEASE版本搭配mybatis2.3.3和mysql-connector-java5.1.32

    mybatis plus版本与mysql版本 spring boot starter依赖版本
  • SSM(概述)

    第一章 Spring概述 1 1 Spring概述 1 1 1 什么是Spring 1 1 2 框架的优点 1 13 Spring的体系结构 1 Core Container 核心容器 2 Data Access Integration 数
  • PHP 在某个范围内,随机生成N个数,总和等于M

    param int count 随机数数量 param int sum 总和 param int mix 最小值 param int max 最大值 function getRand count sum mix max ini set me
  • java 定义全局list_JAVA中如何声明一个全局变量

    2018 06 07 回答 在一个全局类里面定义公共静态变量 public class global public static int abc 0 public static int def 0 解决方案 title global des
  • 数据结构 第二章线性表

    线性表的逻辑结构 线性表的定义 线性表是一种线性结构 在一个线性表中数据元素的类型是相同的 或者说线性表是由 同一类型的数据元素构成的线性结构 定义如下 线性表是具有相同数据类型的n n 0 个数据元素的有限序列 通常记为 a 1 a 2
  • 链游知识5:如何读懂链游项目白皮书

    链游玩家 出品 前言 链游知识是链游玩家专门推出的针对入门玩家的区块链游戏知识科普 从小白到高玩 看链游玩家就够了 本期将会给大家介绍一个比较重要的知识点 那就是尝试学会阅读链游类项目的白皮书 白皮书是获取这个项目的理念 运行规则 经济模型
  • MYSQL的基础架构

    了解MySQL 超详细的MySQL工作原理 体系结构 1 MySQL体系结构 2 MySQL内存结构 3 MySQL文件结构 4 innodb体系结构 一 了解MySQL前你需要知道的 引擎是什么 MySQL中的数据用各种不同的技术存储在文
  • Docker学习:docker网络

    在已经安装docker的服务器 通过网络命令来查看网络 ip addr 会出现一堆地址 但是我们主要看前面的部分 如下 会有三个网络 lo本地 eth0内网 docker0 docker0地址 问题 docker是如何处理容器网络访问的 r
  • 有关服务器购买和部署完整流程

    服务器购买和部署全流程 一 服务器 二 阿里云账户 三 账户登录 四 根据需要 选择方案并购买 1 根据情况 选择购买 2 选择购买的服务器类型 3 核对信息 2 最后再次确认 五 OK完成 返回控制台 六 服务器购买完成 本篇小结
  • python获取本年每一天

    代码如下 yunx import arrow def getAllYearDate year int param year 年份 eg 2022 2023等 return date list start date s 1 1 year a
  • Docker 安装 Nginx 容器

    一 Nginx是什么 Nginx是十分轻量级的HTTP服务器 Nginx 它的发音为 engine X 是一个高性能的HTTP和反向代理服务器 同时也是一个IMAP POP3 SMTP 代理服务器 Nginx是由俄罗斯人 Igor Syso
  • 神经网络正向传播及反向传播原理分析——神经网络之softmax(5)

    转载https forecast blog csdn net article details 96465982 spm 1001 2014 3001 5502 通过对本系列的学习 你可以全面的了解softmax的来龙去脉 如果你尚不了解神经
  • 服务器购买是有无系统,买服务器含不含操作系统

    买服务器含不含操作系统 内容精选 换一换 Atlas 800 训练服务器 型号 9010 安装上架 服务器基础参数配置 安装操作系统等操作请参见 Atlas 800 训练服务器 用户指南 型号9010 Atlas 800 训练服务器 型号
  • 【软件测试】Linux部署测试环境(在本地部署的Linux环境中进行测试活动)(Linux上安装java、mysql、redis详细过程)

    1 在Linux上安装java 使用命令行 获取root用户权限 su root 需要输入root密码 安装jdk命令 yum install java 1 8 0 openjdk 其他命令 yum search java grep jdk
  • 9.13

    70 爬楼梯 进阶 class Solution public int climbStairs int n int dp new int n 1 设置背包容量 n个 int m 2 有两个物品 注意这是一个完全背包问题 dp 0 1 ini
  • Codeforces Round #808 (Div. 2)

    小吃一波分 A Difference Operations 贪心从左往右推过去就好 首先a2肯定要是a1的倍数 不然减不到0 同样的a3也一定要是a2的倍数 但是这里a2可能被操作成a1的其他倍数 比如1 2 3 先变成 1 1 3 然后把