VP Codeforces Round 995 (Div. 3)

news/2025/1/9 16:23:42/文章来源:https://www.cnblogs.com/maburb/p/18662367

A. Preparing for the Olympiad

题意,有两个数组a和b,如果你选了a数组中第i个,那么对手获得b数组第i+1个,求你们得分的差值最大。

直接加上所有ai > bi+1的就行。

点击查看代码
void solve() {int n;std::cin >> n;std::vector<int> a(n), b(n);for (int i = 0; i < n; ++ i) {std::cin >> a[i];}for (int i = 0; i < n; ++ i) {std::cin >> b[i];}int ans = a[n - 1];for (int i = 0; i + 1 < n; ++ i) {ans += std::max(0, a[i] - b[i + 1]);}std::cout << ans << "\n";
}

B. Journey

题意:你要走n米,每天走的米数是一个长度为三的循环a, b, c。求需要多少天走完n米。

按三天一起走看能走几次,剩下的米数直接模拟即可。

点击查看代码
void solve() {i64 n, a, b, c;std::cin >> n >> a >> b >> c;i64 ans = n / (a + b + c) * 3;n %= a + b + c;if (n > 0) {++ ans;n -= a;}if (n > 0) {++ ans;n -= b;}if (n > 0) {++ ans;}std::cout << ans << "\n";
}

C. Preparing for the Exam

题意:有n个题目,你知道k个题的答案,然后有m个试卷,你只有全部答对才算行,每个试卷只有一个题没有在里面。

很明显,k至少要为n - 1,否则完不成任何一个答卷,直接看答卷少的那个题是不是我也没有就行。
如果k等于n,都是1。

点击查看代码
void solve() {int n, m, k;std::cin >> n >> m >> k;std::vector<int> st(n), a(m);for (int i = 0; i < m; ++ i) {std::cin >> a[i];-- a[i];}for (int i = 0; i < k; ++ i) {int x;std::cin >> x;st[x - 1] = 1;}std::string ans;for (int i = 0; i < m; ++ i) {if (k < n - 1) {ans += '0';} else if (k == n - 1) {if (st[a[i]] == 0) {ans += '1';} else {ans += '0';}} else {ans += '1';}}std::cout << ans << "\n";
}

D. Counting Pairs

题意:有n个数,你要减去一对数,使得减去后x <= sum <= y。
对于每个数,它可以选的数是有一个范围的,如果sum - ai >= y, 那么最少减sum - ai - y, 最多减sum - ai - x, 如果sum - ai >= x, 那么最少减0, 最多减sum - ai - x, 否则没有满足的范围。
我是直接离散化后求区间和,因为只能和后面的匹配,所以从后往前做,用树状数组维护。(这样好像很麻烦)

点击查看代码
template <typename T>
struct Fenwick {int n;std::vector<T> a;Fenwick(int n_ = 0) {init(n_);}void init(int n_) {n = n_;a.assign(n + 1, T{});}void add(int x, const T &v) {for (int i = x; i <= n; i += i & -i) {a[i] = a[i] + v;}}T sum(int x) {T ans{};for (int i = x; i ; i -= i & -i) {ans = ans + a[i];}return ans;}T rangeSum(int l, int r) {return sum(r) - sum(l);}
};void solve() {i64 n, x, y;std::cin >> n >> x >> y;std::vector<i64> a(n), b;for (int i = 0; i < n; ++ i) {std::cin >> a[i];b.push_back(a[i]);}i64 sum = std::accumulate(a.begin(), a.end(), 0ll);std::vector<std::pair<i64, i64> > Q(n);for (int i = n - 1; i >= 0; -- i) {if (sum - a[i] >= y) {Q[i].first = sum - a[i] - y;Q[i].second = sum - a[i] - x;b.push_back(Q[i].first);b.push_back(Q[i].second);} else if (sum - a[i] >= x) {Q[i].first = 0;Q[i].second = sum - a[i] - x;b.push_back(Q[i].first);b.push_back(Q[i].second);} else {Q[i] = {-1e18, -1e18};}}std::sort(b.begin(), b.end());b.erase(std::unique(b.begin(), b.end()), b.end());int m = b.size();Fenwick<i64> tr(m);i64 ans = 0;for (int i = n - 1; i >= 0; -- i) {auto & [l, r] = Q[i];if (l == -1e18 || r == -1e18) {continue;}l = std::lower_bound(b.begin(), b.end(), l) - b.begin() + 1;r = std::lower_bound(b.begin(), b.end(), r) - b.begin() + 1;ans += tr.rangeSum(l - 1, r);    	a[i] = std::lower_bound(b.begin(), b.end(), a[i]) - b.begin() + 1;tr.add(a[i], 1);}std::cout << ans << "\n";
}

E. Best Price

题意:n个客人来买东西,对于每个顾客,如果你的商品价格小于等于ai,那么他会直接买,如果大于ai小于等于bi,他会给一个差评但还是会买,否则他就什么都不干。

这题用了线段树,感觉DE这两题都是写的一坨,正解很短,排序然后一个循环就过去了。
首先我们的价格一定是某个a或者某个b,然后维护每个数是否满足条件,然后会买的的人有多少个就行。

点击查看代码
#define ls (u << 1)
#define rs (u << 1 | 1)struct Info {i64 sum, len;
};struct Tag {i64 add;bool exist() {return add != 0;}void clear() {add = 0;}
};struct Node {int l, r;Info info;Tag tag;
};int n, m, P;Info operator + (Info a, Info b) {return {a.sum + b.sum, a.len + b.len};
}Info operator + (Info a, Tag b) {a.sum += b.add * a.len;return a;
}Tag operator + (Tag a, Tag b) {a.add += b.add;return a;
}struct SegmentTree {std::vector<Node> tr;SegmentTree(int n) {tr.assign(n << 2, {});build(1, 1, n);};void pushup(int u) {tr[u].info = tr[ls].info + tr[rs].info;}void pushdown(Node & u, Tag t) {u.info = u.info + t;u.tag = u.tag + t;}void pushdown(int u) {if (tr[u].tag.exist()) {pushdown(tr[ls], tr[u].tag);pushdown(tr[rs], tr[u].tag);tr[u].tag.clear();}}void build(int u, int l, int r) {tr[u] = {l, r};if (l == r) {tr[u].info.len = 1;return;}int mid = l + r >> 1;build(ls, l, mid); build(rs, mid + 1, r);pushup(u);}void modify(int u, int l, int r, Tag t) {if (l <= tr[u].l && tr[u].r <= r) {pushdown(tr[u], t);return;}pushdown(u);int mid = tr[u].l + tr[u].r >> 1;if (l <= mid) {modify(ls, l, r, t);}if (r > mid) {modify(rs, l, r, t);}pushup(u);}Info query(int u, int l, int r) {if (l <= tr[u].l && tr[u].r <= r) {return tr[u].info;}pushdown(u);int mid = tr[u].l + tr[u].r >> 1;if (r <= mid) {return query(ls, l, r);} else if (l > mid) {return query(rs, l, r);}return query(ls, l, r) + query(rs, l, r);}
};void solve() {int n, k;std::cin >> n >> k;std::vector<i64> a(n), b(n);std::vector<i64> nums;for (int i = 0; i < n; ++ i) {std::cin >> a[i];nums.push_back(a[i]);}for (int i = 0; i < n; ++ i) {std::cin >> b[i];nums.push_back(b[i]);}nums.push_back(-1e18);nums.push_back(1e18);std::sort(nums.begin(), nums.end());nums.erase(std::unique(nums.begin(), nums.end()), nums.end());int m = nums.size();auto get = [&](i64 x) -> int {return std::lower_bound(nums.begin(), nums.end(), x) - nums.begin() + 1;};SegmentTree tr1(m), tr2(m);for (int i = 0; i < n; ++ i) {tr1.modify(1, get(a[i]) + 1, get(b[i]), {1});}for (int i = 0; i < n; ++ i) {tr2.modify(1, get(b[i]), get(b[i]), {1});}i64 ans = 0;for (int i = 0; i < n; ++ i) {if (tr1.query(1, get(a[i]), get(a[i])).sum <= k) {ans = std::max(ans, a[i] * (n - tr2.query(1, 1, get(a[i]) - 1).sum));}if (tr1.query(1, get(b[i]), get(b[i])).sum <= k) {ans = std::max(ans, b[i] * (n - tr2.query(1, 1, get(b[i]) - 1).sum));}}std::cout << ans << "\n";
}

F. Joker

赛时想到思路但没写完。。。
待补

G. Snakes
待补

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

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

相关文章

BAPI

预制发票:BAPI_INCOMINGINVOICE_PARKDATA: ls_header TYPE bapi_incinv_create_header,lt_itemdata TYPE TABLE OF bapi_incinv_create_item,ls_itemdata TYPE bapi_incinv_create_item,lt_taxdata TYPE TABLE OF bapi_incinv_create_tax,ls_taxdata TYPE bapi_…

车云远程诊断系统 - DRS

INTEWORK-DRS(Diagnostic Remote-Service System)是由经纬恒润自主研发的一款基于车云远程的诊断解决方案产品,具备整车级或单ECU级的如参数读写、故障读清、例程标定、动作测试和程序升级等传统常见诊断功能,并且支持基于云任务的车端主动诊断如车辆故障主动预警、关键数据…

Kubernetes集群运维生产常见问题解析与解决方案

前言:在Kubernetes集群的日常运维工作中,我们难免会遇到各种各样的问题。这些问题可能涉及到集群的部署、配置、监控、性能优化等多个方面。为了解决这些问题,我们需要不断地学习和积累经验。在这里,我打算收集并整理一些网友曾经提出的问题,并提供相应的解析和解决方案,…

Vue-i18n 多语言中包含特殊字符出现异常Message compilation error: Invalid linked format

异常: 解决方法 方式一: 翻译文件中,将含有特殊字符的字符串使用“”双引号包裹,特殊字符外加花括号{},且用单引号包裹,如“{‘@’}”Message:"也可以通过使用最新版xxxx{@}xxxx扫描右侧二维码获取"方式二: 使用占位符Message:"也可以通过使用最新版xxxx…

使用docker部署的禅道怎么升级

参考 https://www.zentao.net/book/zentaopms/586.html备份数据 本次升级使用的是pvc挂载的禅道数据,使用docker启动的也是一样的 数据是挂载在nfs动态存储盘,进入到pvc目录备份一份即可 为以防万一MySQL数据也是有mysqldump备份一份 使用新镜像启动 修改启动镜像,把镜像从原…

CDS标准视图:催款冻结描述 I_DunningBlockingReasonText

视图名称:催款冻结描述 I_DunningBlockingReasonText 视图类型:基础视图 视图代码:点击查看代码 @EndUserText.label: Dunning Blocking Reason - Text @Analytics.dataExtraction.enabled: true @VDM.viewType: #BASIC @AbapCatalog.sqlViewName: IFIDUNBLREASONT @AbapCat…

六层PCB板是怎么拼出来的?

转载----工程师看海 2021-12-25 08:01 本篇文章主要分享六层PCB板是怎么拼出来的,目录和结构如下: 1. 前言 2. PCB基础框架 3. PCB材料组成 4. PCB叠层设计 5. PCB阻抗计算 整篇文章阅读预计10分钟。 1.前言 求职面试时,大多数人都会在一个问题上纠结:去大公司还是小公司?这…

产品经理必看——产品开发中如何解决任务划分不清?

在产品开发过程中,尤其是敏捷开发模式下,团队通常需要面对多个迭代和版本的开发任务。每个迭代都涉及需求分析、任务分配、开发、测试和发布等多个环节,这对团队的沟通效率和协作能力提出了极高的要求。然而,传统的沟通方式(如邮件、会议)往往难以应对快速迭代的需求,容…

CDS标准视图:催款范围描述 I_DunningAreaText

视图名称:催款范围描述 I_DunningAreaText 视图类型: 视图代码:点击查看代码 @EndUserText.label: Dunning Area - Text @Analytics.dataExtraction.enabled: true @VDM.viewType: #BASIC @AbapCatalog.sqlViewName: IFIDUNAREATEXT @AbapCatalog.preserveKey:true @AbapCat…

深度剖析淘宝 API:《从接入到实战的全流程技术指南》

淘宝详情接口是淘宝开放平台提供的一种API接口,用于获取商品详细信息。 通过调用该接口,可以获取商品的标题、价格、图片、描述、规格等详细信息,帮助卖家和买家更好地了解商品情况。目录淘宝详情接口概述商品信息获取与展示用户体验优化与转化率提升数据监控、分析与优化调…

CDS标准视图:催款范围 I_DunningArea

视图名称:催款范围 I_DunningArea 视图类型:基础 视图代码:点击查看代码 @AccessControl.authorizationCheck: #CHECK //authority check is wrong, for compatibility reasons DCL remains but is always true @EndUserText.label: Dunning Area @Analytics: { dataCatego…

使用一条命令扫描CORS漏洞

命令 使用前请安装如下程序,kali中请指定httpx位置(例如:/root/Desktop/httpx)。 assetfinder httpx rush assetfinder fitbit.com | httpx -threads 300 -follow-redirects -silent | rush -j200 curl -m5 -s -I -H "Origin: evil.com" {} | [[ $(grep -c "…