[补题记录] Atcoder Beginner Contest 323(E、F)

news2024/11/28 14:44:37

URL:https://atcoder.jp/contests/abc323

目录

E

Problem/题意

Thought/思路

Code/代码

F

Problem/题意

 Thought/思路

Code/代码


E

Problem/题意

有 N 首歌曲,每首歌曲时长为 Ti。每次随机播放一首歌曲,问在 X + 0.5 这一时刻,播放第一首歌的概率是多少。

Thought/思路

如果我们能求出从 X - T[1] + 1 到 X 的每一时刻开始时,恰好播放完上一首歌的概率,那么就可以将这 T[1] 个时刻加起来,再除以 N,就是从 X 开始,播放第一首歌的概率。

因此,dp[i] 表示,第 i 秒开始时,上一首歌结束,下一首歌准备开始播放的概率。

当 i > T[j] 时,就可以把当前第 j 首歌播放的概率累加到 dp[i] 上。

Code/代码

#include "bits/stdc++.h"

#define int long long

const int mod = 998244353;

int n, x, t[10007], dp[10007];

int ksm(int a, int b) {
	int res = 1;
	while (b > 0) {
		if (b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}

signed main() {
	std::cin >> n >> x;
	for (int i = 1; i <= n; ++ i) std::cin >> t[i];

	dp[0] = 1;
	for (int i = 1; i <= x; ++ i) {
		int cnt = 0;
		for (int j = 1; j <= n; ++ j) {
			if (i >= t[j]) {
				cnt ++;
				dp[i] = (dp[i] + ksm(n, mod - 2) * dp[i - t[j]] % mod) % mod;
			}
		}
	}

	int s = (x - t[1] + 1 < 0 ? 0 : x - t[1] + 1); // 从 s 开始放
	int ans = 0;
	for (int i = s; i <= x; ++ i) {
		ans = (ans + dp[i]) % mod;
	}
	ans = ans * ksm(n, mod - 2) % mod;

	std::cout << ans;
}

F

Problem/题意

给出三个点的坐标,点 A 表示人、点 B 表示一个箱子、点 C 表示目标点,现在要将箱子推到目标点:

  • 可以将箱子向上、下、左、右推,但人和箱子必须同一朝向且人在箱子之后;
  • 每走一格代价 + 1;
  • 问最小的代价是多少;

 Thought/思路

From:https://zhuanlan.zhihu.com/p/660042738

对于第二句话,我们可以将目标点 C 都换到上半轴,那么 A 只需要移动到 (0, -1)、(-1, 0)、(1, 0) 即可去到推箱子的最佳位置。

详见代码。

Code/代码

#include "bits/stdc++.h"

#define int long long

struct node {
	int x, y;
	node operator - (const node &t) const {
		return node({x - t.x, y - t.y});
	}
}a, b, c;

void reverseAC() {
	c.x = -c.x;
	c.y = -c.y;
	a.x = -a.x;
	a.y = -a.y;
}

signed main() {
	std::cin >> a.x >> a.y;
	std::cin >> b.x >> b.y;
	std::cin >> c.x >> c.y;

	// 以 b 为中心
	a.x -= b.x;
	a.y -= b.y;
	c.x -= b.x;
	c.y -= b.y;
	b.x = b.y = 0;

	int ans = std::abs(c.x) + std::abs(c.y); // 先算 B 到 C 的代价

	if (c.x < 0 and c.y < 0) { // 将 C 偏移到右上方
		reverseAC();
	}
	if (c.x > 0 and c.y > 0) { // A 移动到 -1, 0 或 0, -1
		node p1 = a - node({-1, 0}), p2 = a - node({0, -1});
		// +2 是因为移动箱子时,需要换方向
		ans += std::min(std::abs(p1.x) + std::abs(p1.y), std::abs(p2.x) + std::abs(p2.y)) + 2;
		std::cout << ans;
		return 0;
	}

	if (c.x > 0 and c.y < 0) {
		reverseAC();
	}
	if (c.x < 0 and c.y > 0) {
		node p1 = a - node({1, 0}), p2 = a - node({0, -1});
		ans += std::min(std::abs(p1.x) + std::abs(p1.y), std::abs(p2.x) + std::abs(p2.y)) + 2;
		std::cout << ans;
		return 0;
	}

	if (c.x == 0) { // C 在轴上
		if (c.y < 0) { // 将 C 偏移到正半轴
			reverseAC();
		}
		if (a.x == 0 and a.y > 0) { // A 也在正半轴上,需要绕回负半轴
			ans += 2;
		}
		node p = a - node({0, -1});
		ans += std::abs(p.x) + std::abs(p.y);
		std::cout << ans;
		return 0;
	}
	if (c.y == 0) {
		if (c.x < 0) {
			reverseAC();
		}
		if (a.y == 0 and a.x > 0) {
			ans += 2;
		}
		node p = a - node({-1, 0});
		ans += std::abs(p.x) + std::abs(p.y);
		std::cout << ans;
		return 0;
	}
}

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

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

相关文章

ict在线测试设备功能如何作用与芯片静态功耗测试,提升性能和稳定性

在芯片的众多测试项目中芯片的功耗测试可谓重中之重&#xff0c;因为芯片的功耗不仅关系着芯片的整体工作性能也对芯片的效率有着非常重大的影响。芯片的功耗测试包括动态功耗和静态功耗。 芯片静态功耗是什么? 芯片的静态功耗也叫做芯片静态电流&#xff0c;它是芯片测试中的…

时尚品牌为什么需要软文推广?

时尚行业一直以其创造力引领着全球消费市场的发展&#xff0c;随着时尚品牌市场的竞争愈发激烈&#xff0c;时尚行业的营销方式必须更具战略性&#xff0c;才能在众多品牌中脱颖而出&#xff0c;在最近几年&#xff0c;软文营销一直是时尚行业常用的营销手段之一&#xff0c;为…

二维码安全技术交底如何做

安全技术交底是一项非常重要的安全管理工作&#xff0c;对于保障施工现场的安全和人员的生命安全具有不可替代的作用。二维码安全技术交底可以逐级落实、责任到人、有据可查、是目前最方便、实用的交底方式&#xff0c;下面我们可以参考利用凡尔码搭建建筑管理系统来管理安全技…

【力扣每日一题】2023.10.8 股票价格波动

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 这道题是程序设计题&#xff0c;要我们实现一个类&#xff0c;一共是四个功能&#xff0c;第一个是给一个时间戳和价格&#xff0c;表示该…

C++11 Qt QFutureWatcher lambda

目录 Lambda 介绍 【QT】Qt之QFutureWatcher 简述 传参&#xff1a; 还可以使用 QProgressDialog 作为阻堵 函数&#xff0c;变成同步&#xff1b; 完成后&#xff0c;关闭&#xff1b; MyQProgressDialog 效果&#xff1a; Lambda 介绍 Lambda 函数也叫匿名函数&…

Hadoop使用hdfs指令查看hdfs目录的根目录显示被拒

背景 分布式部署hadoop,服务机只有namenode节点,主机包含其他所有节点 主机关机后,没有停止所有节点,导致服务机namenode继续保存 再次开启主机hadoop,使用hdfs查看hdfs根目录的时候显示访问被拒 解决方案 1.主机再次开启hadoop并继续执行关闭 2.服务器再次开启hadoop并继…

强化学习入门

简介 什么是强化学习 强化学习是一种机器学习方法&#xff0c;它可以帮助计算机学会在不断尝试和经验积累中做出最佳决策。用通俗的方式来说&#xff0c;强化学习就像是训练一只宠物狗学会做任务一样。 想象一只狗要学会取球。一开始&#xff0c;它可能不知道该怎么做&#…

回顾Softing 2023工博之旅精彩瞬间

2023年9月23日&#xff0c;为期5天的第23届中国国际工业博览会&#xff08;CIIF&#xff09;于上海国家会展中心圆满落幕。Softing作为PROFIBUS创始人之一&#xff0c;德国工业4.0的领军企业之一&#xff0c;在本次展会上向大家呈现了众多工业自动化及IT网络方面的领先产品及方…

深度学习笔记之优化算法(四)Nesterov动量方法的简单认识

机器学习笔记之优化算法——Nesterov动量方法的简单认识 引言回顾&#xff1a;梯度下降法与动量法Nesterov动量法Nesterov动量法的算法过程描述总结 引言 上一节对动量法进行了简单认识&#xff0c;本节将介绍 Nesterov \text{Nesterov} Nesterov动量方法。 回顾&#xff1a;…

在SOLIDWORKS搭建一个简易的履带式机器人

文章目录 前言一、构建模型基本单元二、搭建车体模块三.插入轮子4.构建履带 前言 趁着十一假期&#xff0c;在solidworks中搭建了一个履带式机器人小车&#xff0c;计划将其应用在gazebo中完成多机器人编队的仿真。 一、构建模型基本单元 构建底板&#xff08;a面&#xff09…

第六讲:构建类的事件(下)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

.some方法、vh、多列布局、DNS域名解析过程、空页面文字内容渲染

nodeEndTime.some((time) > !!time&#xff09; 这个方法主要用来判断nodeEndTime这个数组中是否有至少一个非假值的元素。它会遍历 nodeEndTime 数组中的每个元素&#xff0c;如果至少有一个元素是真值&#xff08;不是 null、undefined、0、false 或空字符串等假值&#x…

Flutter学习笔记

此篇文章用来记录学习Flutter 和 Dart 相关知识 零.Dart基本数据类型 Dart 是一种静态类型的编程语言&#xff0c;它提供了一系列基本数据类型&#xff0c;用于存储和操作不同种类的数据。以下是 Dart 中的一些基本数据类型以及它们的详细介绍&#xff1a; 1. 整数类型&#…

python学习——各种模块argparse、os、sys、time、re、sched、函数体

python学习——各种模块argparse、os、sys、time、re、sched、函数体 各种模块学习1. python脚本2. argparse模块&#xff1a;撰写帮助文档&#xff0c;命令行参数定义等3. os模块&#xff1a;用于文件/目录路径或名字的获取4. sys模块&#xff1a;用于对命令行参数进行获取处理…

车企“新四化”之——安全高效的电动汽车和混动汽车高压测量方案

一 背景 汽车行业正经历着“新四化”从概念向实际转化的过程&#xff08;新四化即电动化、智能化、网络化、共享化&#xff09;&#xff0c;各大车企也将调整发展布局&#xff0c;而混合动力及电动汽车自然就成为了主要关注点。 对于混合动力汽车&#xff08;PHEV&#xff09…

ReentrantLock锁与AQS的联系

请先看——————>AQS的简单说明 ReentrantLock底层是基于AQS实现的&#xff0c;在并发编程中可以实现公平锁和非公平锁来对同步资源进行控制&#xff0c;默认是非公平锁&#xff0c;并且是可重入锁。 1.ReentrantLock的体系关联结构 2.构造方法 可以发现ReentrantLock…

Spring Security——基于前后端分离项目的使用(安全框架)

1.简介 Spring Security有一个过滤器链&#xff0c;也就是说原本在拦截器和过滤器里面做的事都可以用Spring Security完成&#xff0c;比如验证token和将用户id存入线程上下文局部变量等等。 入门案例 创建项目并勾选依赖 最基本的要这两个依赖即可 新建一个Controller层的…

Dubbo v Spring Cloud:两大技术栈如何选型?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 提到微服务开源框架&#xff0c;不可不说的是 Dubbo 和 Spring Cloud&#xff0c;这两大框架应该是大家最熟悉的微服务解决方案&#xff0c;也是面试中的热点。今天我们梳理下 Dubbo 和 Spring Cloud 的应用特性&…

win10 U盘安装教程

一年内&#xff0c;第三次重装电脑了&#xff0c;我必须要写一份教程了。从制作U盘开始&#xff0c;到重装系统&#xff0c;全部都记录一下&#xff0c;以备不时之需。 首先&#xff0c;找一个U盘&#xff0c;如果U盘内有需要文件&#xff0c;请自行备份&#xff0c;因为这个U盘…

“双节”出游,VR智慧景区让你的旅游更具“心价比”

中秋国庆八天长假落幕&#xff0c;全国旅游消费市场人气旺、活力足&#xff0c;黄金周旅游消费的变化凝结成为新的文旅趋势&#xff0c;更多的游客会选择人少、景美、价优的错峰游&#xff0c;为了享受品质游玩&#xff0c;VR全景展示为众多游客带来旅游新体验&#xff0c;让你…