Codeforces 874 div3 A-G
A. Musical Puzzle
分析
每两个相邻的字母都要录制一段,开个set记录一下,然后输出set的大小
C++代码:
#include<iostream>
#include<set>
using namespace std;
void solve(){int n;string s;cin>>n>>s;set<string> se;for(int i=0;i<s.size()-1;i++)se.insert(s.substr(i,2));cout<<(int)se.size()<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
B. Restore the Weather
分析
这题的k只是个幌子,根本没用
a从小到大对应b的从小到大
直接让b排序,然后根据a的大小按照对应位置放好就行
C++代码:
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
const int N=100010;
PII a[N];
int b[N],c[N],n,k;
void solve(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i].first;a[i].second=i;}sort(a+1,a+1+n);for(int i=1;i<=n;i++)cin>>b[i];sort(b+1,b+1+n);for(int i=1;i<=n;i++){c[a[i].second]=b[i];}for(int i=1;i<=n;i++)cout<<c[i]<<" ";cout<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
C. Vlad Building Beautiful Array
分析
如果全是奇数或者全是偶数,则输出Yes
如果存在奇数,则不可能将所有数都变成偶数,因为最小的那个奇数就不可能变成偶数
所以存在奇数就要把所有的偶数都变成奇数,则对于所有的偶数,都必须要有比当前数小的奇数,否则不可能全变成奇数
C++代码:
#include<iostream>
#include<algorithm>
using namespace std;
void solve(){int n,sum1=0,sum2=0;cin>>n;int a[n+5];for(int i=1;i<=n;i++){cin>>a[i];if(a[i]%2==0)sum1++;else sum2++;}if(sum1==n||sum2==n)puts("Yes");else{sort(a+1,a+n+1);//如果有奇数,则必须全变成奇数,那么对于每个偶数都必须要有比他小的奇数 int t=0,flag=0;for(int i=1;i<=n;i++)//a[i]为偶数且没有比a[i]小的奇数if(a[i]%2==0&&!t)flag=1;else if(a[i]%2)t=1;if(flag)puts("No");else puts("Yes");}
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
D. Flipper
分析
要数组最大,则让n在第一个数最大
如果n本来就在第一个数,进行操作则n不可能还在第一个数,那么让n-1在第一个数
所以让要找的数的下标的前一个下标作为右端点 r ,如果要找的数的下标为n,则让n作为右端点r,然后暴力枚举左端点,找进行操作后最大的数组
C++代码:
#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> get(int l,int r,vector<int> a){vector<int> res;for(int i=r+1;i<=n;i++)res.push_back(a[i]);//[r+1,n]变成前缀 for(int i=r;i>=l;i--)res.push_back(a[i]);//反转区间[l,r] for(int i=1;i<=l-1;i++)res.push_back(a[i]);//[1,l-1]变成后缀 return res;
}
void solve(){cin>>n;vector<int> a(n+1);for(int i=1;i<=n;i++)cin>>a[i];int t=find(a.begin(),a.end(),n)-a.begin();//找到n的位置if(t==1){//如果n是第一个数 t=find(a.begin(),a.end(),n-1)-a.begin();//找到n-1的位置 }int r=t==n?t:t-1;vector<int> ans(n,1);for(int l=1;l<=r;l++)ans=max(ans,get(l,r,a));//vector可以直接这样比大小for(int i=0;i<n;i++)cout<<ans[i]<<" \n"[i==n-1];
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
E. Round Dance
分析
直接用并查集记录连通块的个数,然后看有几个连通块有环的存在
这题是n个点n条边,每个点最多只有两个邻点,且可能有重边,所以一个连通块最多一个环,在合并两个点的时候,记录是否有环,如果有,则sum3++,记录连通块的个数sum2
所以最多sum2个,最少sum3+(sum2-sum3>0)个,除了环剩下的都可以接在一起合并成一个
C++代码:
#include<iostream>
#include<map>
using namespace std;
typedef pair<int,int> PII;
const int N=200010;
int p[N];
map<PII,int> st;
int n;
int find(int x){if(p[x]!=x)p[x]=find(p[x]);return p[x];
}
int merge(int a,int b){int pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;return true;}return false;//会形成环
}
void solve(){cin>>n;st.clear();for(int i=1;i<=n;i++)p[i]=i;int sum1=0,sum2=0,sum3=0;for(int i=1;i<=n;i++){int x;cin>>x;if(!st[{i,x}]){if(!merge(i,x))sum3++;//如果有环}st[{i,x}]++,st[{x,i}]++;}for(int i=1;i<=n;i++)if(p[i]==i)sum2++;sum1=sum3+(sum2-sum3>=1);cout<<sum1<<" "<<sum2<<'\n';
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
F. Ira and Flamenco
分析
区间内数的个数等于m且互不相同,且区间极值小于m,显然这m个数只能是连续的数
先记录数组a中每个数出现的次数,然后对a排序去重
对于第一个样例,m=4,n=7
8 10 10 9 6 11 7
排序去重后的结果为6,7,8,9,10,11,个数分别为1,1,1,1,2,1
合法区间:
6,7,8,9,该方案的个数为1*1*1*1=1
7,8,9,10,该方案的个数为1*1*1*2=2
8,9,10,11,该方案的个数为1*1*2*1=2
一共有1+2+2=5种方案
从前往后搜索每个数
假设搜到了一个合法的区间,假设当前区间每个数个数相乘之和为 t,然后到了下一个区间,就要将该区间的第一个数去掉,类似于滑动窗口,把数去掉的同时还要除以第一个数的个数,新加一个数就要乘以新加的数的个数
这题如果直接做会爆long long,但是看到有除法还有对质数取模,就可以考虑用逆元来做了,直接把除法变成乘法
C++代码:
#include<bits/stdc++.h>
using namespace std;
const int N=200010,mod=1e9+7;
typedef long long LL;
int n,m;
LL qmi(LL a,LL k,LL p){LL res = 1;while(k){if(k&1)res=res*a%p;a=a*a%p;k>>=1;}return res;
}
void solve()
{cin>>n>>m;vector<int> a(n);map<int,int> cnt;for(int i=0;i<n;i++)cin>>a[i],cnt[a[i]]++;sort(a.begin(),a.end());//排序 a.erase(unique(a.begin(),a.end()),a.end());//去重 if(m==1){int ans=0;for(auto t:cnt)ans=(ans+t.second)%mod;cout<<(ans+mod)%mod<<endl;return;}LL sum=1,ans=0,t=cnt[a[0]];for(int i=1;i<a.size();i++){if(a[i]==a[i-1]+1)sum++,t=(t*cnt[a[i]])%mod;else sum=1,t=cnt[a[i]];if(sum==m){ans=(ans+t)%mod;sum--;t=t*qmi(cnt[a[i-m+1]],mod-2,mod)%mod;}}cout<<(ans+mod)%mod<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
G. Ksyusha and Chinchilla
分析
连续的三个节点即可连成一条树枝
直接dfs搜索整棵树,然后记录以每个节点为根的子树的大小,如果当前子树大小刚好为3,则让该子树大小变成0(因为已经用过了,不能让别的节点再用该子树种的任何节点),然后把连接该子树的边的编号加入到答案种去,详见代码
C++代码:
//#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<functional>
using namespace std;
const int N=200010,M=N*2;
typedef pair<int,int> PII;
void solve(){int n;cin>>n;vector<PII> e[n+1]; for(int i=1;i<n;i++){int a,b;cin>>a>>b;//加边,a-b这条边的编号为ie[a].push_back({b,i});e[b].push_back({a,i}); }vector<int> ans,sz(n+1);//ans记录答案,sz记录子树大小//第一次尝试这样写函数,不写在外面,边写边学hhfunction<void(int,int,int)> dfs=[&](int u,int fa,int from){//from表示从哪条边过来的sz[u]=1;//以u为根的子树大小for(auto [v,i]:e[u]){//u的所有邻点if(v==fa)continue;dfs(v,u,i);sz[u]+=sz[v];}if(sz[u]==3){//如果子树大小刚好为3,则让子树大小为0,防止u的父节点加上这三个点sz[u]=0;if(from)ans.push_back(from);//加上编号为from的边}};dfs(1,-1,0);//dfs遍历整棵树if(sz[1]!=0)cout<<-1<<'\n';else{cout<<ans.size()<<endl;for(auto x:ans)cout<<x<<" ";cout<<'\n';}
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
相关文章:
Codeforces 874 div3 A-G
A. Musical Puzzle 分析 每两个相邻的字母都要录制一段,开个set记录一下,然后输出set的大小 C代码: #include<iostream> #include<set> using namespace std; void solve(){int n;string s;cin>>n>>s;set<strin…...

暑期数据结构 空间复杂度
3.空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟…...

【Android Studio】图标一键生成 Image Asset Studio(一键各机型适配图标生成工具-告别一个一个替换)
文章目录 方法一:原始替换方法二:Image Asset Studio 方法一:原始替换 https://blog.csdn.net/xzzteach/article/details/140821856 方法二:Image Asset Studio 自动替换所有机型图标...

C++ | Leetcode C++题解之第332题重新安排行程
题目: 题解: class Solution { public:unordered_map<string, priority_queue<string, vector<string>, std::greater<string>>> vec;vector<string> stk;void dfs(const string& curr) {while (vec.count(curr) &am…...
使用Python实现简单的网页爬虫:抓取网站标题
使用Python实现简单的网页爬虫:抓取网站标题 在当今数据驱动的时代,网络爬虫(Web Crawler)成为了获取和分析网络数据的重要工具。无论是数据科学、市场分析还是学术研究,爬虫都能帮助我们从互联网上提取有价值的信息。本文将介绍如何使用Python实现一个简单的爬虫,抓取某…...

视觉SLAM ch3—三维空间的刚体运动
如果对于某些线性代数的知识不太牢固,可以看一下我的另一篇博客,写了一些基础知识并推荐了一些视频。 旋转矩阵 单元所需的线代基础知识https://blog.csdn.net/Johaden/article/details/141023668 一、旋转矩阵 1.点、向量、坐标系 在数学中&…...

计算机毕业设计选题推荐-二手图书交易系统-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

4.MySQL数据类型
目录 数据类型 编辑数值类型 tinyint类型 bit类型 float类型 decimal类型 字符串类型 char类型 varchar varchar和char的区别 日期和时间类型 数据类型 数值类型 说明一下:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时&#x…...

快递查询新纪元:一键批量获取多家快递物流详情
跨快递平台批量查询神器:一站式解决信息追踪难题——固乔快递查询助手 在电商行业日益繁荣的今天,快递服务已经成为连接买卖双方不可或缺的一环。然而,随着合作的快递公司日益增多,如何高效地管理和追踪不同平台的快递信息&#…...
docker部署redis和mongoDB
docker部署mongoDB redismongoDB redis # --requirepass指定redis连接时的密码 # --appendonly yes 开启reids的AOF功能 docker run --name redis -p 6379:6379 -d redis:5.0.14 redis-server --requirepass 1234 --appendonly yes# 以/etc/redis/redis.conf的配置信息启动red…...

了解LVS,配置LVS
项目一、LVS 1.集群Cluster Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统 LB:负载均衡 HA:高可用 HPC:高性能计算 2.分布式 分布式是将一个请求分成三个部分,按照功能拆分,使用微服…...

目标检测综述文章解读——Object Detection in 20 Years: A Survey
论文:Object Detection in 20 Years: A Survey 作者:Zhengxia Zou, Keyan Chen, Zhenwei Shi, Yuhong Guo, Jieping Ye 链接:https://arxiv.org/abs/1905.05055 这是一篇关于目标检测综述性文章,自2019年5月第一次提交后ÿ…...
Android make_vbmeta_image的参数值定义
网上生成vbmeta_system.img的命令,分析下这些参数的赋值,key的路径 out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key device/mediatek/system/common/key/rsa2048/oem_prvk.pem --padding_size 4096 --rollback_index 0 --...

代码规范 —— 并发编程规范
优质博文:IT-BLOG-CN 【1】【强制】获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明: 资源驱动类、工具类、单例工厂类都需要注意。 【2】【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。…...
仪器仪表控制:pymeasure常用模块以及API
下面是对 pymeasure.experiment 模块中各类和方法的详细介绍,包括它们的功能和用法。 pymeasure.experiment 模块详细介绍 Experiment 类 Experiment 类是 Pymeasure 中用于定义和管理实验的核心类。它包含实验的设置、执行和数据记录等功能。 构造函数 class …...

如何理解openfoam案例里面的blockMesh文件里面的simpleGrading
总结: simpleGrading参数分为xyz三个方向。如果你想使得网格在某个方向上更密集,可以在simpleGrading中将该方向的渐变率设置为小于 1 .更稀疏则设置大于1. 一、案例 比如我这个爆炸案例: 对应的blockMeshDIct文件如下: // 定…...
算法竞赛的制胜法宝:被严重低估的位运算究竟有什么用?
大家好,我是干货哥。今天咱们来聊聊一个让很多人都忽略的神技——位运算。等等,你是不是已经准备关掉这篇文章了?你以为位运算只是计算机底层的鸡肋操作?你以为这些不过是编程语言里最基础、最无趣的东西?但真的是这样…...

Qt QTableWidget 去除序号列
ui->tableWidget->verticalHeader()->setHidden(true);//垂直序列号(表左侧)ui.tableWidget->horizontalHeader()->setHidden(true);//水平序列号(表上方)删除后效果图:...
【C++】5.类和对象(3)
文章目录 3.析构函数析构函数的特点: 4.拷贝构造函数拷贝构造的特点: 3.析构函数 析构函数与构造函数功能相反,析构函数不是完成对对象本身的销毁,比如局部对象是存在栈帧的,函数结束栈帧销毁,他就释放了&…...

CTF-RCE
eval执行 ?cmdsystemctl("ls"); ?cmdsystemctl("ls /"); ?cmdsystemctl("cat /flag_27523); 命令注入 输入ip试试发先可以执行 127.0.0.1 查看一下看看有社么 127.0.0.1 | ls 试着看看php文件 127.0.0.1 | cat 297581345892.php 貌似这个文件有…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...