Codeforces Round 1004 (Div. 2)(A-E)
题目链接:Dashboard - Codeforces Round 1004 (Div. 2) - Codeforces
A. Adjacent Digit Sums
思路
只有两种情况:n+1之后没有进位,y-x=1。n+1之后进位(y-x-1)%9==0。
代码
void solve(){int x,y;cin>>x>>y;if(y-x==1){cout<<"YES\n";return;}int t=x-y+1;if(t>=0&&t%9==0){cout<<"YES\n";return;}cout<<"NO\n";
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
B. Two Large Bags
思路
设了个1e5没算时间复杂度T了一发。。。。
根据题意的操作,n个x我们可以留下2个分别到两个袋子,n-2个x变成(x+1),一直往下推直到有一个数只有一个那么就不可能得到两个完全相同的袋子,否则则会得到两个相同的袋子
代码
void solve(){int n;cin>>n;vi a(n+10);vi mp(10001,0);for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]++;}for(int i=1;i<=10000;i++){if(mp[i]>1){mp[i+1]+=(mp[i]-2);}if(mp[i]==1){cout<<"NO\n";return;}}cout<<"YES\n";
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
C. Devyatkino
思路
原来直接暴力就可以了,,,,,
这题是有一定的规律的,首先出现7答案为0,其他我们发现答案最大是7,只要一直加999...,让最高位从0变成7就行对于所有数(题目给定范围n>=10)都成立,剩下的情况我们对每位数变成7要从两个方面考虑,那就是个位的数和其他,
对于个位数变成7,我们只需要一直加9就可将其变为7
对于其他位上的数为x,如果6>=x>=0,那么我们就能加99...使其进位到7,这还与这位数之后的数的大小有关
如果是x=8,例如8002,我们要先将2给消掉加两个9999,变成28000,再加9999变成37999即可
对于x=9我们发现无论怎么操作其结果是>7的
代码
暴力代码(我求求了建议下次把这个给卡掉哈)
bool check(int x){while(x){if(x%10==7) return true;x/=10;}return false;
}
void solve(){int n;cin>>n;int cnt=10;for(int i=1;i<=10;i++){int d=pow(10,i);d--;int x=n;int t=0;while(!check(x)){t++;x+=d;}cnt=min(cnt,t);}cout<<cnt<<"\n";
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
代码2
#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define int long long
#define ull unsigned long long
#define bit __builtin_popcount
#define lowbit(x) ((x)&-(x))
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;void solve(){string s;cin>>s;int n=s.size();int ans=7;auto bol=[&](int st)->int{int x=0;for(int i=st+1;i<n;i++){x*=10;x+=(s[i]-'0');}return x;};for(int i=0;i<n;i++){if(s[i]=='7'){ans=0;}}if(s[n-1]=='8') ans=min(ans,1ll);if(s[n-1]=='9') ans=min(ans,2ll);if(s[n-1]=='0') ans=min(ans,3ll);if(s[n-1]=='1') ans=min(ans,4ll);if(s[n-1]=='2') ans=min(ans,5ll);if(s[n-1]=='3') ans=min(ans,6ll);if(s[n-1]=='4') ans=min(ans,7ll);if(s[n-1]=='5') ans=min(ans,8ll);for(int i=0;i<n-1;i++){if(s[i]<='6'&&s[i]>='0'){int t=bol(i);if(t>=('7'-s[i])){ans=min(ans,('7'-s[i])+0ll);}else{ans=min(ans,('7'-s[i])+1ll);}}if(s[i]=='8'){ans=min(ans,bol(i)+1ll);}}cout<<ans<<"\n";
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
D. Object Identification
思路
交互题练的还是少了,赛时没做出来
可以发现如果查询结果出现0那么就一定是A,那么怎么询问能够得到这一结果,因为是有向图,我们只需要找到一个不在a中出现的数x,(x,*)查询如果结果是0则A,否则B。如果a是全排列,即所有数都在a中出现,如果是A的话最多有n条边,那么查询出的结果一定是 <n-1 的,那么我们选择查询(1,n)如果结果 >=n-1 则是B,否则是A
总而言之:
如果a不是全排列,查询(x,*)(其中x是不在a中出现的数,*是除x之外[1,n]的所有数),如果结果是0则是A,否则B
如果a是全排列,查询(1,n)如果结果>=n-1则是B,否则是A
代码
#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define int long long
#define ull unsigned long long
#define bit __builtin_popcount
#define lowbit(x) ((x)&-(x))
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;int query(int a,int b){cout<<"? "<<a<<" "<<b<<endl;int res;cin>>res;return res;
}void solve(){int n;cin>>n;vi a(n+1);vb b(n+1);for(int i=1;i<=n;i++){cin>>a[i];b[a[i]]=true;}for(int i=1;i<=n;i++){if(b[i]==false){int t=query(i,i==1?2:1);if(t==0){cout<<"! A"<<endl;}else{cout<<"! B"<<endl;}return;}}int x,y;for(int i=1;i<=n;i++){if(a[i]==1) x=i;if(a[i]==n) y=i;}int t1=query(x,y);int t2=query(y,x);if(t1!=t2){cout<<"! A"<<endl;return;}if(t1>=n-1){cout<<"! B"<<endl;}else{cout<<"! A"<<endl;}
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
E. White Magic
思路
我们可以发现的结论:没有0的序列一定成立,有两个0的序列一定不成立
那么答案显然是n-cnt0+1或n-cnt0,(cnt0是0的个数)
关于是否能够将一个0添加进去,我们只需要看最左边的0加进去是否成立即可,因为右边的0成立的话,左边的0一定是成立的
代码
#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define int long long
#define ull unsigned long long
#define bit __builtin_popcount
#define lowbit(x) ((x)&-(x))
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;void solve(){int n;cin>>n;vi a(n+10);int cnt0=0;map<int,int> mp;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]==0) cnt0++;mp[a[i]]++;}if(mp[0]){mp[0]=1;}else{cout<<n<<"\n";return;}int mex=0;while(mp[mex]) mex++;int mi=inf;for(int i=1;i<=n;i++){if(a[i]==0&&!mp[a[i]]) continue;mp[a[i]]--;if(!mp[a[i]]) mex=min(mex,a[i]);mi=min(mi,a[i]);if(mi<mex){cout<<n-cnt0<<"\n";return;}}cout<<n-cnt0+1<<"\n";
}
signed main() {vcoistntint _=1;cin>>_;while(_--) solve();return 0;
}
相关文章:
Codeforces Round 1004 (Div. 2)(A-E)
题目链接:Dashboard - Codeforces Round 1004 (Div. 2) - Codeforces A. Adjacent Digit Sums 思路 只有两种情况:n1之后没有进位,y-x1。n1之后进位(y-x-1)%90。 代码 void solve(){int x,y;cin>>x>>y;if(y-x1){cout<<…...

pnpm的使用
pnpm的使用 1.安装和使用2.统一包管理工具下载依赖 1.安装和使用 pnpm:performant npm ,意味“高性能的npm”。 pnpm由npm/yarn衍生而来,解决了npm/yarn内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为“最先进的包管理工具”。 pnpm安装指令: npm i -g p…...

vscode调试redis
系统:ubuntu redis:redis-6.0.3 1.在vs中安装c/c编译插件 2.用vscode打开redis-6.0.3 3.在菜单中找到run->Add Configuration… 4.会在目录中生成一个./vscode目录,里面包含launch.json,修改launch.json中的program:${workspaceFolder}…...
Windows逆向工程入门之汇编指令格式与操作数类型
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 一、汇编指令格式基础 二、操作数类型详解 1. 立即数(Immediate) 2. 寄存器操作数(Register) 3. 内存操作数(Memory&#…...
亚远景-ASPICE 4.0与敏捷开发:如何实现高效协同
ASPICE 4.0与敏捷开发的结合是汽车软件开发领域的重要趋势。通过合理融合,可以实现高效协同,提升软件开发的质量和效率。以下是实现高效协同的关键要点: 1. 理解ASPICE 4.0与敏捷开发的互补性 ASPICE 4.0强调软件开发过程的规范性、可追溯性…...

pptx文档提取信息
目录 一、前言二、python-pptx提取核心代码三、LibreOffice 转换pdf再提取的核心代码一、前言 pptx文档提取解析常用的库。 如果只需要解析 .pptx 的文本、表格、图片,推荐使用 python-pptx(开源,轻量级)。 如果需要高性能、支持 .ppt、动画、格式转换,推荐 Aspose.Slid…...
蓝桥杯篇---超声波距离测量频率测量
文章目录 简介第一部分:超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分:频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...

ML.Net二元分类
ML.Net二元分类 文章目录 ML.Net二元分类前言项目的创建机器学习模型的创建添加模型选择方案训练环境的选择训练数据的添加训练数据的选择训练数据的格式要预测列的选择模型评估模型的使用总结前言 ML.NET是由Microsoft为.NET开发者平台创建的免费、开源、跨平台的机器学习…...

vite让每个scss文件自动导入某段内容
写了如下一个scss函数,希望自动导入到每个scss文件里面 vite.config.ts里面如下配置 import fs from fsconst filePath resolve(__dirname, ./src/assets/css/index.scss);const Minxcss fs.readFileSync(filePath, utf8); css: {preprocessorOptions: {scss: {…...

分享一个使用的音频裁剪chrome扩展-Ringtone Maker
一、插件简介 铃声制作器是一个简单易用的 Chrome 扩展,专门用于制作手机铃声。它支持裁剪音频文件的特定片段,并将其下载为 WAV 格式,方便我们在手机上使用。无论是想从一段长音频中截取精彩部分作为铃声,还是对现有的音频进行个…...

基于Python的Optimal Interpolation (OI) 方法实现
前言 Optimal Interpolation (OI) 方法概述与实现 Optimal Interpolation (OI) 是一种广泛应用于气象学、海洋学等领域的空间数据插值方法。该方法通过结合观测数据与模型预测数据,最小化误差方差,从而实现对空间数据的最优插值。以下是OI方法的一般步骤…...

初学 mybatis
前言 回顾之前 不使用 mybatis 框架,我们是怎么通过Java 操作数据库的 "jdbc" 前提:使用maven 构建的项目 1 添加 关于jdbc 的依赖,以及辅助操作数据库的 commons-dubli jar包 截取 前后端项目 2 添加配置文件里面内容有&…...

机器学习:k均值
所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com),欢迎查看。 在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&…...

保姆级GitHub大文件(100mb-2gb)上传教程
GLF(Git Large File Storage)安装使用 使用GitHub desktop上传大于100mb的文件时报错 The following files are over 100MB. lf you commit these files, you will no longer beable to push this repository to GitHub.com.term.rarWe recommend you a…...

1.【BUUCTF】[SUCTF 2019]EasyWeb
进入题目页面如下 给出源码开始代码审计 <?php // 定义一个名为 get_the_flag 的函数,该函数主要处理文件上传逻辑 function get_the_flag(){// 构造用户上传文件的目录,目录名是 "upload/tmp_" 加上客户端 IP 地址的 MD5 哈希值$userdir…...
CloudberryDB(七)二级索引
在CloudberryDB中,二级索引的概念与PostgreSQL中的类似。但是,由于分布式特性,创建和使用二级索引需要考虑一些额外的因素。以下是关于二级索引的一些要点: 1. **创建索引**:在Greenplum中,可以使用CREATE…...

P1878 舞蹈课(详解)c++
题目链接:P1878 舞蹈课 - 洛谷 | 计算机科学教育新生态 1.题目解析 1:我们可以发现任意两个相邻的都是异性,所以他们的舞蹈技术差值我们都要考虑,4和2的差值是2,2和4的差值是2,4和3的差值是1,根…...

何须付费免费它不香吗
聊一聊 又是一年开学季。 开学了发一些应时期的小软件。 今天给大家分享一款学校班级课程表工具。 这款工具可以投放在学校电子大屏上。 支持学校的白板软件。 软件介绍 学校班级课程表 工具界面清爽,信息能一目了然。 虽然看感觉功能简单,但每个…...
ELK组成及实现原理
ELK是由三个主要组件组成的日志处理和搜索平台,分别是: Elasticsearch:Elasticsearch 是一个基于Lucene构建的开源搜索引擎,提供强大的搜索、分析功能。它负责存储和索引所有数据,并提供实时搜索能力。数据可以通过HTT…...

【Vue3源码解析】响应式原理
源码环境搭建 【Vue3源码解析】应用实例创建及页面渲染-CSDN博客 写文章时的Vue 版本: "version": "3.5.13",针对单个包进行开发环境打包、测试。 pnpm run dev reactivityreactive 创建响应式对象 packages/reactivity/src/reactive.ts …...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...

多模态大语言模型arxiv论文略读(112)
Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题:Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者:Jea…...