*题解:P3586 [POI 2015 R2] 物流 Logistics

news/2025/11/17 21:46:06/文章来源:https://www.cnblogs.com/yuyc/p/19234521

原题链接

解析

考虑能每次选 \(c\) 个正数进行 \(s\)\(-1\) 操作的充要条件是什么。首先由于只进行 \(s\) 次操作,可以将 \(> s\) 的数视为 \(s\)。然后求和,如果和 \(< c \cdot s\),那么必定无法操作,反之是否必定可以操作呢?我们尝试将这 \(n\) 个数合并成 \(c\) 个,如果都能合并出 \(s\) 就说明可以,一个朴素的想法是将每个数分解成其数值个元素,直接一个一个堆起来,就像这样:

c = 3,s = 5
5 4 2
5 4 2
3 5 1
3 5 4
3 5 4

由于我们已经将 \(> s\) 数视为 \(s\),所以不可能出现同一层中的两个元素属于同一个数的情况。

于是问题就变为如何求 \(\le s\) 部分的和。考虑开两个权值树状数组,一个存数值和,一个存出现次数,要求的其实就是 \(sum + cnt \cdot s\),其中 \(sum\)\(\le s\) 的数的和,\(cnt\)\(> s\) 的数的个数。

时间复杂度 \(O(m\log n)\)

代码

#include <bits/stdc++.h>
#define ls(p) ((p) << 1)
#define rs(p) (((p) << 1) | 1)
#define mid ((l + r) >> 1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N = 1e6 + 5,M = 5e5,mod = 998244353;
int a[N];
ll cnt[N];
ll sum[N];
struct Query{char op;int x,y;
}q[N];
void add(ll b[],int x,int k){for(;x < N;x += x & -x){b[x] += k;}
}
ll ask(ll b[],int x){ll res = 0;for(;x;x -= x & -x){res += b[x];}return res;
}
int read(){int a = 1,x = 0;char ch = getchar();while(ch > '9' || ch < '0'){if(ch == '-') a = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0';ch = getchar();}return a * x;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);vector<int> v;v.push_back(0);int n,m;n = read(),m = read();for(int i=1;i<=m;i++){q[i].op = getchar();q[i].x = read();q[i].y = read();v.push_back(q[i].y);}sort(v.begin(),v.end());v.erase(unique(v.begin(),v.end()),v.end());for(int i=1;i<=n;i++){add(cnt,1,1);}for(int i=1;i<=m;i++){if(q[i].op == 'U'){int p = lower_bound(v.begin(),v.end(),a[q[i].x]) - v.begin() + 1;add(sum,p,-a[q[i].x]);add(cnt,p,-1);a[q[i].x] = q[i].y;p = lower_bound(v.begin(),v.end(),a[q[i].x]) - v.begin() + 1;add(sum,p,a[q[i].x]);add(cnt,p,1);}else{int p = lower_bound(v.begin(),v.end(),q[i].y) - v.begin() + 1;ll x = ask(sum,p) + (n - ask(cnt,p)) * q[i].y;if(x >= 1ll * q[i].x * q[i].y){cout<<"TAK\n";}else{cout<<"NIE\n";}}}return 0;
}

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

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

相关文章

欢迎关注我的公众号和B站

最近一年很少写博客。随着AI火热,AI+搜索、AI+知识库日渐成熟,很多问题都能通过AI+搜索快速找到解决方法,个人博客已经式微。以后我这个博客估计很少更新,但不是完全放弃,可能偶尔会更新一些内容,如果我想更新的…

week3 作业

week3 作业(一)最优子结构与递归方程 设 dp [i][j] 表示从顶部走到第 i 行第 j 列的最大路径和。最优子结构表现为:dp [i][j] = max (dp [i-1][j-1], dp [i-1][j]) + 三角形第 i 行第 j 列数值(j>0 且 j<i)…

hive mybatis是否支持动态SQL

Hive MyBatis 支持动态 SQL。MyBatis 提供了动态 SQL 功能,可以根据不同的条件生成不同的 SQL 语句。在 Hive MyBatis 中,可以使用 <if> 标签来实现动态 SQL 的编写。例如,当需要根据某个字段的值来动态生成查…

一类将度数变为 1/2 的优化建图 笔记

有以下特点:儿子数和复杂度强相关,不同子树的本质相同,按照一定的顺序做 / 判定,答案不变。 1. P6326 Shopping 不知道为啥很快就会了只有一个儿子的情况(实则对树形背包不熟练导致的),就是强制选一个自己的物品…

2025.11.17模拟赛

赛时,调动的挺好吧 赛时看4题推了推,都没有推出来 然后回去稳定了一下心态 看T1,终于会了,然后大概在2h30min切掉了 然后去推T3,大概在还有1个多小时会了正解做法,但是决策单调性优化这一块之前没写过,不知道该…

11/17

今天Java弄了下前端,后端,数据库连接,但注册界面一直没弄好,只能登,不能注册

英语_阅读_Electric cars_待读

In the early 20th century, the worlds transportation system relied heavily on steam-powered trains and horse-drawn carriages. 在20世纪早期,世界的交通系统严重依赖蒸汽火车和马车。 These modes of transpo…

linux 下中文字体安装.ttf 格式

把下载的字体 复制到 linux系统的目录下 命令: sudo cp your-font.ttf /usr/local/share/fonts/ 宋体URL: https://files.cnblogs.com/files/blogs/773702/simsun.7z?t=1763385354&download=true 免费的 WenQua…

2025 年锚具厂家 TOP 企业品牌推荐排行榜,预应力锚具 / 五孔锚具 / 低回缩锚具 / 张拉锚具 / 固定端锚具 / 桥梁预应力锚具 / 边坡锚具公司推荐!

引言在建筑行业尤其是桥梁建设、市政工程等领域,锚具作为关键部件,其质量优劣直接关乎工程的安全性与耐久性。当下锚具市场品牌众多,产品质量参差不齐,这给采购方和工程建设者们带来了诸多困扰。部分小品牌锚具,因…

2025 年锚具厂家 TOP 企业品牌推荐排行榜,桥梁伸缩缝 / 道路伸缩缝 / 梳齿板伸缩缝推荐这十家公司!

引言在建筑与桥梁工程领域,伸缩缝扮演着至关重要的角色。它能有效应对因温度变化、地基沉降等因素导致的结构伸缩变形,确保建筑和桥梁的稳定性与安全性。然而,当前伸缩缝行业面临诸多问题。一方面,市场上品牌众多、…

2025 年锚具厂家 TOP 企业品牌推荐排行榜,橡胶支座 / 桥梁支座 / 国标支座 / 滑板支座 / 固定支座 / 弹性支座 / 活动铰支座 / 盆式支座 / 减震支座 / 缓冲支座公司推荐!

引言在当今的建筑与工程领域,支座作为关键部件,其质量与性能直接关系到工程的稳定性与安全性。然而,随着市场的不断发展,支座品牌与厂家如雨后春笋般涌现,这使得采购方与工程团队在选择时面临诸多困扰。一方面,不…

软件工程学习日志2025.11.17

今天的学习重点是设计模式中的享元模式,结合“围棋软件”的实验需求,完成了从需求分析、代码实现到类图绘制的全流程。过程中在Mermaid类图生成上踩了不少坑,最终摸索出兼容且逻辑正确的方案,特此记录整个过程,方…

CSP2025 游记 + whk 期中

非常的 fvvJ 用了大概 50 min 把所有题都写了,开始对拍后两题,拍了几万组没啥问题。没检查 T1、T2,开始瞎玩终端(学习了 while、let、declare 的用法)。估分 400。 S T1 卡了我 1 h,后面发现想复杂了。T2 先用 1…

论文速读 | 2025年11月

Object-Centric Latent Action LearningAAAI 2026 dunnolab

2025-11-17

CF Problem - 839C - Codeforces(DFS)(1500)(期望) 求期望dp 即求1的(所有孩子的期望+1)的和,除以孩子数量 #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 9982…

九成九新自用C#入门文档

C#九成九新个人用入门指南前言 如果你是第一次学习编程,那么,可能会非常困难,如果你曾经学过面向对象的编程语言,那么可能会非常轻松 C:你干脆直接提我名字得了吧 在我们正式学习之前,我需要讲几个比较基础的知识…

商场展览车生产厂家十大排名及选购推荐,航利通达网红礼盒拖车公司,透明车厢生产厂家,车载展柜公司十大权威排行,商场展览车公司十大排名

商场展览车生产厂家十大排名及选购推荐,航利通达网红礼盒拖车公司,透明车厢生产厂家,车载展柜公司十大权威排行,商场展览车公司十大排名商场展览车生产厂家十大排名及选购推荐,航利通达网红礼盒拖车公司,透明车厢…

Flask+Celery+Blueprint

遇到1个问题:任务写入了broker,但是celery执行任务时包拒绝访问句柄6错误 解决方法:pip install gevent celery -A my_shop.task.tasks worker -l info -P gevent

102302109-胡贝贝-作业3

作业① (1)实验内容及结果 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。实现单线程和多线程的方式爬取。 –务必控制总页数(学号尾数2位)、总下载的图片…

halt linux

在 Linux 系统中,halt 命令用于关机系统。它会立即终止所有正在运行的进程,并将系统状态设置为“关机”状态。 常用用法: sudo halt 或者: sudo poweroff 这两个命令的作用是相同的,但 poweroff 会更优雅地处理系…