ABC334 A-F

打的很懒的一场B卡了D看不懂题卡了F没看完题目理解错题意了,状态好差XD

UNIQUE VISION Programming Contest 2023 Christmas (AtCoder Beginner Contest 334) - AtCoder

A - Christmas Present

题意:

给出两个数B, G问哪个大

题解:

凑数语法题

void solve()
{
	int x, y;
	scanf("%d%d", &x, &y);
	if (x > y)printf("Bat\n");
	else printf("Glove\n");
}

B - Christmas Trees

题意:

有一根坐标轴,你需要在所有A+kM(k为任意整数)坐标种圣诞树,问区间L, R内有多少颗树

题解:

首先我们把L, R都减去A,问题就变成了在所有kM点种树,然后我们把L, R同时加上tM(t为整数)使L, R都大于0,然后答案就为 r / m - (l - 1) / m

void solve()
{
	LL a, m, l, r;
	scanf("%lld%lld%lld%lld", &a, &m, &l, &r);
	l -= a, r -= a;
	if (l < 0)
	{
		LL t = (-l + m - 1) / m + 1;
		l += t * m, r += t * m;
	}
	printf("%lld\n", r / m - (l - 1) / m);
}

C - Socks 2

题意:

你有n双袜子,第i双袜子的颜色为i,有k双袜子缺了一只袜子,你需要重新组合这些袜子(可能会多余一只),使得每对袜子的颜色差值和最小

题解:

首先n没用,成对的袜子没必要拆开。若m为偶数,显然答案为\sum A_{i}-A_{i-1},i为2到n的所有偶数;若m为奇数,则先删掉一只变成偶数然后就是\sum A_{i}-A_{i-1}了,然后只有在删除第奇数个袜子时会更优,具体写法见代码...

int a[N], l[N], r[N];
void solve()
{
	int n, m;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= m; ++i)
		scanf("%d", &a[i]);
	if (m & 1)
	{
		for (int i = 2; i <= m; ++i)
			l[i] = l[i - 2] + a[i] - a[i - 1];
		for (int i = m - 1; i >= 1; --i)
			r[i] = r[i + 2] + a[i + 1] - a[i];
		int ans = INF;
		for (int i = 1; i <= m; i += 2)
			ans = min(ans, l[i - 1] + r[i + 1]);
		printf("%d\n", ans);
	}
	else
	{
		int ans = 0;
		for (int i = 1; i <= m; i += 2)
			ans += a[i + 1] - a[i];
		printf("%d\n", ans);
	}
}

D - Reindeer and Sleigh

题意:

有N个雪橇,第i个雪橇需要Ri只驯鹿才能拉动,给出Q个询问,每个询问给出一个Xi表示询问Xi只驯鹿最多能拉动几只雪橇

题解:

肯定优先拉需要驯鹿数少的雪橇。排序,前缀和,对每个询问二分求最多拉多少个撬即可

LL s[N];
void solve()
{
	int n, q;
	scanf("%d%d", &n, &q);
	for (int i = 1; i <= n; ++i)
		scanf("%lld", &s[i]);
	sort(s + 1, s + 1 + n);
	for (int i = 1; i <= n; ++i)
		s[i] += s[i - 1];
	while (q--)
	{
		LL x;
		scanf("%lld", &x);
		printf("%d\n", upper_bound(s + 1, s + 1 + n, x) - s - 1);
	}
}

E - Christmas Color Grid 1

题意:

给出一个H*W的字符串表,'.'表示红格子,'#'表示绿格子,当两个同种颜色的格子相邻(周围四格)时则他们联通。问我们随机把一个红格子染成绿格子之后联通块的期望数量(MOD998244353)

题解:

期望数量为 \sum连通块数量/红格子数量。先对修改前的图做并查集把相邻的同色块加入同一集合,对于染绿每个红点之后的连通块数量为红点周围四格的集合数量+1(手玩一下很容易得到)

PII p[N][N];
char mp[N][N];
int dx[] = { 0,0,1,-1 }, dy[] = { 1,-1,0,0 };
PII find(int x, int y)
{
	if (p[x][y] != make_pair(x, y))
		p[x][y] = find(p[x][y].first, p[x][y].second);
	return p[x][y];
}
void link(int ax, int ay, int bx, int by)
{
	PII pa = find(ax, ay);
	p[pa.first][pa.second] = find(bx, by);
}
LL qpow(LL x, LL y)
{
	x %= MOD;
	if (y == 0)return 1;
	if (y & 1)
		return qpow(x * x, y >> 1) * x % MOD;
	return qpow(x * x, y >> 1) % MOD;
}
void solve()
{
	int n, m, ans = 0;
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i)
	{
		getchar();
		for (int j = 1; j <= m; ++j)
		{
			mp[i][j] = getchar();
			p[i][j] = { i,j };
		}
	}
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			if (mp[i][j] == mp[i][j + 1])
				link(i, j, i, j + 1);
			if (mp[i][j] == mp[i + 1][j])
				link(i, j, i + 1, j);
		}
	}
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			if (mp[i][j] == '#' && find(i, j) == make_pair(i, j))
				++ans;
		}
	}
	LL sum = 0, cnt = 0;
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			if (mp[i][j] == '.')
			{
				set<PII>st;
				for (int k = 0; k < 4; ++k)
				{
					int tx = i + dx[k], ty = j + dy[k];
					if (mp[tx][ty] == '#')
						st.insert(find(tx, ty));
				}
				++cnt, sum += ans - st.size() + 1;
			}
		}
	}
	printf("%lld\n", sum % MOD * qpow(cnt, MOD - 2) % MOD);
}

F - Christmas Present 2

题意:

圣诞老人需要给N个人依次配送礼物,他的家位于SX, SY,需要配送的N个位置为Xi, Yi,他每次出门最多能一次性携带K件礼物,中途可以回家补货,送完还需要回家。问送完所有礼物的最短路径

题解:

DP,dp[i]表示给第i个送完礼物之后回家再到达第i+1个位置的最短路径,s[i]为不回家连着走到第i个位置的路径长度,记f(i)为从家到第i个人家的距离,则状态转移为dp[i]=min(dp[u]+s[i]-s[u+1]+f(i)+f(i+1)) (f(i)+f(i+1))为回家再到第i+1个人家的距离,可以用线段树或者单调队列优化(这里写的单调队列优化)

但是我的代码测样例3在小数点后第6位开始不相等了,交上去就直接对了,不知道为什么...

typedef long double LD;
PII operator-(PII x, PII y)//平面几何点都存向量会更便于计算
{
	return { x.first - y.first,x.second - y.second };
}
LD abs(PII x)
{
	return sqrt((LD)x.first * x.first + (LD)x.second * x.second);
}
PII a[N];
LD s[N], dp[N];
deque<int>q;
LD fun(int u, int v)
{
	return dp[u] + s[v] - s[u + 1];
}
void solve()
{
	int n, k;
	scanf("%d%d", &n, &k);
	for (int i = 0; i <= n; ++i)
		scanf("%d%d", &a[i].first, &a[i].second);
	for (int i = 1; i <= n; ++i)
		s[i] = s[i - 1] + abs(a[i] - a[i - 1]);
	a[n + 1] = a[0], dp[0] = s[1];
	for (int i = 1; i <= n; ++i)
	{
		while (q.size() && i - q.front() > k)
			q.pop_front();
		while (q.size() && fun(q.back(), i) > dp[i - 1])
			q.pop_back();
		q.push_back(i - 1);
		dp[i] = fun(q.front(), i) + abs(a[i] - a[0]) + abs(a[i + 1] - a[0]);
	}
	printf("%.10Lf\n", dp[n]);
}

赛时做的好慢最后F读假题了然后题意读对之后没时间写了,G没看...

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

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

相关文章

nodejs微信小程序+python+PHP计算机网络在线考试系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

【数据结构入门精讲 | 第九篇】考研408排序算法专项练习(一)

前面几篇文章介绍的是排序算法&#xff0c;现在让我们开始排序算法的专项练习。 目录 判断题选择题填空题1.插入排序2.另类选择排序3.冒泡排序4.快速查找第K大元 判断题 1.希尔排序是稳定的算法。&#xff08;错&#xff09; 解析&#xff1a;稳定性是指如果两个元素在排序前后…

A Philosophy of Software Design 学习笔记

前言 高耦合&#xff0c;低内聚&#xff0c;降低复杂度&#xff1a;在软件迭代中&#xff0c;不关注软件系统结构&#xff0c;导致软件复杂度累加&#xff0c;软件缺乏系统设计&#xff0c;模块混乱&#xff0c;一旦需求增加、修改或者优化&#xff0c;改变的代价无法评估&…

LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

docker笔记2-docker 容器

docker 容器的运行 docker run 镜像名&#xff1a;版本标签&#xff1a; 创建 启动容器 docker run 镜像名 &#xff0c;如果镜像不存在&#xff0c;则会在线下载镜像。 注意事项&#xff1a; 容器内的进程必须处于前台运行状态&#xff0c;不能后台&#xff08;守护进程运行…

单片机的RTC获取网络时间

理解网络同步校准RTC的原理需要考虑NTP、SNTP、RTC这三个关键组件的作用和交互。下面详细解释这个过程&#xff1a; 1. NTP&#xff08;Network Time Protocol&#xff09;&#xff1a; 协议目的&#xff1a;NTP是用于同步计算机和设备时钟的协议。它通过在网络上与时间服务器通…

小白入门之安装Navicat

重生之我在大四学JAVA 第四章 安装Navicat (mysql可视化工具) 这里Navicat是15版本&#xff0c;不是最新版&#xff0c;有新版强迫症的自行百度 傻瓜式安装一直下一步就行 完成后切记不要打开&#xff0c;不要打开&#xff0c;不要打开 可以打开刚刚安装的navicat了 切…

【XML】TinyXML 详解(二):接口详解

【C】郭老二博文之&#xff1a;C目录 1、XML测试文件&#xff08;laoer.xml&#xff09; <?xml version"1.0" standalone"no" ?> <!-- Hello World !--> <root><child name"childName" id"1"><c_child…

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机&#xff0c;如下图竖屏的手机&#xff0c;如下图 一、引入 大家对重力感应应该都不陌生&#xff0c;之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念&#xff0c;根据手机的晃动来给实体…

无需改动现有网络,企业高速远程访问内网Linux服务器

某企业为数据治理工具盒厂商&#xff0c;帮助客户摆脱数据问题困扰、轻松使用数据&#xff0c;使得客户可以把更多精力投入至数据应用及业务赋能&#xff0c;让数据充分发挥其作为生产要素的作用。 目前&#xff0c;该企业在北京、南京、西安、武汉等地均设有产研中心&#xff…

体验一下 CodeGPT 插件

体验一下 CodeGPT 插件 0. 背景1. CodeGPT 插件安装2. CodeGPT 插件基本配置3. (可选)CodeGPT 插件预制提示词原始配置(英文)4. CodeGPT 插件预制提示词配置(中文)5. 简单验证一下 0. 背景 看到B站Up主 “wwwzhouhui” 一个关于 CodeGPT 的视频&#xff0c;感觉挺有意思&#…

DQL-基本查询

概念&#xff1a; 1&#xff0c;数据库管理系统一个重要功能就是数据查询&#xff0c;数据查询不应只是简单返回数据库中存储的数据&#xff0c;还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示 2&#xff0c;MySQL提供了功能强大、灵活的语句来实现这些操作 3…

docker笔记1-安装与基础命令

docker的用途&#xff1a; 可以把应用程序代码及运行依赖环境打包成镜像&#xff0c;作为交付介质&#xff0c;在各种环境部署。可以将镜像&#xff08;image&#xff09;启动成容器&#xff08;container&#xff09;&#xff0c;并提供多容器的生命周期进行管理&#xff08;…

Dash中 callback 5

app.callback 在Dash中&#xff0c;app.callback 被用于创建交互性应用程序&#xff0c;它用于定义一个回调函数&#xff0c;该函数在应用程序中发生特定事件时被触发。回调函数可以修改应用程序的布局或更新图表等内容&#xff0c;从而实现动态交互。 下面是一个简单的 app.…

BUG记录 | 使用阿里云OSS实现文件上传后,得到的url无法在浏览器中打开

项目背景 SpringBoot的项目&#xff0c;使用阿里云对象存储OSS对项目中的文件进行存储&#xff0c;所需文件也会通过IDEA中由官方Demo改编而成的工具类作为接口&#xff0c;调用接口后上传 问题描述 使用阿里云OSS实现文件上传后&#xff0c;通过postman测试得到的url无法在…

Python量化投资——金融数据最佳实践: 使用qteasy+tushare搭建本地金融数据仓库并定期批量更新【附源码】

用qteasytushare实现金融数据本地化存储及访问 目的什么是qteasy什么是tushare为什么要本地化使用qteasy创建本地数据仓库qteasy支持的几种本地化仓库类型配置本地数据仓库配置tushare 的API token 配置本地数据源 —— 用MySQL数据库作为本地数据源下载金融历史数据 数据的定期…

SQL分类

SQL分类 DDL 查询库 查询表 创建表 修改表 DML 添加数据 修改数据 删除数据 DQL 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 DCL 管理用户 管理权限 数据类型 数值类型 字符串类型 日期类型

Go自定义PriorityQueue优先队列使用Heap堆

题目 分析 每次找最大的&#xff0c;pop出来 然后折半&#xff0c;再丢进去 go写法 go如果想用heap&#xff0c;要实现less\len\swap\push\pop 但可以偷懒&#xff0c;用sort.IntSlice,已经实现了less\len\swap 但由于目前是大根堆&#xff0c;要重写一下less 因此&#xff…

讲座思考 | 周志华教授:新型机器学习神经元模型的探索

12月22日&#xff0c;有幸听了南京大学周志华教授题为“新型机器学习神经元模型的探索”的讲座。现场热闹非凡&#xff0c;大家像追星一样拿着“西瓜书”找周教授签名。周教授讲得依旧循循善诱&#xff0c;由浅入深&#xff0c;听得我很入迷&#xff0c;故作此记。 周教授首先就…

Python 运算符 算数运算符 关系运算符 赋值运算符 逻辑运算 (逻辑运算符的优先级) 位运算 成员运算符 身份运算符 运算符的优先级

1 运算符算数运算符关系运算符赋值运算符逻辑运算逻辑运算符的优先级 位运算布尔运算符移位运算符 成员运算符身份运算符运算符的优先级 运算符 算数运算符 四则运算 - * / a 8 b 9 print(ab)#与Java类似 也可以进行字符串的连接 注意:字符串数字字符串 不存在会抛出异常…