Educational Codeforces Round 84 题解

2023-05-16

Educational Codeforces Round 84 题解

A-Sum of Odd Integers

题意: n n n是否能表示为 k k k个不同的正奇数之和?

题解: k k k个不同不同的正奇数之和最小值为 k 2 k^2 k2 ,故仅当 n > = k 2 n >= k^2 n>=k2 且两数奇偶性相同时满足条件。要开long long不然wa.

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
void solve(){
    ll n, k;
    cin >> n >> k;
    if((n-1) / 2 + 1 < k ||  k * k > n){
        cout << "NO" << endl;
        return;
    }
    if(k % 2 == n % 2){
        cout << "YES" << endl;
        return;
    }
    cout << "NO" << endl;
}
int main(){
    ios_base::sync_with_stdio(0);
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

B-Princesses and Princes

**题意:**有 n n n 个女儿和 n n n 个王子,每个女儿有可匹配的王子的列表 g i [ 1 ] , g i [ 2 ] , … … , g i [ k ] g_i[1], g_i[2], ……, g_i[k] gi[1],gi[2],,gi[k] (单增)。从 1 1 1 号女儿开始,将每个女儿匹配给她的列表里尚未匹配的最小号的王子。问是否能向一位女儿的列表里增加一位王子使得总共匹配成功的对数增加。

**题解:**把一个没匹配上的女儿和(全都匹配之后剩下的)最小号的王子匹配上。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int vis[maxn], x[maxn];
void solve(){
    int n; cin >> n;
    for (int i = 0; i <= n; i++){
        vis[i] = x[i] = 0;
    }
    for (int i = 1; i <= n; i++) {
        int k; cin >> k;
        for (int j = 1; j <= k; j++) {
            int v; cin >> v;
            if (!x[i] && !vis[v]) {
                x[i] = v, vis[v] = 1;
            }
        }
    }
    int a = 0, b = 0;
    for (int i = 1; i <= n; i++){
        if(!x[i]){
            a = i; break;
        }
    }
    for (int i = 1; i <= n; i++){
        if(!vis[i]){
            b = i; break;
        }
    }
    if(a || b){
        cout << "IMPROVE" << endl;
        cout << a << " " << b << endl;
    }
    else{
        cout << "OPTIMAL" << endl;
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

C-Game with Chips

题意: n n n * m 的棋盘上有 k k k 个棋子,每个棋子坐标 s x i , s y i sx_i, sy_i sxi,syi ,目的地 f x i , f y i fx_i, fy_i fxi,fyi .

对于路线上的每一步L/R/U/D,使所有棋子向该方向移动一格,如果已经到达边界则不动。

问是否能找到一条长度不超过 2 ∗ m ∗ n 2*m*n 2mn 路线使得所有棋子都经过其目的地。如果可以,输出路径。

如果不存在,输出 − 1 -1 1

**题解:**全挪到左上角然后蛇形走一遍棋盘。

代码:

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int n, m, k;
    cin >> n >> m >> k;
    for (int i = 1; i <= k; ++i){
        int x, y; cin >> x >> y;
    }
    for(int i = 1; i <= k; ++i){
        int x, y; cin >> x >> y;
    }
    string s = "";
    s += string(n - 1, 'U');
    s += string(m - 1, 'L');     
    for (int i = 1; i <= n; ++i) {
        if (i & 1) {
            s += string(m - 1, 'R');
        }
        else {
            s += string(m - 1, 'L');
        }
        if (i < n)
            s += "D";
    }
    cout << s.size() << endl;
    cout << s << endl;
    return 0;
}

D-Infinite Path

**题意:**给定一个排列和排列上面每一个点的颜色。定义排列乘法 c = a × b → c [ i ] = b [ a [ i ] ] c=a×b→c[i]=b[a[i]] c=a×bc[i]=b[a[i]], 定义排列的幂.

定义无穷环:p[p[…]]=p[i]p[p[…]]=p[i] (禁止套娃)

求是否有一个无穷环的 k k k 次幂使得 环上的点的颜色都相等。

**题解:**对排列的每个初始的闭环进行处理,处理一个闭环时枚举 k k k 1 1 1 m − 1 m-1 m1,当 m m%(k+1)==0 m时遍历所有产生的小闭环看是否颜色一样,取最小值即可。

代码:

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

const int maxn = 2e5 + 10;
int q[maxn], p[maxn], c[maxn], vis[maxn];

int func(int cnt){
    for (int i = 1; i <= cnt; i++){
        if(cnt % i != 0) continue;
        for (int j = 0; j < i; j ++){
            int t = q[j];
            for (int x = j; x < cnt; x += i){
                if(q[x] != t) t = 0;
            }
            if(t) return i;
        }
    }
    return -1;
}
void solve(){
    int n; cin >> n;
    for (int i = 1; i <= n; i++){
        cin >> p[i];
    }
    for (int i = 1; i <= n; i++){
        cin >> c[i];
    }
    for (int i = 0; i <= n; i++){
        vis[i] = 0;
    }
    int ans = 0x3f3f3f3f;
    for (int i = 1; i <= n; i++){
        if(vis[i]) continue;
        int cnt = 0, t = i;
        while(!vis[t]){
            q[cnt++] = c[t];
            vis[t] = 1;
            t = p[t];
        }
        ans = min(ans, func(cnt));
    }
    cout << ans << endl;
}
int main(){
    ios_base::sync_with_stdio(0);
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

E-Count The Blocks

**题意:输入一个 n < 2 ∗ 1 0 5 n < 2 * 10 ^ 5 n<2105。长度为 k k k 的数段定义为一个数串中恰好连续 ** k k k个相同的数。

输出 n n n 个数,第 i i i个数为 n n n位数(含前导 0 0 0 000...0 000...0 000...0 999...9 999...9 999...9 之间的所有数中,长度为 i i i 的数段的数量之和, 对 998244353 998244353 998244353 取模。

**题解:**找规律, F i − 1 = 10 ∗ F i + 81 ∗ 1 0 n − i − 1 , i < n − 1 F_{i−1}=10*F_i+81*10^{n−i−1}, i<n−1 Fi1=10Fi+8110ni1,i<n1

代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int mod = 998244353;
const int maxn = 2e5 + 10;

ll ans[maxn];
int main(){
    ios_base::sync_with_stdio(0);
    int n; cin >> n;
    ll x = 810;
    ans[1] = 10; ans[2] = 180;
    for (int i = 3; i < maxn; i++){
        ans[i] = (ans[i - 1] * 10 + x) % mod;
        x = (x * 10) % mod;
    }
    for (int i = n; i >= 1; i--){
        cout << ans[i] << " ";
    }
    cout << endl;
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Educational Codeforces Round 84 题解 的相关文章

  • 【codeforces】Round #604 (Div. 2)(A. B.)

    Codeforces Round 604 Div 2 xff1a http codeforces com contest 1265 目录 A Beautiful String链接题意思路AC代码 B Beautiful Numbers链接题
  • c++中的floor, ceil, round

    xfeff xfeff 2 1 2 6 2 1 2 6 floor 不大于自变量的最大整数 2 2 3 3 ceil 不小于自变量的最小整数 3 3 2 2 round 四舍五入到最邻近的整数 2 3 2
  • Codeforces D. Prefix-Suffix Palindrome

    Codeforces D Prefix Suffix Palindrome 题解 xff1a 和D1相同 xff0c 区别是找中间的回文串要压缩时间 xff0c 用到了马拉车算法 xff08 算法介绍在下面 xff1a span class
  • codeforces Round680 C. Division 题解

    codeforces Round680 C Division 题解 题目 Oleg s favorite subjects are History and Math and his favorite branch of mathematic
  • Codeforces Round #677 (Div. 3) 题解

    Codeforces Round 677 Div 3 题解 A Boring Apartments 题目 题解 简单签到题 xff0c 直接数 xff0c 小于这个数的 43 10 43 10 43 1 0 代码 span class to
  • 1500*C. Tenzing and Balls (线性DP)

    解析 每次选择两个相同的数 删去他们以及他们之间的所有数 问最多可以删除多少 DP 对于某个位置 i 其前面有多个 j 使得 a i a j 所以使用 f i 来记录前 i 个数能够删除的最大值 include
  • 1400*A. World Football Cup(模拟)

    Problem 19A Codeforces 解析 模拟 记录总得分 净胜球 进球数 坑点 其中注意净胜球是进球数的差 己方进球数 对手进球数 可以为负数 排序即可 include
  • Working routine【Codeforces 706 E】【二维链表】

    Codeforces Round 367 Div 2 E 可以说是一道模拟题了 写了有些时候 可能是太菜了吧 题意 给出一个原始矩阵 之后有Q次操作 我们将两个矩阵交换位置 题目中保证两个矩阵不相交 给出的是两个矩阵的左上方的端点 以及它们
  • python中round函数的一个小坑——奇进偶弃

    gt gt gt round 10 5 按照round的四舍五入 本来应该是11的 但是这里是10 10 gt gt gt round 11 5 整数部分为奇数的时候 又进位了 这里很迷 值得关注一下 12 总结一下 其实就是取靠近的偶数
  • 动态动态规划(DDP)

    1 Problem E Codeforces 一 题目大意 给你一个无向图 第i和i 1条边的权值是w i 问你每个点不在自己原本的点的代价是多少 会有q组询问 表示修改第i条边的权值 二 解题思路 可以观察到 完成这个操作需要每条边经过两
  • Catowice City【Codeforces 1248 F】【BFS】

    Codeforces Round 594 Div 2 F 一开始是听闻有人说这是一道Tarjan好题 然后就点进来做了 但是想来想去 却想了个另类的法子 我们可以看到 如果N个人都要选择的话 那么每个人都只能是审判者 或者是参赛者 所以 我
  • Codeforces Round #367 (Div. 2)【贪心、差分、DP、字典树、二维链表】

    Codeforces Round 367 Div 2 A Beru taxi 就是问 我们知道一个点 从其他点到它的最少花费的时间是多少 include
  • 1096C - Polygon for the Angle-几何-性质

    思路 根 据 几 何 性 质 正 多 边 形 所 有 三 个 点组成的 角 都 是最小角的倍数 然后根据内角公式 可以求出 正多边形 最小角为 多边形内角 n 2 然后 打表发现 180边形最小角为1 最大角 178 所以 只有 179无法
  • Codeforces#808(Div.2)A-D题解

    目录 A Difference Operations B Difference of GCDs C Doremy s IQ D Difference Array A Difference Operations Problem A Codef
  • Codeforces ZeptoLab Code Rush 2015

    Codeforces ZeptoLab Code Rush 2015 比赛链接 http codeforces com contest 526 A King of Thieves time limit per test 1 second m
  • Codeforces Round 739 (Div. 3)

    A Dislike of Threes AC代码 include
  • gym 101505 CTU Open Contest 2016 G Orchard Division

    Problem codeforces com gym 101505 attachments vjudge net contest 187874 problem G Meaning 一个 m m 的网格 长 宽下标 0 m 1 里有 n 个点
  • Codeforces Round #561 (Div. 2)ABC

    三个题 各位大佬别喷我 我很菜 A Silent Classroom There are n students in the first grade of Nlogonia high school The principal wishes
  • Fix a Tree【Codeforces 699 D】【dfs + 树的性质】

    Codeforces Round 363 Div 2 D 题意 有N个点 每个点i都有一个父节点p i 如果 i p i 则是说明i结点是根结点 现在我们给出这样的1 N的p i 这可能是不合法的 问 我们应该最少改变多少个使它变成一棵合法
  • Codeforces Round 915 (Div. 2) A-F(补题&补写法)

    A Constructive Problems 签到 题解 输出max x y t int input for in range t u v map int input split print max u v B Begginer s Ze

随机推荐

  • Linux进程间通信

    1 unix域套接字 域套接字 xff1a 1 只能用于同一设备上不同进程之间的通信 xff1b 2 效率高于网络套接字 域套接字仅仅是复制数据 xff0c 并不走协议栈 xff1b 3 可靠 xff0c 全双工 xff1b 2 IP套接字
  • 什么是API

    1 什么是API API是Application Programming Interface xff08 应用程序接口 xff09 的缩写 是一些预先定义的函数 xff0c 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力
  • FreeRTOS(二)任务基础知识

    一 前后台系统与RTOS 前后台系统 61 死循环 xff08 通常为1个 xff09 43 中断服务程序 xff08 通常为若干个 xff09 应用程序是一个无限循环 xff0c 循环中调用 API 函数完成所需的操作 xff0c 这个大
  • SBUS协议(20200210)

    最近看到很多sbus协议 xff0c 就专门搜集了一些资料学习一下 1 介绍 SBUS是一个接收机串行总线输出 xff0c 通过这根总线 xff0c 可以获得遥控器上所有通道的数据 目前很多模型及无人机电子设备都支持SBUS总线的接入 使用
  • 【openmv专题】串口通信

    这篇文章主要讲述openmv串口通信过程中会出现错位 xff0c 因缓存空间不足带来的串口报错问题 xff0c 直接进入正题 xff1a 串口通信有同步和异步之分 xff0c 而openmv用的是异步通信 xff0c 需要有缓存区 xff0
  • FreeRTOS任务上下文切换与任务状态切换的区别及联系

    FreeRTOS 中的任务上下文切换和任务状态切换是两个不同的概念 1 任务状态切换是指任务从一种状态切换到另一种状态 FreeRTOS 中的任务状态包括就绪态 阻塞态和运行态 当任务从就绪态切换到运行态时 xff0c 任务开始执行 xff
  • XGBOD:用无监督表示学习改进有监督离群点检测

    XGBOD Improving Supervised Outlier Detection with Unsupervised Representation Learning 论文链接 xff1a https www andrew cmu e
  • 小觅S系列相机运行vins-mono(轨迹飘飞解决版)

    小觅S系列相机运行vins mono xff08 轨迹飘飞解决版 xff09 1 SDK驱动2 获得相机标定数据3 下载MYNT EYE VINS Sample4 运行 前期准备 xff1a 安装并成功运行VINS MONO 1 SDK驱动
  • 嵌入式第0部分:嵌入式工程师完全学习指南

    一 什么是嵌入式 xff08 一 xff09 定义 xff1a 传统定义 xff08 狭义嵌入式 xff09 xff1a 嵌入式系统是以应用为中心 xff0c 以计算机技术为基础 xff0c 并且软硬件课裁剪 xff0c 适用于应用系统对功
  • 【SLAM 十四讲】---第七讲、视觉里程计

    第七讲 视觉里程计
  • Vscode配置git

    1 Git介绍和安装 Git是什么 Git是目前世界上最先进的分布式版本控制系统 xff08 没有之一 xff09 简单来说 它是控制项目版本的一个工具 我们可以利用Git进行多人协作和代码备份等工作 下载git xff08 64bit w
  • Xshell连接虚拟机Ubantu失败解决办法(主机和虚拟机能够互ping的前提)

    主机和虚拟机互ping 在主机命令行里输入ipconfig指令 xff0c 查询主机ip地址 xff0c 在虚拟机Ubantu终端里输入ping 主机ip地址 xff0c ping通后 xff0c 按ctrl 43 c停止 在虚拟机Uban
  • windows 11系统安装

    安装前注意事项 1 准备8G或8G以上U盘 xff08 32G以内 xff09 2 安装系统前备份好个人需要数据 xff08 制作U盘会格式化U盘 xff0c U盘内的重要文件也要事先备份好 xff09 3 预装office的务必记住自己激
  • docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at

    一 前言 docker安装完成 xff0c 一般用户没有权限启动docker服务 xff0c 只能通过sudo来通过root用户权限来启动docker xff0c 此时对于一般用户而言 xff0c 需要执行docker ps或者docker
  • Neo4j(七)——创建新数据库(如何在Neo4j中创建新数据库)

    方法一 xff1a 找到neo4j安装目录 xff0c 编辑conf文件夹中的neo4j conf 找到dbms active database 61 xff0c 将下图中的graph db用其他名称替换 xff0c 并解除注释 xff08
  • python VScode使用gitlab简单使用流程

    一 下载安装软件 1 安装好vscode xff0c 如未安装 xff0c 下载并且安装 https code visualstudio com Download 2 安装git windows客户端 https git scm com d
  • keil5工程函数无法跳转到函数定义解决方法

    问题描述 在使用keil查看工程代码时 xff0c 进行函数的跳转 xff0c 跳转不成功并提示以下错误 这是因为在编译工程的时候少勾选了一个选项 xff0c 按下以下方式勾选上然后重新Rebuild一下工程就好了
  • Codeforces D. Prefix-Suffix Palindrome

    Codeforces D Prefix Suffix Palindrome 题解 xff1a 和D1相同 xff0c 区别是找中间的回文串要压缩时间 xff0c 用到了马拉车算法 xff08 算法介绍在下面 xff1a span class
  • codeforces 1326 E.Bombs

    codeforces 1326 E Bombs 题意 xff1a 给定 1 n 1 n 1 n 的排列p q xff0c 将
  • Educational Codeforces Round 84 题解

    Educational Codeforces Round 84 题解 A Sum of Odd Integers 题意 xff1a n n n 是否能表示为 k k k 个不同的正奇