牛客周赛34(A-E)

目录

1.A

2.B

3.C

4.D

 5.E


这场出题人号称是考思维,把我给搞蒙了,把我这菜鸡实力暴露的淋漓尽致,不过这场还是让我学到了东西.A,B题就是签到题,会语法就能做(doge),c题我知道思路是啥,但我没想到切分出来的偶数也可能爆long long,所以还得用字符串存,自定义cmp比较函数,而我却是用long long存,用multiset排序,最后得了大部分分(泪目).D题就是分类讨论,没有清晰的头脑简直让人头皮发麻,E题是个二分图,没学过,FG太难了,不是我能涉及的.

1.A

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;set<int>st;for(int i=1;i<=n;i++){int t;cin>>t;if(t<=n&&t>=1)st.insert(t);}if(st.size()!=n)cout<<0;else{cout<<1<<"\n";cout<<1<<" "<<100005;}return 0;
}

2.B

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);char a,b;cin>>a>>b;if(a!=b){cout<<4<<"\n";cout<<a<<b<<"\n";cout<<b<<a<<"\n";cout<<a<<"\n";cout<<b<<"\n";}else{cout<<2<<"\n";cout<<a<<"\n";cout<<a<<a<<"\n";}return 0;
}

3.C

这题的思路就是从前向后遍历,遇到偶数就分割,(别问我可不可能出现一个奇数落单无法变成偶数的,这样这题就没答案了),然后将切割的字符串扔进一个数组,最后排个序就行

#include<bits/stdc++.h>
using namespace std;
#define int long long
bool cmp(string m,string n)
{if(m.size()!=n.size())return m.size()<n.size();else return m<n;
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//遇到偶数就切割string s;cin>>s;string temp;vector<string>v;for(auto i:s){if((i-'0')%2==0){temp+=i;v.push_back(temp);temp="";}else{temp+=i;}}sort(v.begin(),v.end(),cmp);for(auto i:v){cout<<i<<"\n";}return 0;
}

4.D

首选要知道答案长啥样,因为陡峭值恰好为1,所以只能是1,1,1,2,2或2,2,1,1这两种情况(当然这里的1和2只是泛指最大值和最小值)

由此开始讨论

1.ma-mi>1,无解

2.ma-mi==1,找出最大值和最小值的分界点,如果是混乱的则无解,否则分ma在前mi在后,mi在前ma在后两种情况进行讨论,输出答案
 

当然,本题最恶心的是要特判全0的情况,输出2 1 1 1 ....即可 

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;vector<int>v(n);int ma=-1,mi=10000000000;for(int i=0;i<n;i++){cin>>v[i];if(v[i]!=0){ma=max(ma,v[i]);mi=min(mi,v[i]);}}if(ma==-1){cout<<2<<" ";for(int i=0;i<n-1;i++)cout<<1<<" ";return 0;}//cout<<mi<<" "<<ma<<"\n";if(ma-mi>1)//最大值最小值的差超过1无解{cout<<-1;}else if(ma-mi==1)//最大值最小值的差恰好为1{vector<int>v1,v2;for(int i=0;i<n;i++){if(v[i]==mi)v1.push_back(i);//为mi的下标if(v[i]==ma)v2.push_back(i);//ma的下标}//cout<<mi<<" "<<ma<<" "<<v1[0]<<" "<<v2[0]<<"\n";if(v1.back()<v2[0]){int k;for(k=0;k<=v1.back();k++)cout<<mi<<" ";for(;k<n;k++)cout<<ma<<" ";}else if(v2.back()<v1[0]){int k;for(k=0;k<=v2.back();k++)cout<<ma<<" ";for(;k<n;k++)cout<<mi<<" ";}else{cout<<-1;}}else{if(v[0]!=0&&v[n-1]!=0){cout<<-1;}else if(v[0]==0){cout<<mi+1<<" ";for(int i=0;i<n-1;i++)cout<<mi<<" ";}else if(v[n-1]==0){for(int i=0;i<n-1;i++)cout<<mi<<" ";cout<<mi+1<<" ";}}return 0;
}

 5.E

这题是个二分图,因为只有两种字符'd','p',所以每一层必须是一样的字母,而且相邻两层的字母必定不同,我们可以将奇数层打成1标记,偶数层打成0标记,那么'd'字符和'p'字符必须分别在奇数层或偶数层,

所以p的标记只能有一个,d的标记也只能有一个,不满足这种情况直接无解,反之有解,根据打的标记输出d或p即可

#include<bits/stdc++.h>//二分图
using namespace std;
#define int long long
const int maxn=1e5+5;
vector<int>g[maxn];
int dp[maxn];
void dfs(int x,int pr,int p)
{dp[x]=p;for(auto i:g[x]){if(i==pr)continue;dfs(i,x,1-p);}
}//dfs遍历树
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin>>n;string s;cin>>s;s=' '+s;for(int i=0;i<n-1;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}//建图set<int>d,p;dfs(1,0,1);for(int i=1;i<=n;i++){if(s[i]=='d')d.insert(dp[i]);if(s[i]=='p')p.insert(dp[i]);}if(d.size()>1||p.size()>1){cout<<-1;return 0;}// else if(d.size()==1&&p.size()==1&&(*d.begin()==*p.begin()))// {//     cout<<-1;// }if(*d.begin()==1){for(int i=1;i<=n;i++){if(dp[i]==1)cout<<'d';else cout<<"p";}}else {for(int i=1;i<=n;i++){if(dp[i]==1)cout<<"p";elsecout<<"d";}}return 0;
}

写在最后:

本人实力比较菜,如有错误,欢迎指出,如果觉得看不懂,烦请参考其他大佬的思路

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

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

相关文章

关于内容生成及其上下游的一些问题和想法以及SmartChat给出的答复

写在问题前面 下面的一系列问题&#xff0c;是为了要实现问题中所提到的内容而提出的。如果有感兴趣的朋友&#xff0c;让我们一起学习进步。同时&#xff0c;以下代码、架构和实现都是我计划想要完成的&#xff0c;如果有任何一方面有基础又愿意一起实现它们的请留言或私信一…

试一下newb,还是有错误呀

解题&#xff1a;原式&#xff1d; 2. 在递增的等比数列 ( a n ) (a_n) (an​)中&#xff0c;若 ( a 3 − a 1 5 2 ) (a_3 - a_1 \frac{5}{2}) (a3​−a1​25​), ( a 2 3 ) (a_2 3) (a2​3), 则公比 (q) A. ( 4 3 ) ( \frac{4}{3} ) (34​) B. ( 3 2 ) ( \frac{3}{2} …

netcat(nc)下载及基本使用

netcat&#xff08;nc&#xff09;下载及基本使用 - 知乎

旧物回收小程序开发,开启绿色生活新篇章

随着科技的发展和人们生活水平的提高&#xff0c;物质生活的丰富带来了大量的废弃物。如何合理处理这些废弃物&#xff0c;实现资源的再利用&#xff0c;已成为社会关注的焦点。旧物回收小程序的开发与应用&#xff0c;为这一问题提供了有效的解决方案。本文将探讨旧物回收小程…

软考47-上午题-【数据库】-数据查询语言DQL2

一、聚合函数 聚合函数实现数据统计的功能&#xff0c;返回一个单一的值。聚合函数一般与select语句的group by子句一起使用。 示例&#xff1a; 二、数据分组-group by 聚合函数加上group by子句进行分组。 通常一个聚合函数的作用范围是满足where子句中指定条件的记录&…

Atcoder ABC341 C - Takahashi Gets Lost

Takahashi Gets Lost&#xff08;高桥迷路了&#xff09; 时间限制&#xff1a;3s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【…

vscode输入英文时字体之间的间隔突然变大,似中文

vscode输入英文时字体之间的间隔突然变大&#xff0c;似中文 主要原因&#xff1a; 是由于输入法变成全角模式了。原因可能是不小心按了 shift空格键快捷键造成的。 正常情况&#xff0c;全角就是字母和数字等与汉字占等宽位置的字。 半角就是ASCII方式的字符&#xff0c;在没…

并发编程线程安全性之可见性有序性

可见性 可见性: 就是说一个线程对共享变量的修改&#xff0c;另一个线程能够立刻看到 通俗点说&#xff0c;就是两个线程共享一个变量&#xff0c;无论哪一个线程修改了这个变量&#xff0c;另外一个线程都能够立刻看到上一个线程对这个变量的修改 产生线程安全问题的原因 计…

桶装水配送小程序有什么功能 怎么制作

桶装水配送小程序是一种方便快捷的订水服务工具&#xff0c;可以帮助用户轻松订购桶装水&#xff0c;并实时跟踪订单配送情况。下面具体介绍送水小程序的功能。 1. 客户订水功能&#xff1a;用户可以通过小程序轻松选择需要的桶装水数量和配送时间&#xff0c;填写联系信息和地…

LeetCode 2960.统计已测试设备

给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages &#xff0c;表示 n 个设备的电池百分比。 你的任务是按照顺序测试每个设备 i&#xff0c;执行以下测试操作&#xff1a; 如果 batteryPercentages[i] 大于 0&#xff1a; 增加 已测试设备的计数。 将下标在 …

leet hot 100-7 无重复字符的最长子串

无重复字符的最长子串 原题链接思路代码 原题链接 leet hot 100-7 3. 无重复字符的最长子串 思路 声明一个无序map容器&#xff0c;容器里面记录着窗口里面字符的数量 &#xff0c;如果字符的数量大于1 遍历到s[i]的时候 数量1 此时如果map里面相关的数量大于1 说明窗口里面…

ocr识别tesseract.js本地复现

来源&#xff1a; https://github.com/naptha/tesseract.js chatgpt今天帮倒忙&#xff0c;一直给一些旧的东西&#xff0c;代码就老报错&#xff0c;最后还是我出面看看log和err调了一下&#xff0c;还的是我啊 复现效果 这个挺好复现的&#xff0c;用的英文模式比中文识别…

阿里云服务器ECS u1实例性能如何?199元一年

阿里云服务器ECS u1实例&#xff0c;2核4G&#xff0c;5M固定带宽&#xff0c;80G ESSD Entry盘优惠价格199元一年&#xff0c;性能很不错&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;购买限制条件为企业客户专享&#xff0c;实名认证信息是企业用户即可&a…

如何本地构建一个 dpdk l2fwd snap 包?

目标 基于 dpdk-19.11 l2fwd 程序及其依赖库本地构建一个 snap 包&#xff0c;能够在 ubuntu 20.04 桌面环境中安装并测试运行。 编写 snap 包 yaml 描述文件 yaml 文件&#xff1a; name: test # you probably want to snapcraft register <name> base: core22 # th…

常用芯片学习——YC688语音芯片

YC688 广州语创公司语音芯片 使用说明 YC688是一款工业级的MP3语音芯片 &#xff0c;完美的集成了MP3、WAV的硬解码。支持SPI-Flash、TF卡、U盘三种存储设备。可通过电脑直接更新SPI-Flash的内容&#xff0c;无需上位机软件。通过简单的串口指令即可完成三种存储设备的音频插…

C/C++文件操作

一、文本文件操作 1、写文件操作 代码 #include<fstream> #include<iostream>int main() {ofstream outfile("Student.txt", ios::out);if (!outfile) {cout << "文件写入失败" << endl;exit(0); //程序终止}cout << &qu…

R绘图 | 单列数据的分布图,对A变量分bin求B变量的平均值

问题1&#xff1a;单个向量的 density 分布图&#xff1f; (1) 模拟数据 set.seed(202402) datdiamonds[sample(nrow(diamonds), 1000),]> head(dat) # A tibble: 6 10carat cut color clarity depth table price x y z<dbl> <ord> &l…

物资管理新篇章:Java+SpringBoot实战

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

微信小程序本地开发

微信小程序本地开发时不需要在小程序后台配置服务器域名直接在小程序项目中填写后端在本机的IP地址和端口号 如图&#xff08;第一步&#xff09; 填写地址后发现报错&#xff0c;url不是合法域名&#xff0c;则在详情设置不校验合法域名 如图&#xff08;第二歩&#xff09;…

什么时候用ref和reactive

在Vue 3中&#xff0c;ref和reactive都是用于创建响应式数据的工具&#xff0c;但它们的使用场景有所不同。 使用ref的情况&#xff1a; 基本数据类型&#xff1a;当你需要响应式地处理基本数据类型&#xff08;如数字、字符串、布尔值&#xff09;时&#xff0c;应该使用ref…