Codeforces Round 941 (Div. 2)(A-D)

news2024/11/28 6:01:21

A. Card Exchange(思维

Problem - A - Codeforces

题目大意

        给定n张牌,每次选k张相同的牌,把他们变成k-1张任意的牌,求最后手中最少能有几张牌。

思路

        直接判断这n张牌当中有没有k张一样的牌,如果有就一定能变成最后只剩k-1张牌。如果没有k张一模一样的牌,说明一次变化都做不了,最后只能有n张牌。

#include<bits/stdc++.h>
using ll=long long;
const int N=1e6+10;
const int mod=998244353;
int a[N];
std::map<int,int> mp;
void solve()
{
    mp.clear();
    int n,k;
    std::cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        std::cin>>a[i];
        mp[a[i]]++;
    }
    int flag=0;
    for(auto i:mp)
    {
        if(i.second>=k)
        {
            flag=1;
            break;
        }
    }
    if(flag) std::cout<<k-1<<'\n';
    else std::cout<<n<<'\n';
}
signed main()
{
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    int t=1;
    std::cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

B. Rectangle Filling(思维

Problem - B - Codeforces 

题目大意

        给定一个n*m的矩形,每次可以选择颜色相同的两个点(x1,y1),(x2,y2)把这俩点之间的所有点都染成这个颜色。试判断输入的矩形能否被染成一种颜色。

思路

        这题我想了好久。。。先想着暴力100次找到最靠右下的与(1,1)颜色相同的点,然后染色,但是不止左上右下可以染色,左下右上也能染色,总之都是错的思路。。。

        然后一直感觉四个顶点是最特殊的点,因为顶点后面就没点了,如果顶点能同色就稳了,如果不能就no。其实想到了四个顶点后面就好想了,先判断左上右下和左下右上这两种情况的点的颜色是否相同。相同直接输出yes啊,不相同再分情况讨论。左上和右上相同,那么只要最后一行中有与左上颜色相同的点即可。以此类推,四种情况。

#include<bits/stdc++.h>
using ll=long long;
const int N=500+10;
const int mod=998244353;
int a[N];
char g[N][N];
std::map<char,int> mp;
void solve()
{
    int n,m;
    std::cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            std::cin>>g[i][j];
        }
    }
    if(g[1][1]==g[n][m]||g[1][m]==g[n][1])
    {
        std::cout<<"YES"<<'\n';
        return ;
    }
    if(n==1||m==1)
    {
        std::cout<<"NO"<<'\n';
        return ;
    }
    //判断四个点
    if(g[1][1]==g[1][m])//第一行相等
    {
        for(int i=1;i<=m;i++)
        {
            if(g[n][i]==g[1][1])
            {
                std::cout<<"YES"<<'\n';
                return ;
            }
        }
    }
    if(g[n][1]==g[n][m]){//最后一行相等
        for(int i=1;i<=m;i++)
        {
            if(g[n][1]==g[1][i])
            {
                std::cout<<"YES"<<'\n';
                return ;
            }
        }
    }
    if(g[1][m]==g[n][m])//最后一列相等
    {
        for(int i=1;i<=n;i++)
        {
            if(g[i][1]==g[1][m])
            {
                std::cout<<"YES"<<'\n';
                return ;
            }
        }
    }
    if(g[1][1]==g[n][1]){//第一列相等
        for(int i=1;i<=n;i++)
        {
            if(g[i][m]==g[1][1])
            {
                std::cout<<"YES"<<'\n';
                return ;
            }
        }
    }
    std::cout<<"NO"<<'\n';
}
signed main()
{
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);
    int t=1;
    std::cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

C. Everything Nim(思维

Problem - C - Codeforces 

题目大意: 

        a和b玩游戏,有n堆石子,每次拿走每堆石子中的k个,最后一个拿不了的就输,如果都以最优策略玩游戏输出谁会赢。

思路

        当时一看这不是一眼博弈论最板子的题吗,我还在想cf怎么会有这么板的题。跑了遍样例发现果然不是我想的那样,最后去群里问发现是读错题了。。。每堆都要拿走k个啊。。。

        对石子堆去重排序,如果有1234这种连续数的情况,则alice和bob每次都只能取1,如果全部数是12345-》1234(Alice拿完)-》123(bob拿完)-》12(Alice拿完)-》1(bob拿完),

如果是奇数则alice赢,偶数bob赢。

        那对于12355这种情况-》1244(Alice拿完)-》133(bob拿完)-》22(alice)拿完-》bob赢,前面是奇数个则轮到bob时能选择怎么操作,如果最后的数字相同bob直接拿完就赢了,如果不相同比如246,都拿一个,135则a就只能被迫拿一个了,24bob再拿一个,13alice又只能被迫拿一个,因此bob必赢。

#include<bits/stdc++.h>
using ll=long long;
const int N=2e5+10;
const int mod=998244353;
int a[N];

void solve()
{
    int n;
    std::cin>>n;
    int k=0;
    std::map<int,int> mp;
    for(int i=1;i<=n;i++)
    {
        int x;
        std::cin>>x;
        if(mp[x]) continue;
        a[++k]=x;
        mp[x]++;
    }
    std::sort(a+1,a+1+k);
//    for(int i=1;i<=k;i++)
//    {
//        std::cout<<a[i]<<" ";
//    }
    int cnt=0;
    for(int i=1;i<=k;i++)
    {
        if(a[i]==a[i-1]+1) cnt++;//有多少个连续的12345
        else break;
    }
    if(cnt==k)
    {
        if(k%2==1) std::cout<<"Alice"<<'\n';
        else std::cout<<"Bob"<<'\n';

    }else if(cnt%2==1){//123 33
        std::cout<<"Bob"<<'\n';

    }else std::cout<<"Alice"<<'\n';
}
signed main()
{
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);

    int t=1;
    std::cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

D. Missing Subsequence Sum(构造

Problem - D - Codeforces 

题目大意

        给定n和k,输出一个序列,对任意i∈[1,k)∪(k,N],这个序列中存在子序列的和为i

思路

#include<bits/stdc++.h>
using ll=long long;
const int N=1e6+10;
const int mod=998244353;
int f[N];

void solve()
{
    int n,k;
    std::cin>>n>>k;
    std::vector<int> ans;
    int q=1;
    while(q<=N)
    {
        ans.push_back(q);
        q*=2;
    }
    int s=0,v=0;
    for(int i=0;i<ans.size();i++)
    {
        s+=ans[i];
        if(s>=k)
        {
            v=ans[i];
            ans.erase(ans.begin()+i);
            break;
        }
    }
    ans.push_back(k-v);
    ans.push_back(k+1+v);
    ans.push_back(k+1);
    std::cout<<ans.size()<<'\n';
    for(auto i:ans)
    {
        std::cout<<i<<" ";
    }
    std::cout<<'\n';
}
signed main()
{
    std::ios::sync_with_stdio(0);
    std::cin.tie(0);

    int t=1;
    std::cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}

 

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

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

相关文章

Python快速入门1数据类型(需要具有编程基础)

数据类型&#xff1a; Python 3.0版本中常见的数据类型有六种&#xff1a; 不可变数据类型可变数据类型Number&#xff08;数字&#xff09;List&#xff08;列表&#xff09;String&#xff08;字符串&#xff09;Dictionary&#xff08;字典&#xff09;Tuple&#xff08;元…

NLP transformers - 文本分类

Text classification 文章目录 Text classification加载 IMDb 数据集Preprocess 预处理EvaluateTrainInference 本文翻译自&#xff1a;Text classification https://huggingface.co/docs/transformers/tasks/sequence_classification notebook : https://colab.research.googl…

明日周刊-第8期

现在露营的人越来越多了&#xff0c;都是带着帐篷或者遮阳篷聚在一起喝喝茶聊聊天&#xff0c;这是一种很好的放松方式。最近我养了一只金毛&#xff0c;目前两个月大&#xff0c;非常可爱。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、人工智能领域 本周&#xff…

Java面试八股之main方法的参数中字符串数组的第一个元素是什么

Java main方法的参数中字符串数组的第一个元素是什么 Java main 方法的参数中字符串数组的第一个参数通常是指命令行启动Java应用程序时传递给该程序的第一个命令行参数。当您在命令行中执行一个Java应用程序&#xff0c;可以跟随类名后面附加一系列参数&#xff0c;这些参数将…

Debian 系统设置SSH 连接时长

问题现象&#xff1a; 通过finalshell工具连接Debian系统远程操作时&#xff0c;总是一下断开一下断开&#xff0c;要反复重新连接 &#xff0c;烦人&#xff01; 解决办法&#xff1a; 找到ssh安装目录下的配置文件&#xff1a;sshd_config vi sshd_config &#xff1a; 找到…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

Android --- 常见UI组件

TextView 文本视图 设置字体大小&#xff1a;android:textSize"20sp" 用sp 设置颜色&#xff1a;android:textColor"#00ffff" 设置倍距(行距)&#xff1a;android:lineSpacingMultiplier"2" 设置具体行距&#xff1a;android:lineSpacingExtra&q…

闲话 ASP.NET Core 数据校验(二):FluentValidation 基本用法

前言 除了使用 ASP.NET Core 内置框架来校验数据&#xff0c;事实上&#xff0c;通过很多第三方框架校验数据&#xff0c;更具优势。 比如 FluentValidation&#xff0c;FluentValidation 是第三方的数据校验框架&#xff0c;具有许多优势&#xff0c;是开发人员首选的数据校验…

kyuubi、sparksql部署实战与连接

一、下载spark和kyuubi的软件包 spark官网下载 https://spark.apache.org/downloads.html kyuubi官网下载 https://www.apache.org/dyn/closer.lua/kyuubi/kyuubi-1.9.0/apache-kyuubi-1.9.0-bin.tgz 二、部署spark 1、spark配置spark-env.sh YARN_CONF_DIR/opt/cloudera…

大象机器人开源协作机械臂myCobot 630 全面升级!

1. 开篇概述 在快速发展的机器人技术领域中&#xff0c;Elephant Robotics的myCobot 600已经证明了其在教育、科研和轻工业领域的显著适用性。作为一款具备六自由度的机械臂&#xff0c;myCobot 600以其600mm的工作半径和2kg的末端负载能力&#xff0c;满足了多样化的操作需求。…

paddleocr C++生成dll

目录 编译完成后修改内容: 新建ppocr.h头文件 注释掉main.cpp内全部内容&#xff0c;将下面内容替换进去。ppocr.h需要再环境配置中包含进去头文件 然后更改配置信息&#xff0c;将exe换成dll 随后右击重新编译会在根目录生成dll,lib文件。 注意这些dll一个也不能少。生成…

HTML5(2)

目录 一.列表、表格、表单 1.列表标签 2.表格 4.无语义的布局标签 5.字符实体 6.综合案例--1 7.综合案例--表单 一.列表、表格、表单 1.列表标签 1.1 无序列表 1.2 有序列表 1.3 定义列表 定义列表一般用于网页底部的帮助中心 2.表格 2.1 2.2 表格结构标签 shiftaltf 格…

计算机网络之传输层TCP\UDP协议

UDP协议 用户数据报协议UDP概述 UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能 UDP的主要特点&#xff1a; UDP是无连接的&#xff0c;减少开销和发送数据之前的时延 UDP使用最大努力交付&#xff0c;即不保证可靠交付&#xff0c;可靠性由U…

《Fundamentals of Power Electronics》——全桥型隔离降压转换器

以下是关于全桥型隔离降压转换器的相关知识点&#xff1a; 全桥变压器隔离型降压转换器如下图所示。 上图展示了一个具有二次侧绕组中心抽头的版本&#xff0c;该电路常用于产生低输出电压。二次侧绕组的上下两个绕组可以看作是两个单独的绕组&#xff0c;因此可以看成是具有变…

#const成员

基于写的日期类的实现&#xff0c;去分析const成员的问题。 需要用到下面的两个函数。 这个时候我们去构建一个const Date,如下&#xff0c;这是不和法的&#xff0c;为什么呢&#xff1f; 其实这里涉及一个权限放大的问题&#xff0c;之前就说了&#xff0c;权限可以缩小&…

项目部署总结

1、安装jdk 第一步&#xff1a;上传jdk压缩安装包到服务器 第二步&#xff1a;将压缩安装包解压 tar -xvf jdk-8uXXX-linux-x64.tar.gz 第三步&#xff1a;配置环境变量 编辑/etc/profile文件&#xff0c;在文件末尾添加以下内容&#xff1a; export JAVA_HOME/path/to/j…

应急学院物联网应急安全产教融合基地解决方案

第一章 背景 1.1物联网应急安全产教融合发展概况 物联网应急安全产教融合发展是当前社会发展的重要趋势。随着物联网技术的广泛应用&#xff0c;应急安全领域对人才的需求日益迫切。因此&#xff0c;产教融合成为培养高素质、专业化人才的关键途径。在这一背景下&#xff0c;…

Kotlin泛型之 循环引用泛型(A的泛型是B的子类,B的泛型是A的子类)

IDE(编辑器)报错 循环引用泛型是我起的名字&#xff0c;不知道官方的名字是什么。这个问题是我在定义Android 的MVP时提出来的。具体是什么样的呢&#xff1f;我们看一下我的基础的MVP定义&#xff1a; interface IPresenter<V> { fun getView(): V }interface IVie…

云原生Kubernetes: K8S 1.29版本 部署Sonarqube

一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K8S node节点1.29.0192.168.204.10已部署Kuboard &#xff08;2&#xff09;master节点查看集群 1&…

【已解决】Python Selenium chromedriver Pycharm闪退的问题

概要 根据不同的业务场景需求&#xff0c;有时我们难免会使用程序来打开浏览器进行访问。本文在pycharm中使用selenium打开chromedriver出现闪退问题&#xff0c;根据不断尝试&#xff0c;最终找到的问题根本是版本问题。 代码如下 # (1) 导入selenium from selenium import …