AtCoder Regular Contest 156题解

news/2024/4/24 7:16:24/文章来源:https://blog.csdn.net/m0_61735576/article/details/129124684

A - Non-Adjacent Flip

这道题有点思维题的意思

首先单数肯定不行

如果是大于4的偶数那么肯定都可以(这点也要想明白)

因为1111的话,1和3配,2和4配,怎样都能配好的

接下来讨论下剩下的情况

n=3的时候,只要中间不是1都可以

其他时候我们只要把下标存起来,稍微判断就可以

代码如下

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;   
const int N=1e6+10; void solve(){int n;cin >> n;string s;cin >> s;int cnt = count(s.begin(), s.end(), '1');if (cnt % 2 == 1) {cout << -1 << "\n";return;}if (cnt == 0) {cout << 0 << "\n";return;}if (cnt >= 4) {cout << cnt / 2 << "\n";return;}if (n == 3) {if (s[1] == '1') {cout << -1 << "\n";} else {cout << 1 << "\n";}return;}vector<int> pos;for (int i = 0; i < n; i++) {if (s[i] == '1') {pos.push_back(i);}}if (pos[1] - pos[0] > 1) {cout << 1 << "\n";return;}if (n == 4 && pos[0] == 1) {cout << 3 << "\n";} else {cout << 2 << "\n";}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);int T;cin>>T;while(T--){solve();}
}

B - Mex on Blackboard

给定N个元素的数组A,每次操作,你可以从数组种选出任意个元素,然后向数组中加入这些

元素的MEX

问k次之后九二一得到多少种不同的数组

枚举写上去的最大数x,计算写上这个数字至少需要几次有贡献的操作,对剩下的操作数求组合数

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;   
const int N=1e6+10; 
int n, k;
int a[N];
int cnt[N];
const int mod = 998244353;
int qpow(int a, int b){int ans = 1;while(b){if(b & 1){ans *= a;ans %= mod;}a *= a;a %= mod;b /= 2;}return ans;
}
int fc[N];
int gc[N];
void prep(){fc[0] = gc[0] = 1;for(int i=1;i<N;i++){fc[i] = (fc[i - 1] * i) % mod;gc[i] = qpow(fc[i], mod - 2);}
}int C(int n, int k){int ans = fc[n];ans *= gc[k];ans %= mod;ans *= gc[n - k];ans %= mod;return ans;
}void solve(){cin >> n >> k;for(int i=1;i<=n;i++){cin >> a[i];cnt[a[i]]++;}vector<int> holes;for(int i=0;i<N;i++){if(!cnt[i]) holes.pb(i);}prep();int ans = 0;if(holes[0] != 0){ans += C(holes[0] + k - 1, holes[0] - 1);ans %= mod;}for(int i=0;i<k;i++){int nxt = holes[i + 1];ans += C(nxt + (k - (i + 1)) - 1, nxt - 1);ans %= mod;}cout << ans << "\n";
}
signed main(){solve();
}


C - Tree and LCS

给定一棵N个节点的树T,编号为1-N,定义排列P与T的相似度为

对于T一个不重复路径(x1,x2,x3,,,,xn),路径相似度为(x1,x2....xn)与(Px1,Px2,Px3,,,,Pxn)的最长公共子序列长度

P与T的相似度为T中所有路径相似度的最大值

请构造一个排列P,使其与T相似度最小

构造题,两T在BFS序上的相邻节点,即可将相似度锁定为 1 。

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;   
const int N = 5005;
int n, d[N], p[N], que[N], l, r;
vector<int> e[N];
signed main() {ios::sync_with_stdio(0), cin.tie(0);cin >> n;for (int i = 1; i < n; ++i) {int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);++d[u], ++d[v];}l = 1;for (int i = 1; i <= n; ++i)if (d[i] == 1) que[++r] = i;while (l <= r) {int u = que[l++];for (auto v : e[u]) {if (d[v] > 1 && --d[v] == 1) {que[++r] = v;}}}iota(p + 1, p + n + 1, 1);for (int i = 1; i < n; i += 2)swap(p[que[i]], p[que[i + 1]]);for (int i = 1; i <= n; ++i) cout << p[i] << " \n"[i == n];return 0;
}

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

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

相关文章

win7下安装postgreSQL教程

系统环境&#xff1a;Windows 7 旗舰版 64位操作系统 安装版本&#xff1a;postgresql-9.1.4-1-windows-x64 安装步骤&#xff1a; 1、下载系统对应的软件版本&#xff1b; 2、双击“postgresql-9.1.4-1-windows-x64.exe”打开安装窗口&#xff1b; 3、Welcome页&#xff0c;…

图解操作系统

硬件结构 CPU是如何执行程序的&#xff1f; 图灵机的工作方式 图灵机的基本思想&#xff1a;用机器来模拟人们用纸笔进行数学运算的过程&#xff0c;还定义了由计算机的那些部分组成&#xff0c;程序又是如何执行的。 图灵机的基本组成如下&#xff1a; 有一条「纸带」&am…

allure简介

allure介绍allure是一个轻量级&#xff0c;灵活的&#xff0c;支持多语言的测试报告工具多平台的&#xff0c;奢华的report框架可以为dev/qa提供详尽的测试报告、测试步骤、log也可以为管理层提供high level统计报告java语言开发的&#xff0c;支持pytest,javaScript,PHP等可以…

C语言——动态内存管理

目录0. 思维导图&#xff1a;1. 为什么存在动态内存分配2. 动态内存函数介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态内存开辟的空间越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部…

django+celery+ RabbitMQ自定义多个消息队列

关于django celery的使用网上有很多文章&#xff0c;本文就不多做更多的说明。 本文使用版本 python3.8.15 Django3.2.4 celery5.2.7celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery from kombu import Exchange, …

毕业后想从事软件测试,现在需要学习哪些内容呢

在你选择学习之前&#xff0c;要先考虑一下这个是不是你喜欢的发展方向&#xff0c;而不是只听别人推荐就直接做了选择先了解下软件测试是做什么的以及未来发展前景&#xff0c;最后才是如何自学 软件测试就是在测试这个软件是不是能够完全按照需求运行。软件测试岗再简单点说…

Windows启动docker客户端报错:Hardware assisted virtualization and enabled in the BIOS

报错内容 : &#x1f31f;1.在控制面板中点击 启用或关闭Windows功能&#x1f31f;2.勾选如下复选框&#x1f31f;3.Windows功能中没有Hyper-V复选框怎么办?(如果有请跳过此步骤)此时不同人的电脑还会出现没有Hyper-V选项的情况1.打开 Windows PowerShell&#xff0c;输入 sys…

如何效率搭建企业流程系统?试试低代码平台吧

编者按&#xff1a;本文介绍了一款可私有化部署的低代码平台&#xff0c;可用于搭建团队流程管理体系&#xff0c;并详细介绍了该平台可实现的流程管理功能。关键词:可视化设计&#xff0c;集成能力&#xff0c;流程审批&#xff0c;流程调试天翎是国内最早从事快速开发平台研发…

Hive内部表与外部表的区别具体说明

目录 1.在/opt/atguigu/目录下&#xff0c;新建两个txt文件 2.在hadoop的web端递归创建一个目录&#xff0c;存储这两个文件 3.查看web端的文件 一、内部表&#xff1a; 1.创建一个内部表&#xff0c;并指定内部表的存储位置 2.查看内部表&#xff0c;内部表中没有数据 …

2023.2 新方案 java代码混淆 java加密 字符串加密

Java字节码可以反编译&#xff0c;特别是创业公司,很好的项目很容易被别人破解反编译,造成很严重的损失,所以本混淆方案能很好的保护源码,而且在不断迭代,增强混淆效果,异常问题处理,达到保护项目的目的&#xff1a; 本次升级包括: 2023年02年19日 : ht-confusion-project-1.8…

PK体系下的教育场景—电子白板的应用

PK体系指基于国产飞腾&#xff08;Phytium&#xff09;CPU和麒麟&#xff08;Kylin&#xff09;操作系统的技术和产业体系&#xff0c;被誉为“中国架构”&#xff0c;目前基于PK体系的相关软硬件已经广泛用于党政、金融、电信等关基行业。教育信创在国家大战略布局下&#xff…

【技术分享】Web自动化之Selenium安装

Web 应用程序的验收测试常常涉及一些手工任务&#xff0c;例如打开一个浏览器&#xff0c;并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现人为的错误&#xff0c;也比较费时间。因此&#xff0c;将这些任务自动化&#xff0c;就可以消除人为因素。Selenium 可以…

理解QPSK的实质-I右手正旋-Q左手负旋

正在学习5GNR PDCCH&#xff0c;用到QPSK。作一小结。 引言 我认为像我这样一个死民科&#xff0c;非主流非科班的通信人&#xff0c;理解QPSK的意义&#xff0c;甚至不比欧拉公式&#xff0c;或者是傅里叶变换小。 因为QPSK相较于BPSK&#xff0c;是真正第一次体现了调制的…

模拟默认密码自动生成-课后程序(JAVA基础案例教程-黑马程序员编著-第五章-课后作业)

【案例5-2】 模拟默认密码自动生成 【案例介绍】 1.任务描述 本例要求编写一个程序&#xff0c;模拟默认密码的自动生成策略&#xff0c;手动输入用户名&#xff0c;根据用户名自动生成默认密码。在生成密码时&#xff0c;将用户名反转即为默认的密码。 2.运行结果 运行结…

Power BI 数据处理介绍(数据初始调整、合并列及查看数据结构)

本系列的文章&#xff1a; 安装流程和示例介绍&#xff1a; 《Power BI windows下载安装流程&#xff09;》《Power BI 11个必学官方示例数据案例&#xff08;附下载链接&#xff09;》 数据导入阶段介绍&#xff1a; 《Power BI 数据导入&#xff08;SQL Server、MySQL、网页…

C++(42)-FSM-有限状态机

1.FSM 是什么&#xff1f; 一种用来进行对象行为建模的工具&#xff0c;用于描述对象在生命周期内所经历的状态序列&#xff0c;以及如何响应来自外界的各种事件。2.FSM 组成&#xff1a;状态、事件、动作3.FSM类型&#xff1a; 3.1Moore: 输出&#xff1a;当前状态有关…

mysql -学习总结

mysql 详解1、mysql特点2、事务2.1 事务的四大特性 – ACID2.2 并发事务问题2.3 事务的四大隔离级别2.4 事务隔离级别操作sql2.5 事务原理 – LBCC MVCC2.4.1 行的隐藏列2.4.2 ReadView2.4.3 MVCC在四种隔离级别下的区别2.5 undo log、binlog、redo log2.5.1 Undo log2.5.2 bin…

2023年2月22日PMP®项目管理认证课程正式开课

PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP认证定为项目经理人必须取得的重要资质。 PMP认证是Project Management Institute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。…

安装MQTT Server遇到报错“cannot verify mosquitto.org‘s certificate”,该如何解决?

MQTT是基于发布/订阅的轻量级即时通讯协议&#xff0c;很适合用于低带宽、不稳定的网络中进行远程传感器和控制设备通讯等操作中。在我们的软件研发中&#xff0c;也经常使用MQTT协议进行消息通信等。今天来和大家分享一些关于在安装MQTT Server中遇到的疑难问题及解决思路。当…

文献综述怎么写?有哪些准备工作和内容要求

文献综述的撰写是提高研究生论文写作能力的重要途径&#xff0c;是研究生在撰写学术论文和学位论文中必须要涉及的内容&#xff0c;是不可或缺的&#xff0c;写好一篇好的文献综述是存在诸多困难和挑战的&#xff0c;需要掌握一定的技巧和方法。 一、文献综述的写作目的 文献综…