AtCoder Beginner Contest 333 A~F

A.Three Threes(循环)

题意:

给出一个正整数 N N N,要求输出 N N N N N N

分析:

按要求输出即可

代码:

#include <bits/stdc++.h>
using namespace std;void solve() {int n;cin >> n;for (int i = 1; i <= n; i++) {cout << n;}cout << endl;
}int main() {solve();return 0;
}

B.Pentagon(判断)

题意:

给出正五边形上四个顶点 S 1 , S 2 , T 1 , T 2 ( S 1 ≠ S 2 , T 1 ≠ T 2 ) S_1,S_2, T_1,T_2(S_1 \ne S_2, T_1 \ne T2) S1,S2,T1,T2(S1=S2,T1=T2),问 S 1 S_1 S1 S 2 S_2 S2连成的线端长度与 T 1 T_1 T1 T 2 T_2 T2之间连成的线段长度是否相等。

分析:

正五边形任意两点之间的距离分以下两种:

  • 两点相邻

  • 两点不相邻

判断两条线段是否属于同一类型即可。

代码:

#include <bits/stdc++.h>
using namespace std;void solve() {string s, t;cin >> s >> t;int s1 = s[0] - 'A';int s2 = s[1] - 'A';int t1 = t[0] - 'A';int t2 = t[1] - 'A';int len1 = 0, len2 = 0;if (abs(s2 - s1) != 1 && abs(s2 - s1) != 4) len1 = 1;if (abs(t2 - t1) != 1 && abs(t2 - t1) != 4) len2 = 1;if (len1 == len2) {cout << "Yes" << endl; } else {cout << "No" << endl;}
}int main() {solve();return 0;
}

C.Repunit Trio(预处理)

题意:

有一个序列,里面每个数字均由若干个 1 1 1组成,如 1 , 11 , 111 , . . . 1, 11, 111,... 1,11,111,...,问任取该序列中的三个数字(每个数字可重复取)加在一起组成的所有数字中第 N N N小的数字是多少?

分析:

先预处理由 1 1 1组成的数字。

然后使用三场循环枚举能组成的数字。

枚举结束后排序去重,并输出第 N N N小的数字即可。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;vector<LL> ans, num;void solve() {LL val = 0;for (int i = 1; i <= 15; i++) {val = val * 10 + 1;num.push_back(val);}for (int i = 0; i <= 14; i++) {for (int j = 0; j <= 14; j++) {for (int k = 0; k <= 14; k++) {ans.push_back(num[i] + num[j] + num[k]);}}}ans.push_back(0);//加个0,把存储答案的下标修改为从1开始sort(ans.begin(), ans.end());int len = unique(ans.begin(), ans.end()) - ans.begin();int n;cin >> n;cout << ans[n] << endl;
}int main() {solve();return 0;
}

D.Erase Leaves(贪心)

题意:

给出一棵树,允许进行若干次如下操作:

  • 选择一个叶节点,并将该叶节点删除

问:至少需要操作多少次,才能将节点 1 1 1删除。

分析:

想要让 1 1 1成为叶节点,那么必然需要将1连着的边删除到只剩一条。而想要删除每一条边实际上需要将该边连接的整棵子树全部删除才行,那么最后留下的那条边连接的子树一定为 1 1 1的最大子树。

1 1 1为根节点进行遍历,记录每个节点的子树大小,最后的答案就是连接 1 1 1 k k k棵子树中除最大的子树外的所有子树节点之和,再加上最后删除节点 1 1 1的操作次数。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;const int N = 3e5 + 5e2;vector<int> G[N];
int sz[N];void dfs(int root, int pre) {sz[root] = 1;int len = G[root].size();for (int i = 0; i < len; i++) {int v = G[root][i];if (v != pre) {dfs(v, root);sz[root] += sz[v];}}
}vector<int> child;void solve() {int n;cin >> n;for (int i = 1; i < n; i++) {int u, v;cin >> u >> v;G[u].push_back(v);G[v].push_back(u);}dfs(1, -1);int len = G[1].size();for (int i = 0; i < len; i++) {child.push_back(sz[G[1][i]]);}sort(child.begin(), child.end());int ans = 0;for (int i = 0; i < len - 1; i++) {ans += child[i];}cout << ans + 1 << endl;
}int main() {solve();return 0;
}

E.Takahashi Quest(贪心)

题意:

冒险家在冒险过程中,将遇到 N N N个事件。第 i i i个事件 ( 1 ≤ i ≤ N ) (1≤i≤N) 1iN用一对整数 ( t i , x i ) (t_i,x_i) ti,xi表示 ( 1 ≤ t i ≤ 2 , 1 ≤ x i ≤ N ) (1≤t_i≤2,1≤x_i≤N) (1ti2,1xiN)

每个事件的含义如下:

  • 如果 t i = 1 t_i=1 ti=1,他找到了 x i x_i xi类型的药剂。他可以选择捡起它或丢弃它。
  • 如果 t i = 2 t_i=2 ti=2,他会遇到一个 x i x_i xi类型的怪物。

如果他有 x i x_i xi类型的药剂,他可以使用一个打败怪物。如果他不打败怪物,他就会被打败。

判断他是否能够打败所有的怪物。

如果他不能打败所有的怪物,输出 − 1 -1 1

若可以打败所有的怪物,设 K K K为他在冒险过程中所拥有的药剂的最大数量。设 K m i n {K_{min}} Kmin为在冒险家采取的所有可以打败所有怪物的策略中 K K K的最小值。输出 K m i n K_{min} Kmin的值和该策略下冒险家每次找到药剂时的动作,若他捡起药剂,输出 1 1 1,若他丢弃药剂,输出 0 0 0

分析:

本题采用贪心的思想,遍历事件,使用一个 V e c t o r Vector Vector数组记录每种类型的药水出现的位置,并通过一个 v i s vis vis数组记录这个位置的药水是否被使用,当需要使用药水时,由近到远遍历该种药水对应的 V e c t o r Vector Vector数组中此种药水的所有位置,若没有被使用,则在 v i s vis vis数组中将其标记为已使用,若没有未使用的药水,则表明无法满足要求,冒险家被打败。遍历 N N N个事件,若该位置的药水被使用,则将手中药水数目加 1 1 1,若该位置需要使用药水,则手中药水数目 − 1 -1 1,不断更新 K K K直至完全遍历。最后根据 v i s vis vis数组输出每次找到药剂时的动作。

代码:

#include<bits/stdc++.h>using namespace std;
const int MAXN = 2 * 1e5;
int n;
int t[MAXN], x[MAXN], vis[MAXN];int main() {cin >> n;for (int i = 0; i < n; i++)cin >> t[i] >> x[i];vector<vector<int>> a(n + 5);for (int i = 0; i < n; i++) {if (t[i] == 1) {a[x[i]].push_back(i);} else {int index = a[x[i]].size() - 1;while (index >= 0 && vis[a[x[i]][index]]) {index--;}if (index < 0) {cout << "-1" << endl;return 0;}vis[a[x[i]][index]] = 1;}}int ans, tmp;ans = tmp = 0;for (int i = 0; i < n; i++) {if (vis[i])tmp++;if (t[i] == 2)tmp--;ans = max(ans, tmp);}cout << ans << endl;for (int i = 0; i < n; i++) {if (t[i] == 1) {if (i == 0) {cout << vis[i];} else {cout << " " << vis[i];}}}cout << endl;return 0;
}

F.Bomb Game 2(概率DP)

题意:

N N N个人站在一条线上,第 i i i个人站在第 i i i个位置。

重复以下操作,直到队伍中只剩下一个人:

1 2 \frac{1}{2} 21的概率将排在队伍最前面的人移走,否则将他们移到队伍的末尾。

对于每个编号为 i = 1 , 2 , … , N i=1,2,…,N i=1,2,,N的人,求 i i i是队列中最后一个人的概率,结果对 998244353 998244353 998244353取模。

分析:

本题为概率DP。设 f i , j f_{i,j} fi,j表示长度为 i i i时,第 j j j个的概率,以 1 , 2 , 3 1,2,3 1,2,3为例,可以列出 f i , 1 = 1 4 f i − 1 , 2 + 1 8 f i − 1 , 1 + 1 8 f i , 1 f_{i,1}=\frac{1}{4}f_{i-1,2}+\frac{1}{8}f_{i-1,1}+\frac{1}{8}f_{i,1} fi,1=41fi1,2+81fi1,1+81fi,1 ,对此式子解方程得 7 8 f i , 1 = 1 4 f i − 1 , 2 + 1 8 f i − 1 , 1 \frac{7}{8}f_{i,1}=\frac{1}{4}f_{i-1,2}+\frac{1}{8}f_{i-1,1} 87fi,1=41fi1,2+81fi1,1,化简得 f i , 1 = 8 7 ( 1 4 f i − 1 , 2 + 1 8 f i − 1 , 1 ) f_{i,1}=\frac{8}{7}(\frac{1}{4}f_{i-1,2}+\frac{1}{8}f_{i-1,1}) fi,1=78(41fi1,2+81fi1,1)

可以发现,对于 f i , 1 f_{i,1} fi,1,其递推公式为 f i , 1 = 2 i 2 i − 1 ( ∑ j = 2 i f i − 1 , i − j + 1 ) f_{i,1}=\frac{2^i}{2^i-1}(\sum\limits_{j=2}^{i}f_{i-1,i-j+1}) fi,1=2i12i(j=2ifi1,ij+1),使用相同方法可以推出 f i , 2 f_{i,2} fi,2的表达式,进一步递推得出转移方程 f i , j = 1 2 f i − 1 , j − 1 + 1 2 f i , j − 1 f_{i,j}=\frac{1}{2}f_{i-1,j-1}+\frac{1}{2}f_{i,j-1} fi,j=21fi1,j1+21fi,j1

代码:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
const int MOD = 998244353;
const int MAXN = 3005;
LL n, F[MAXN][MAXN];LL pow_mod(LL a, LL b, LL p) { //a的b次方求余pLL ret = 1;while (b) {if (b & 1) ret = (ret * a) % p;a = (a * a) % p;b >>= 1;}return ret;
}int main() {cin >> n;F[1][1] = 1;for (int i = 2; i <= n; i++) {int tmp = pow_mod(2, i, MOD);for (int j = i - 1, k = 2; j >= 1; j--, k++) {F[i][1] = (F[i][1] + pow_mod(pow_mod(2, k, MOD), MOD - 2, MOD) * F[i - 1][j] % MOD) % MOD;}F[i][1] = F[i][1] * tmp % MOD * pow_mod(tmp - 1, MOD - 2, MOD) % MOD;for (int j = 2; j <= i; j++) {F[i][j] = (pow_mod(2, MOD - 2, MOD) * F[i - 1][j - 1] % MOD + pow_mod(2, MOD - 2, MOD) * F[i][j - 1] % MOD) % MOD;}}for (int i = 1; i <= n; i++)cout << F[n][i] << " ";cout << endl;return 0;
}

学习交流

以下为学习交流QQ群,群号: 546235402,每周题解完成后都会转发到群中,大家可以加群一起交流做题思路,分享做题技巧,欢迎大家的加入。

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

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

相关文章

「遮天」段德互坑叶凡,期满至宝绿铜下落,老疯子限定回归

Hello,小伙伴们&#xff0c;我是拾荒君。 《遮天》第36集已经更新了&#xff0c;我迫不及待地跟随漫迷的脚步&#xff0c;前往观看。这一集中&#xff0c;叶凡在途中偶遇了一个醉酒的段德。这个段德之前曾沦陷在阴坟之中&#xff0c;如今能够逃出&#xff0c;可见他的实力深不…

ADC模拟/数字转换器

ADC是什么&#xff1f; 全称&#xff1a; Analog-to-Digital Converter &#xff0c;指模拟 / 数字转换器 它是一种电子设备或电路&#xff0c;用于将连续的模拟信号转换为相应的数字形式&#xff0c;以便于数字系统进行处理。模拟信号是连续变化的&#xff0c;而数字系统则处…

sensitive-word 敏感词之 DFA 双数组实现源码学习

拓展阅读 敏感词工具实现思路 DFA 算法讲解 敏感词库优化流程 java 如何实现开箱即用的敏感词控台服务&#xff1f; 各大平台连敏感词库都没有的吗&#xff1f; v0.10.0-脏词分类标签初步支持 v0.11.0-敏感词新特性&#xff1a;忽略无意义的字符&#xff0c;词标签字典 …

分享一个项目——Sambert UI 声音克隆

文章目录 前言一、运行ipynb二、数据标注三、训练四、生成总结 前言 原教程视频 项目链接 运行一个ipynb&#xff0c;就可操作 总共四步 1&#xff09;运行ipynb 2&#xff09;数据标注 3&#xff09;训练 4&#xff09;生成 一、运行ipynb 等运行完毕后&#xff0c;获得该…

全国1900+监测站点空气质量日数据,shp/excel格式,2023年最新数据

基本信息. 数据名称: 全国1900监测站点空气质量监测日数据 数据格式: shpexcel 时间版本&#xff1a;2023年 数据几何类型: 点 数据精度&#xff1a;全国 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1province省…

echarts饼图点击区块事件

loadEchart: function (echartname, data) {option {title: {text: ,subtext: ,left: center},tooltip: {trigger: item,formatter: {c}%},legend: {orient: vertical,left: left,},series: [{name: ,type: pie,radius: 70%,data: [[name>合同额,value>12312312],],labe…

ros2机器人在gazebo中移动方案

原文连接Gazebo - Docs: Moving the robot (gazebosim.org) 很重要的地方&#xff1a;使用虚拟机运行Ubuntu的时候&#xff0c;需要关闭”加速3D图形“的那个选项&#xff0c;否则gazebo无法正常显示。 Moving the robot&#xff08;使用命令移动机器人示例&#xff09; In t…

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性&#xff0c;Spring采用了以下4种关键策略&#xff1a; 1、基于POJO的轻量级和最小侵入性编程&#xff0c;所有东西都是bean&#xff1b; 2、通…

《JVM由浅入深学习【一】 2023-12-19》JVM由简入深学习提升

JVM由浅入深一&#xff08;类加载&#xff09; JVM的类加载1. java运行时是什么时候被加载的&#xff1f;2. JVM类加载过程大致阶段3. 父类与子类初始化各个类型顺序4. 什么是类加载器&#xff1f;6. 双亲委派机制 JVM的类加载 1. java运行时是什么时候被加载的&#xff1f; …

TikTok获客工具开发,这些代码不能少!

随着TikTok的全球影响力不断扩大&#xff0c;越来越多的企业和个人开始将目光投向这个短视频平台。 为了在竞争激烈的市场中脱颖而出&#xff0c;开发一款高效的TikTok获客工具成为了迫切的需求&#xff0c;而在开发过程中&#xff0c;掌握一些基础源代码是必不可少的。 本文…

虾皮ERP系统:提升电商企业管理效率和水平的利器

虾皮ERP&#xff08;Enterprise Resource Planning&#xff0c;企业资源规划&#xff09;系统是电商企业管理业务流程和资源的重要工具。通过整合企业的各种功能模块&#xff0c;如采购、销售、库存和财务等&#xff0c;虾皮ERP系统实现了数据共享和流程自动化&#xff0c;从而…

数据结构学习 Leetcode300最长递增子序列

是我在学习动态规划时遇到的一道题。 题目&#xff1a; 一共有两种解法&#xff1a; 动态规划贪心 二分&#xff08;很难理解&#xff0c;我还没完全懂。。。&#xff09; 解法一&#xff1a;动态规划 思路&#xff1a; 状态&#xff1a;nums的前i个数的最长递增子序列。dp…

量子登月计划!Infleqtion与日本JST研发中性原子量子计算机

​&#xff08;图片来源&#xff1a;网络&#xff09; 美国量子信息公司Infleqtion&#xff0c;已被日本科学技术振兴机构&#xff08;JST&#xff09;选定为“量子登月计划”唯一的外国量子计算合作伙伴。该计划旨在增强日本的量子技术能力&#xff0c;预计将在2050年之前对日…

LDO的工作原理

LDO&#xff0c;全称是低压差线性稳压器。LDO使用的是在线性区域内运行的晶体管或者场效应管。通过调节晶体管或场效应管两端的电压&#xff0c;产生经过调整过的输出电压。 但仅能使用在降压应用中&#xff0c;也就是输出电压必须小于输入电压。 LDO内部基本都是由4大部件构成…

翻译: 负责任的人工智能 Responsible AI

负责任的人工智能指的是以道德、值得信赖和社会负责任的方式开发和使用人工智能。许多开发者、企业和政府都关心这一点&#xff0c;并且一直在进行对话&#xff0c;也在努力确保人工智能的构建和使用是负责任的。由于对负责任的人工智能的所有这些关注和努力&#xff0c;我们在…

苏州和数荣获苏州市软件行业协会“杰出贡献理事单位”

2023年12月14日&#xff0c;苏州市软件行业协会第五届第五次理事会议在金螳螂大厦顺利召开。 苏州市工信局副局长万资平&#xff0c;苏州市工信局大数据处处长卢剑荣&#xff0c;苏州市工信局大数据处丁天龙&#xff0c;江苏省软件行业协会副秘书长夏冰莹&#xff0c;苏州市软…

【SpringBoot快速入门】(2)SpringBoot的配置文件与配置方式详细讲解

之前我们已经学习的Spring、SpringMVC、Mabatis、Maven&#xff0c;详细讲解了Spring、SpringMVC、Mabatis整合SSM的方案和案例&#xff0c;上一节我们学习了SpringBoot的开发步骤、工程构建方法以及工程的快速启动&#xff0c;从这一节开始&#xff0c;我们开始学习SpringBoot…

SpringSecurity深度解析与实践(1)

目录 引言1. SpringSecurity1.1 SpringSecurity简介1.2 SpringSecurity工作原理1.3.特点 2. SpringSecurity的快速使用总结 引言 SpringSecurity作为Spring框架中的一个重要组成部分&#xff0c;扮演着保护应用程序安全的重要角色。本文将深入探讨SpringSecurity的原理、使用方…

logging模块

【 一 】前言 logging 模块是 Python 中用于记录日志信息的标准库模块。通过使用 logging 模块&#xff0c;你可以在应用程序中设置日志记录以追踪代码执行、错误报告等信息。 debug : 打印全部的日志( notset 等同于 debug )info : 打印 info, warning, error, critical 级别的…

Playground AI刚刚推出了它的新宠儿——Playground V2,去试试?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…