Atcoder ABC382

C

在回转寿司店里面有n个标为 A i A_i Ai人和m个标为 B j B_j Bj寿司。
每个寿司依次从1 2 3 … n人面前经过,当 B j ≥ A i B_j \geq A_i BjAi时i人就拿走寿司。
问:每个寿司被谁吃了?


对寿司进行排序,依次从1 2 3 … n人来看每个人怎么拿。
排序之后会发现,每个人一定会把最前面的那些满足条件的寿司拿走。然后下一个人接着拿。因此可以用一个指针指向当前拿到的寿司位置。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;int n, m;
const int N = 200020;
struct Item {int x, i;
} b[N];
int a[N];
int ans[N];int main(){//freopen("in.txt", "r", stdin);cin >> n >> m;for (int i = 1; i <= n; ++ i) {cin >> a[i];}for (int i = 1; i <= m; ++ i) {int t;cin >> t;b[i] = {t, i};}sort(b + 1, b + m + 1, [&](Item x, Item y){return x.x > y.x;});memset(ans, -1, sizeof(ans));int j = 0;for(int i = 1; i <= n; ++ i) {while(j + 1 <= m && b[j + 1].x >= a[i]) {ans[b[j + 1].i] = i;++ j;}}for (int i = 1; i <= m; ++ i) {printf("%d\n", ans[i]);}return 0;
}

D

搜索数列。写的时候注意剪枝。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;vector<vi> ans;
int n, m;
int path[12];void go(int pos, int cur) {if (cur > m)return;path[pos] = cur;if (pos == n - 1) {vi temp(path, path + n);ans.push_back(temp);return;}int lmt = cur + (n - pos - 1) * 10;if (lmt > m)return;for (int i = 10; i <= 20; ++i) {go(pos + 1, cur + i);}
}int main(){//freopen("in.txt", "r", stdin);cin >> n >> m;for (int a0 = 1; a0 <= min(m, 20); ++a0) {go(0, a0);}printf("%d\n", ans.size());for (auto vi : ans) {for (int x : vi) {printf("%d ", x);}printf("\n");}return 0;
}

E

有无数个包,每个包里面都有N张卡片,每张卡片是稀有卡的概率是 p i p_i pi
一次只能打开一个包,然后拿出所有卡片抽卡。
问:抽到S张稀有卡片或以上,需要打开包的数量的数学期望。


经典数学期望模型。
这个题有两个子问题。第一个子问题是每次打开一个包,在单独一个包内抽到 t t t张稀有卡的分布。
第二个子问题是已知离散分布 t t t,求 ∑ i = 1 k t i ≥ S \sum^k_{i=1} t_i \geq S i=1ktiS时次数k的期望。

第一问可以用经典dp来做:设 g ( i , j ) g(i,j) g(i,j)为抽到第i张卡片时有j张稀有卡的概率
g ( i , j ) = g ( i − 1 , j ) ∗ q i + g ( i − 1 , j ) ∗ p i g(i,j)=g(i-1,j)*q_i+g(i-1,j)*p_i g(i,j)=g(i1,j)qi+g(i1,j)pi 其中 q i q_i qi是非稀有的概率 = ( 1 − p i ) =(1-p_i) =(1pi)
最后的分布概率 p ( t ) = g ( n , t ) p(t)=g(n,t) p(t)=g(n,t)
第二问是数学期望求法中常见的技巧:
E ( X ) E(X) E(X)代表总和能拿到 X X X或以上的数量稀有卡片需要的期望次数。这里不是exactly X次,而用了 s ≥ X s \geq X sX
E ( x ) = ( E ( 0 ) p ( x ) + E ( 1 ) p ( x − 1 ) + . . + E ( x ) p ( 0 ) ) + 1 E(x)=(E(0)p(x)+E(1)p(x-1)+..+E(x)p(0))+1 E(x)=(E(0)p(x)+E(1)p(x1)+..+E(x)p(0))+1
注意:这里将每一项期望都拆开成和式就会发现公式成立
移项可得
( 1 − p ( 0 ) ) E ( x ) = 1 + ∑ i = 0 x − 1 E ( i ) p ( x − i ) (1-p(0))E(x)=1+\sum_{i=0}^{x-1} E(i)p(x-i) (1p(0))E(x)=1+i=0x1E(i)p(xi)
依次递推即可求得

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;double f[5005][5005];
double g[5005];
double p[5005];
int n, X;int main(){//freopen("in.txt", "r", stdin);cin >> n >> X;for (int i = 1; i <= n; ++i) {int t;cin >> t;p[i] = double(t) / 100;}f[0][0] = 1;for (int i = 1; i <= n; ++i) {f[i][0] = f[i - 1][0] * (1 - p[i]);for (int j = 1; j <= X; ++j) {f[i][j] = f[i - 1][j - 1] * p[i] + f[i - 1][j] * (1 - p[i]);}}double r = 1 - f[n][0];g[0] = 0;for (int i = 1; i <= X; ++i) {double s = 0;for (int j = 1; j < i; ++j) {s += g[i - j] * f[n][j];}g[i] = (1 + s) / r;}printf("%.12f\n", g[X]);return 0;
}

F

线段树
从下往上排序,落下来的线段要检查[l,r]上最大值,然后落在最大值+1的行上。
然后这条线段对[l,r]区间更新最大值+1

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;int h, w, n;
const int N = 200020;
struct Item {int r, c, l, i;
} a[N];
int ans[N];#define lu (u * 2) 
#define ru (u * 2 + 1)
struct SegTree {struct Node {int l, r, mx, mark;} tr[N << 2];void up(int u) {tr[u].mx = max(tr[lu].mx, tr[ru].mx);}void down(int u) {if (tr[u].mark) {tr[lu].mark = tr[ru].mark = tr[u].mark;tr[lu].mx = tr[ru].mx = tr[u].mx;tr[u].mark = 0;}}void build(int l, int r, int u) {tr[u].l = l, tr[u].r = r;if(l == r) {tr[u].mx = 0;return;}int mi = (l + r) / 2;build(l, mi, lu);build(mi + 1, r, ru);}void update(int l, int r, int u, int val) {if (l <= tr[u].l && tr[u].r <= r) {tr[u].mark = 1;tr[u].mx = val;return;}down(u);int mi = (tr[u].l + tr[u].r) / 2;if (l <= mi) {update(l, r, lu, val);} if (r > mi) {update(l, r, ru, val);}up(u);}int query(int l, int r, int u) {if (l <= tr[u].l && tr[u].r <= r) {return tr[u].mx;}down(u);int rt = 0;int mi = (tr[u].l + tr[u].r) / 2;if (l <= mi) {rt = max(rt, query(l, r, lu));} if (r > mi) {rt = max(rt, query(l, r, ru));}return rt;}
} st;int main(){//freopen("in.txt", "r", stdin);cin >> h >> w >> n;for (int i = 1; i <= n; ++i) {int r, c, l;cin >> r >> c >> l;a[i] = { r, c, l, i };}sort(a + 1, a + n + 1, [](Item x, Item y) {return x.r > y.r;});st.build(1, w, 1);for (int i = 1; i <= n; ++i) {int l = a[i].c, r = a[i].c + a[i].l - 1;int max_h = st.query(l, r, 1);int cur_h = max_h + 1;ans[a[i].i] = cur_h;st.update(l, r, 1, cur_h);}for (int i = 1; i <= n; ++i) {printf("%d\n", h + 1 - ans[i]);}return 0;
}

G

分情况写的太麻烦了,有一个dfs的思路还不错,TODO

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

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

相关文章

常见限流算法详细解析

常见限流算法详细解析 分布式系统中&#xff0c;由于接口API无法控制上游调用方的行为&#xff0c;因此当瞬时请求量突增时&#xff0c;会导致服务器占用过多资源&#xff0c;发生响应速度降低、超时、乃至宕机&#xff0c;甚至引发雪崩造成整个系统不可用。 限流&#xff0c;…

图片上传HTML

alioss sky:jwt:# 设置jwt签名加密时使用的秘钥admin-secret-key: itcast# 设置jwt过期时间admin-ttl: 7200000# 设置前端传递过来的令牌名称admin-token-name: tokenalioss:endpoint: ${sky.alioss.endpoint}access-key-id: ${sky.alioss.access-key-id}access-key-secret: $…

C# 抽奖程序winform示例

C# 抽奖程序winform示例 using System; using System.Collections.Generic; using System.Linq;public class LotterySimulator {private Random random new Random();public List<string> GenerateWinners(int numberOfWinners, int totalParticipants){List<strin…

java+ssm+mysql高校学籍管理系统

项目介绍&#xff1a; 使用javassmmysql开发的高校学籍管理系统&#xff0c;系统包含超级管理员&#xff0c;系统管理员、教师、学生角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff08;可以新增管理员&#xff09;&#xff1b;专业管理&…

Couchbase 简介

Couchbase 是一款分布式 NoSQL 数据库&#xff0c;主要用于现代应用程序中高性能、高可扩展性和灵活的数据存储需求。它结合了文档存储和键值存储的特性&#xff0c;为开发者提供了一种高效的数据库解决方案。 Couchbase 的特点 高性能&#xff1a; 支持内存优先的架构&#x…

LeetCode题练习与总结:132 模式--456

一、题目描述 给你一个整数数组 nums &#xff0c;数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成&#xff0c;并同时满足&#xff1a;i < j < k 和 nums[i] < nums[k] < nums[j] 。 如果 nums 中存在 132 模式的子序列 &a…

(5)JS-Clipper2之PolyNode

1. 描述 PolyNodes是被封装在PolyTree的容器中&#xff0c;同时提供了一个数据结构来代表由Excute()方法返回的多边形轮廓中的父子关系。 一个PolyNode对象代表一个多边形&#xff1b;它的“IsHole”属性表明它是一个“外轮廓”还是一个“内孔”&#xff0c;PolyNodes可能包含…

为什么 JavaScript 中的回调函数未按顺序执行?

在 JavaScript 中&#xff0c;回调函数未按顺序执行的原因&#xff0c;通常是由于 JavaScript 的 异步非阻塞 执行模型。JavaScript 在执行异步操作时&#xff0c;会将回调函数推入 任务队列&#xff0c;并不会立即执行这些回调函数&#xff0c;而是要等到主线程执行完同步任务…

Java项目实战II基于微信小程序的无中介租房系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速&#xff0c;租房市场日益繁荣&a…

图像处理插件:让小程序焕发视觉新生的秘密武器

在小程序开发中&#xff0c;图像处理是一个重要的环节&#xff0c;它涉及到图片的加载、显示、裁剪、压缩等多个方面。为了简化这一复杂过程&#xff0c;开发者通常会使用图像处理插件。这些插件不仅提供了丰富的图像处理功能&#xff0c;还封装了底层的图像操作逻辑&#xff0…

MATLAB稀疏感知图像和体数据恢复的系统对象研究

稀疏感知图像和体数据恢复是一种用于恢复损坏、噪声或不完整的图像和体数据的技术。它利用了信号的稀疏性&#xff0c;即信号在某种基础下可以用较少的非零系数表示&#xff0c;从而实现高质量的恢复。 在进行稀疏感知图像和体数据恢复的研究时&#xff0c;需要定义一些系统对…

安卓调试环境搭建

前言 前段时间电脑重装了系统&#xff0c;最近准备调试一个apk&#xff0c;没想到装环境的过程并不顺利&#xff0c;很让人火大&#xff0c;于是记录一下。 反编译工具下载 下载apktool.bat和apktool.jar 官网地址&#xff1a;https://ibotpeaches.github.io/Apktool/install…

【工具】音频文件格式转换工具

找开源资源、下载测试不同库的效果&#xff0c;然后找音频、下载音频、编写代码、测试转换、流程通畅。写一个工具花的时间越来越多了&#xff01;这个 5 天 这个工具是一个音频文件格式转换工具&#xff0c;支持对 mp3.aac.wav.caf.flac.ircam.mp2.mpeg.oga.opus.pcm.ra.spx.…

在ARM Linux应用层下使用SPI驱动WS2812

文章目录 1、前言2、结果展示3、接线4、SPI驱动WS2812原理4.1、0码要发送的字节4.2、1码要发送的字节4.3、SPI时钟频率 5、点亮RGB5.1、亮绿灯5.2、亮红灯5.3、亮蓝灯5.4、完整程序 6、RGB呼吸灯7、总结 1、前言 事情是这样的&#xff0c;前段时间&#xff0c;写了一个基于RK3…

BERT:用于语言理解的深度双向 Transformer 的预训练。

文章目录 0. 摘要1. 介绍2. 相关工作2.1 无监督的基于特征的方法2.3 无监督微调方法2.3 从受监督数据中迁移学习 3. BERT3.1 预训练 BERT3.2 微调 BERT 4. 实验4.1 GLUE4.2 SQuAD v1.14.3 SQuAD v2.04.4 SWAG 5. 消融研究5.1 预训练任务的影响5.2 模型大小的影响5.3 使用 BERT …

在算网云平台云端在线部署stable diffusion (0基础小白超详细教程)

Stable Diffusion无疑是AIGC领域中的AI绘画利器&#xff0c;具有以下显著优势&#xff1a; 1、开源性质&#xff0c;支持本地部署 2、能够实现对图像生成过程的精确控制 虽然SD在使用上有很多的有点&#xff0c;但缺点也是不言而喻的&#xff0c;由于AI绘画的整个过程以及现…

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式&#xff0c;通过链式调用将请求逐一传递给一系列处理器&#xff0c;直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者&#xff0c;允许动态地将请求处理职责分配给多个对象&#xff0c;支持请求的灵活传…

macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表

以下是 macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表&#xff1a; 符号按键名称描述⌘Command (Cmd)常用的功能键&#xff0c;用于执行大多数快捷操作。⌥Option (Alt)Option 键&#xff0c;常用于辅助操作和特殊字符输入。⇧ShiftShift 键&#xff0c;常用…

el-table一键选择全部行,切换分页后无法勾选

el-table一键全选&#xff0c;分页的完美支持 问题背景尝试解决存在问题问题分析 解决方案改进思路如下具体代码实现如下 问题背景 现在有个需求&#xff0c;一个表格有若干条数据(假设数量大于20&#xff0c;每页10条&#xff0c;保证有2个以上分页即可)。 现在需要在表格上方…

【55 Pandas+Pyecharts | 实习僧网Python岗位招聘数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 调整部分城市名称 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 招聘数量前20岗位3.2 各城市招聘数量3…