news 2026/5/1 9:31:39

打卡信奥刷题(2825)用C++实现信奥题 P4231 三步必杀

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(2825)用C++实现信奥题 P4231 三步必杀

P4231 三步必杀

题目背景

(三)旧都

离开狭窄的洞穴,眼前豁然开朗。

天空飘着不寻常的雪花。

一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音。

这是由被人们厌恶的鬼族和其他妖怪们组成的小社会,一片其乐融融的景象。

诶,不远处突然出现了一些密密麻麻的小点,好像大颗粒扬尘一样。

离得近了点,终于看清楚了。

长着角的鬼们聚在一起,围观着另一只鬼的表演。

那”扬尘”,其实都是弹幕。

勇仪的招数之一,三步之内,所到之处弹幕云集,几乎没有生存可能。

为了强化这一技能,勇仪将对着一排柱子进行攻击。

旧地狱的柱子虽然无比坚固,但保险起见还是先要了解一下这样一套攻击对柱子有多少损伤,顺带也能检验练习的效果。

勇仪决定和其它鬼们商量商量…

“我知道妖怪之山的河童一族有一种叫做计算机的神奇道具,说不定可以借来用用”,萃香说道。

于是旧地狱的鬼族就决定请河城荷取来帮忙了。

“要记录【所有柱子的损伤程度】吗”,荷取问道。

经过进一步的询问,荷取发现他们仅仅需要【所有攻击都完成后】柱子的损伤程度。

任务了解地差不多了,荷取将其中的重要部分提取了出来,记录在了她的工作笔记本上:

(记录的内容见题目描述)

那么实验就这样开始了。

在惊天动地的碰撞声中,勇仪每完成一轮攻击,荷取都忠实地记录下对每根柱子产生的伤害。而此时勇仪就在旁边等待着记录完成,然后再进行下一轮的攻击。

地面上,天色渐晚。

“不想在这里留到深夜啊,不然就回不了家了”,荷取这样想着,手中依然在重复地向计算机中输入新产生的信息。

“真的必须一次一次地记录下每轮攻击对每个柱子产生的伤害吗?有没有更高效的方法?”这一念头在荷取的心中闪过…

(后续剧情在题解中,接下来请看T3)

题目描述

N NN个柱子排成一排,一开始每个柱子损伤度为0 00

接下来勇仪会进行M MM次攻击,每次攻击可以用4 44个参数l , r , s , e l,r,s,el,r,s,e来描述:

表示这次攻击作用范围为第l ll个到第r rr个之间所有的柱子(包含l , r l,rl,r),对第一个柱子的伤害为s ss,对最后一个柱子的伤害为e ee

攻击产生的伤害值是一个等差数列。若l = 1 , r = 5 , s = 2 , e = 10 l=1,r=5,s=2,e=10l=1,r=5,s=2,e=10,则对第1 ∼ 5 1 \sim 515个柱子分别产生2 , 4 , 6 , 8 , 10 2,4,6,8,102,4,6,8,10的伤害。

鬼族们需要的是所有攻击完成之后每个柱子的损伤度。

输入格式

第一行2 22个整数N , M N,MN,M,用空格隔开,下同。

接下来M MM行,每行4 44个整数l , r , s , e l,r,s,el,r,s,e,含义见题目描述。

数据保证对每个柱子产生的每次伤害值都是整数。

输出格式

由于输出数据可能过大无法全部输出,为了确保你真的能维护所有柱子的损伤度,只要输出它们的异或和与最大值即可。

(异或和就是所有数字按位异或起来的值。)

(异或运算符在 c++ 里为^。)

输入输出样例 #1

输入 #1

5 2 1 5 2 10 2 4 1 1

输出 #1

3 10

输入输出样例 #2

输入 #2

6 2 1 5 2 10 2 4 1 1

输出 #2

3 10

说明/提示

样例解释:

样例1 11

第一次攻击产生的伤害:2 , 4 , 6 , 8 , 10 2,4,6,8,102,4,6,8,10

第二次攻击产生的伤害:0 , 1 , 1 , 1 , 0 0,1,1,1,00,1,1,1,0

所有攻击结束后每个柱子的损伤程度:2 , 5 , 7 , 9 , 10 2,5,7,9,102,5,7,9,10

输出异或和与最大值,就是3 , 10 3,103,10

样例2 22

没有打到第六根柱子,答案不变

数据范围:

本题满分为100 100100分,下面是4 44个子任务。( x / y ) (x/y)(x/y)表示(得分/测试点数量)。

妖精级( 18 / 3 ) (18/3)(18/3)1 ≤ n , m ≤ 1000 1 \le n,m \le 10001n,m1000。这种工作即使像妖精一样玩玩闹闹也能完成吧?

河童级( 10 / 1 ) (10/1)(10/1)s = e s=es=e,这可以代替我工作吗?

天狗级( 20 / 4 ) (20/4)(20/4)1 ≤ n , m ≤ 10 5 1 \le n,m \le 10^51n,m105。小打小闹不再可行了呢。

鬼神级( 52 / 2 ) (52/2)(52/2):没有特殊限制。要真正开始思考了。

以上四部分数据不相交。

对于全部的数据:1 ≤ n ≤ 10 7 1\le n\le 10^71n1071 ≤ m ≤ 3 × 10 5 1\le m\le 3\times 10^51m3×1051 ≤ l < r ≤ n 1\le l < r \le n1l<rn.

所有输入输出数据以及柱子受损伤程度始终在[ 0 , 9 × 10 18 ] [0,9 \times 10^{18}][0,9×1018]范围内。

提示:

由于种种原因,时间限制可能会比较紧,c++ 选手请不要使用cin读入数据。

by orangebird。

C++实现

#include<bits/stdc++.h>usingnamespacestd;usingll=int64_t;constintN=1e7+5;intn,m;ll c[N];intmain(){scanf("%d%d",&n,&m);ll a=0,b=0,s,t,d,Max=0,Xor=0;for(intL,R;m--;){scanf("%d%d%lld%lld",&L,&R,&s,&t);d=(t-s)/(R-L);c[L]+=s,c[L+1]+=d-s;c[R+1]-=d+t,c[R+2]+=t;}for(inti=1;i<=n;++i)Max=max(Max,a+=(b+=c[i])),Xor^=a;printf("%lld %lld",Xor,Max);return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 15:07:38

C++中std::string的弱点:你可能未曾注意到的缺点

C 中 std::string 的弱点&#xff1a;你可能未曾注意到的缺点 std::string 是 C 中使用最广泛的字符串类型&#xff0c;几乎所有现代 C 代码都会大量用到它。但它并不是完美的&#xff0c;在实际工程中&#xff0c;尤其在性能敏感、内存严格控制、多线程高并发、跨平台等场景下…

作者头像 李华
网站建设 2026/5/1 8:03:23

别让老板等:千人并发下的实时大屏极致性能优化实录

第一章&#xff1a;别指望 MySQL 了&#xff1a;CEO 驾驶舱的架构“生死局”你一定遇到过这种场景&#xff1a;老板坐在宽大的办公桌后&#xff0c;指着墙上那块 100 寸的显示屏&#xff0c;眉头紧锁。“为什么我看个实时销售额要转圈转五秒&#xff1f;这就是你们搞了一个月的…

作者头像 李华
网站建设 2026/5/1 0:01:35

一文彻底搞懂RAG

文章目录前言一、RAG到底是什么&#xff1f;官方定义人话版二、RAG的完整流程&#xff1a;四步走&#xff0c;一步都不能少第一步&#xff1a;文档加载&#xff08;把资料喂进去&#xff09;第二步&#xff1a;文本分块&#xff08;切片&#xff09;第三步&#xff1a;向量化&a…

作者头像 李华
网站建设 2026/4/27 20:22:17

编写摄影交友APP,根据用户摄影水平,摄影类型(风景,人物,美食),匹配同城摄影爱好者,推荐摄影地点,活动,共享摄影作品,技巧,提升摄影能力。

1. 实际应用场景描述场景小张是一名摄影爱好者&#xff0c;喜欢拍摄风景和人文题材&#xff0c;但身边缺少同好交流。他希望找到一个平台能够&#xff1a;- 匹配同城摄影爱好者- 发现新的拍摄地点- 参加线下摄影活动- 分享作品并获得反馈- 学习摄影技巧痛点- 缺乏交流圈子 → 难…

作者头像 李华