CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) A-D

news2024/12/23 15:06:43

1842A - Tenzing and Tsondu

题意

丁真和珍珠宝可梦对决, 每个宝可梦都有x战力, 假设有两个宝可梦, 其战力分别为a和b(a>b), 战力为a的宝可梦获胜后战力-b, 而战败的宝可梦会消失
最后还有宝可梦的人获胜
问你丁真和珍珠谁赢了

题解

显而易见, 赢下来的宝可梦可以继续打, 输了的就会消失, 所以是比战力值总和

代码

void solve()
{
    cin>>n>>m;
    vector<ll>a(n+1);
    ll u,v;
    u=v=0;
    rep(i,1,n) cin>>a[i],u+=a[i];
    vector<ll>b(m+1);
    rep(i,1,m) cin>>b[i],v+=b[i];
    if(u==v) cout<<"Draw"<<endl;
    else if(u>v)cout<<"Tsondu"<<endl;
    else cout<<"Tenzing"<<endl;
    return;
}

1842B - Tenzing and Books

题意

丁真收到了三堆书, 每堆书有 n n n本, 每本书有固定的知识值 a [ i ] a[i] a[i]
每读一本书就会使得丁真的知识值与这本书的知识值进行或运算
a n s ∣ = a [ i ] ans|=a[i] ans=a[i]
丁真会从书堆的开头第一本开始读
每当丁真不想读下去时, 他会直接放弃一整堆书
丁真想让他的知识值达到ans, 问你这可能吗

题解

因为是或运算, 思路直接来到了位运算
首先, 假设ans的二进制是10011
那么想要让丁真达到ans这个值, 我们需要注意一些点

因为是或运算, 书的知识值中二进制为0是不会对答案造成影响的
若同一个二进制位中, 书的知识值为1而答案为0, 那么就对答案造成了偏差
那么以贪心的思想, 只要不会对答案造成影响的(即 b o o k > > i & 1 book>>i\&1 book>>i&1==1&&ans>>i&1!=0), 丁真都可以读

那么答案显而易见, 对所有能读的书都给读了, 遇到不能读的书就退出书堆, 最后对比答案就可以了

代码

void solve()
{
    cin>>n>>m;
    vector<ll> a(n+1);
    ans=0;  
    rep(i,1,n) cin>>a[i];
    rep(i,1,n)//这段for重复三遍
    {
        ll mk=0;
        for(ll j=0;j<=32;j++)
        {
            cnt=(m>>j)&1;
            ant=(a[i]>>j)&1;
            if((ant&&cnt==0)) 
            {
                mk=1;
                break;
            }
        }
        if(mk) break;
        ans|=a[i];
    }

    rep(i,1,n) cin>>a[i];
    rep(i,1,n)
    {
        ll mk=0;
        for(ll j=0;j<=32;j++)
        {
            cnt=(m>>j)&1;
            ant=(a[i]>>j)&1;
            if(ant&&cnt==0) 
            {
                mk=1;
                break;
            }
        }
        if(mk) break;
        ans|=a[i];
    }

    rep(i,1,n) cin>>a[i];
    rep(i,1,n)
    {
        ll mk=0;
        for(ll j=0;j<=32;j++)
        {
            cnt=(m>>j)&1;
            ant=(a[i]>>j)&1;
            if(ant&&cnt==0) 
            {
                mk=1;
                break;
            }
        }
        if(mk) break;
        ans|=a[i];
    }
    
    if(ans==m) yes
    else no

    return;
}

解法2

在这里插入图片描述
源代码出自
用&的方式省去了位运算枚举
很妙

1842C - Tenzing and Balls

题意

n个球排成一列, 每个球都有一个特定的颜色值
丁真可以选择两个颜色值一样的球, 删除这这两个球之间的所有球(包括这两个球)这个操作可以进行无限次
问你最多能删多少个球

题解

这题一开始以为是双指针假了, 其实是dp
使用两个数组进行动态规划
d数组用于存储这个元素的最优解, 而f数组用于存储当前下标的最优解(即答案)
则动态转移方程(设当前元素为x)

f[i]=min(f[i-1]+1,d[x]);//选择该元素的最优解(若没出现过则为INF), 或者不选(答案+1)
d[x]=min(f[i-1],d[x]);//该元素的最优解=当前局部最优解和元素最优解取min

最后答案为n-f[n]

代码

void solve()
{
    cin>>n;
    vector<ll>a(n+1),f(a),d(n+1,INF);
    rep(i,1,n)
        cin>>a[i];

    rep(i,1,n)
    {
        ll x=a[i];
        f[i]=min(f[i-1]+1,d[x]);
        d[x]=min(f[i-1],d[x]);
    }
    cout<<n-f[n]<<endl;
    return;
}

1842D - Tenzing and His Animal Friends

题意

这题题面很抽象, 我看了至少半小时才看懂(也可能是因为英语太菜了, 嗯造机翻)
最后看了公告才看懂的
8_P0@D4I_UI_FI6.png
丁真和他的n个动物朋友玩耍, 丁真非常喜欢他的1号朋友, 所以每次都要和1号朋友玩, 丁真不喜欢他的n号朋友, 所以丁真不和n号朋友玩
现在给出m个限制, 每个限制有u v w三个参数, 代表u号朋友和v号朋友不在一起的时间不超过w
(u和v同时都在和同时不在的时间不会被此条限制所影响)
丁真想尽可能用更多的时间和动物朋友们玩耍
请输出丁真最多能和动物朋友玩耍的时间和玩耍的次数
用二进制状态表示丁真和哪些动物朋友们玩耍, 并在同一行那一次输出玩耍了多久

题解

首先1和n一定要在一个连通块中, 不一定需要1和n在一条边上但一定要在一个连通块中, 若1和n不在一个连通块中, 我们就可以一直构造11111…11110这样的玩法持续无限次, 因为1和n并不相连, 所以不存在只允许出1而不出现n的次数限制 (注意题目条件n不能出现, 1必须出现) , 因此可以一直构造这样的玩法
相应的, 从1到n的最短路, 也就是此题中丁真最多能和动物朋友有玩的时间了
(这题的难度就在这里了, 当时想破了脑袋也没想出这题是个最短路)
然后将数据分为两类, 一类是可以和1一起玩的, 另一类是不能和1一起玩的
按照贪心的思想, 每次都将能和1一起有玩的所有动物朋友都加进去, 而游玩时间就是其中能和1玩的动物朋友中, 能玩时间的最小值 (也就是他到n的最短路/或者1到n的最短路 这里取最小值 再减去上一个次游玩的时间, 原因是有上一次游玩时间和这一次游玩时间有交集部分 而交集部分正好是上一次游玩的时间)
按照这样下去, 每次游玩都必定淘汰至少一个

代码

void solve()
{
    cin>>n>>m;
    rep(i,1,n) 
        rep(j,1,n)
        {
            if(i!=j) cnt=llINF;
            else cnt=0;
            a[i][j]=cnt;
        }
        
    rep(i,1,m)
    {
        ll u,v,w;
        cin>>u>>v>>w;
        a[u][v]=a[v][u]=w;
    }

    rep(k,1,n)
        rep(i,1,n)
            rep(j,1,n)
            a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
    if(a[1][n]==llINF)
    {
        cout<<"inf"<<endl;
        return;
    }

    vector<ll>d(n+1),dist;

    cnt=a[1][n];
    rep(i,1,n) 
    {
        d[i]=min(cnt,a[i][n]);
        dist.push_back(d[i]);
    }

    sort(dist.begin(),dist.end());
    dist.erase(unique(dist.begin(),dist.end()),dist.end());
    cout<<cnt<<' '<<dist.size()-1<<endl;
    cnt=0;
    repr(i,0,dist.size())
    {
        if(!dist[i]) continue;
        rep(j,1,n) cout<<(d[j]>=dist[i]);
        cout<<' '<<dist[i]-cnt<<endl;
        cnt=dist[i];
    }

    
    return;
}

这里用的Floyd求最短路, 当然你用dijkstra也是可以的

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

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

相关文章

GcWord 6.1.4 Crack -GrapeCity Documents for Word

用于 Microsoft Word 文档的 .NET 6 API 通过代码完全控制您的 Word 文档&#xff0c;而不依赖于 Microsoft Word。 生成、加载、编辑和保存 Word 文档 基于 Microsoft Office API 的功能丰富的对象模型 从头开始或使用生成报告 报告模板 兼容多种平台&#xff0c;例如 Window…

vue-cli2 碎碎念念

vue create 和 vue init webpack 的区别&#xff1a; https://blog.csdn.net/qq_45955152/article/details/123506724 https://blog.csdn.net/qq_22182989/article/details/103611934 区别1&#xff1a; 区别2&#xff1a; 实践&#xff1a;

CadLib 4.0.2023.31601 net for Windows Crack

CadLib 4.0 for Windows&#xff1a;在 C# VB .NET 中读取、写入和显示 AutoCAD DWG 和 DXF 文件 CadLib 4.0 for Windows仅在Windows上运行&#xff0c;并且基于.NET 4.x。 CadLib 4.0读取、写入和显示 C#、VB.NET 或任何其他 .NET 语言的 AutoCAD™ DWG 和 DXF 文件。下载试…

Selenium教程__浏览器窗口大小(6)

本文将介绍如何使用Selenium来获取和设置浏览器窗口的大小&#xff0c;以及一些实际应用场景。 学习本文内容将能够轻松地控制浏览器窗口的大小&#xff0c;从而更好地适应不同的屏幕分辨率和设备&#xff0c;并确保网页在各种窗口大小下都能够良好地展示。 import time fro…

机器学习(二)逻辑回归

Logistic Regression 虽然被称为回归&#xff0c;但其实际上是分类模型&#xff0c;并常用于二分类。 Logistic 回归的本质是&#xff1a;假设数据服从这个分布&#xff0c;然后使用极大似然估计做参数的估计。 逻辑回归API介绍 sklearn.linear_model.LogisticRegression(sol…

配置apache只允许通过域名通过ssl访问

配置好IP&#xff0c;配置好bind解析 Yum安装相关软件包 进入证书目录 先用date –s 设置正确的系统时间。 创建私钥 创建证书 把私钥转换成不需要密码的 把私钥移动到私钥目录 编辑/etc/httpd/conf.d/ssl.conf 设置根目录&#xff0c;主机名。 限制80端口访问。在最后插入 设…

蜘蛛池包收录 - 百度代发排名

蜘蛛池包收录 - 百度代发排名 通话时长越长点击扣费越多吗&#xff1f; 相信这个是很多推 OCPC 用户都关注的问题&#xff0c;因为有时候接了一个电话&#xff0c;跟客户通了十几分钟&#xff0c;挂断之后发现竟然点一下扣了一百多&#xff0c;甚至二百多&#xff0c;这是什么…

Elasticsearch 分组分页排序查询

背景&#xff1a;elasticsearch聚合之后进行分页是非常常见的操作 实现思路&#xff1a; 基于es聚合函数bucket_sort、terms和指标聚合cardinality实现 实现方式&#xff1a;(以会员编码分组分页展示会员最近一条时间记录排序为例)&#xff1a; 1、查询实现 // 桶排序聚合Bu…

【数据库七】搭建MySQL主从复制和读写分离详解

详解搭建搭建MySQL主从复制和读写分离 1.案例实施&#xff1a;搭建MySQL主从复制1.1 主节点数据库&#xff08;CentOS 7-5&#xff09;1.2 从节点数据库&#xff08;CentOS 7-6&#xff09;1.3 从节点数据库&#xff08;CentOS 7-7&#xff09;1.4 验证MySQL主从复制 2.案例实施…

Scala的foldLeft与foldRight详解

foldLeft与foldRight是特质TraversableOnce定义的高阶函数&#xff0c;直译过来为向左折叠和向右折叠。具体实现如下摘出的代码所示&#xff1a; trait TraversableOnce[A] extends Any with GenTraversableOnce[A] {deprecated("Use foldLeft instead of /:", &quo…

lesson7-1 Zigbee协议栈的使用

目录 协议栈的使用 协议栈的安装和协议栈工程创建 协议栈工程配置 选项卡选择 用户代码编写注意 信道选择及PANID分配 协议栈的使用 协议栈的安装和协议栈工程创建 首先进行协议栈的安装 如何创建自己的协议栈工程&#xff1a; &#xff08;1&#xff09;先把整个协议…

ansible实训-Day1(Liunx基础问题总结及ansible安装环境前置部署)

一、前言 该篇是对本学期Ansible实训第一天内容的原理性总结&#xff0c;主要包括Liunx相关问题等基础性的问题总结以及ansible安装环境的前置部署。 二、Liunx是什么 Linux是一种自由和开放源代码的Unix操作系统&#xff0c;最初由芬兰人Linus Torvalds于1991年创建。与其他许…

hot20-旋转图像

leetcode原题链接&#xff1a;旋转图像 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&am…

OpenCV 学习笔记(C++)(1.4W字)

一切图像皆Mat OpenCV中图像对象的创建与复制 Mat基本结构 Mat对象数据组成&#xff1a;头部和数据部分&#xff0c;头部存储图像的属性&#xff08;大小、宽高、图像类型&#xff1a;浮点数类型、字节类型、16位整型、32位整型、双精度浮点型&#xff0c;通道数量和获取途径…

【半监督图像分类 2022 CVPR 】Semi-ViT

【半监督图像分类 2022 CVPR 】Semi-ViT 论文题目&#xff1a;Semi-supervised Vision Transformers at Scale 中文题目&#xff1a; 论文链接&#xff1a;https://arxiv.org/abs/2208.05688 论文代码&#xff1a;https://github.com/amazon-science/semi-vit 发表时间&#xf…

数据结构07:查找[C++][平衡二叉排序树AVL]

图源&#xff1a;文心一言 考研笔记整理1w字&#xff0c;小白友好、代码可跑&#xff0c;请小伙伴放心食用~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、写BUG、画导图、画配图~&#x1f9e9;&#x1f9e9; 参考用书&#xff1a;王道考研《2024年 数据结构考研复习…

Linux 超级漂亮的 Shell

先来一张美图 zsh 介绍 1 Linux shell Linux/Unix 提供了很多种 Shell&#xff0c;为毛要这么多 Shell&#xff1f; 难道用来炒着吃么&#xff1f;那我问你&#xff0c;你同类型的衣服怎么有那么多件&#xff1f;花色&#xff0c;质地还不一样。写程序比买衣服复杂多了&#xf…

在vite+vue3中使用less

目录标题 一、首先&#xff0c;安装插件二、在 vite.config.js中配置三、最后在模版里声明css类型 一、首先&#xff0c;安装插件 npm install less npm install less-loader二、在 vite.config.js中配置 css: {preprocessorOptions: {less: {math: "always", // 括…

VS里拉取时候,变成变基中,变成分离分支状态,git 头指针分离于 baf67ff

分离头指针&#xff08;detached HEAD&#xff09; 通常&#xff0c;我们工作在某一个分支上&#xff0c;比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的&#xff0c;每做一次提交&#xff0c;这两个指针就会一起向前挪一步。但是在某种情况下&#xff08;例…

docker搭建达梦数据库

搭建达梦数据库 搭建达梦数据库 拉取镜像 # 拉取镜像 docker pull registry.cn-shanghai.aliyuncs.com/techerwang/dbhub:jem_dm8 或去官网下载 https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html我是选择了去官网下载 然后上传到linux服务器 do…