CF1452E Two Editorials (思维题,暴力+差分)
题目描述:
给你m个位于[1,n]的区间p,现在有长度为K的区间b和c。设对于区间$p[i]$,定义$a[i]$为$p[i]$分别与b,c相交长度的较大值,现在问区间b和c位于何处时,$\sum p_{i}$最大,输出这个最大值,n,m,K<=2000
好题目,dkr yyds!
暴力怎么搞?暴力枚举b,c的位置,然后O(n)计算,总时间$O(n^{3})$
考虑优化这个暴力,每次只暴力枚举b的位置,并统计所有pi与b相交的长度之和。如果c和pi相交比b大,那么会产生额外贡献,这个额外贡献的值就是c与pi相交长度减掉b与pi相交的长度
考虑每次都把c区间从左到右一格一格挪,挪进第i个区间的长度超过ai时,开始产生贡献,每超过一格,贡献就+1。每挪一次,我们就在c右端点的位置打上+1标记
然而挪多了可能不再增加新贡献,就停止打+1。
挪出去了还会减少贡献,开始打-1,直到贡献减成0,停止打-1
实际操作中也不必真的挪c,也不用记录什么时候减到0,推位置就可以了
怎么推位置呢?分K和xi长度大小讨论,推吧推吧就出来了,细节比较多
+1和-1这些标记都是连续的,差分就行。那么求两次前缀和即可
总时间$O(n^{2})$
1 #include <cstdio>
2 #include <cstring>
3 #include <algorithm>
4 #define N1 2005
5 #define ll long long
6 #define mod 998244353
7 using namespace std;
8
9 int n,m,K;
10 int l[N1],r[N1],a[N1];
11 int adds[N1],addt[N1],subs[N1],subt[N1];
12 ll sum1[N1],sum2[N1];
13
14 void clr()
15 {
16 memset(adds,0,sizeof(adds));
17 memset(addt,0,sizeof(addt));
18 memset(subs,0,sizeof(subs));
19 memset(subt,0,sizeof(subt));
20 memset(sum1,0,sizeof(sum1));
21 memset(sum2,0,sizeof(sum2));
22 }
23
24 int main()
25 {
26 freopen("a.txt","r",stdin);
27 scanf("%d%d%d",&n,&m,&K);
28 for(int i=1;i<=m;i++) scanf("%d%d",&l[i],&r[i]);
29 ll ANS=0,ans=0;
30 for(int i=1;i+K-1<=n;i++)//l~l+K-1
31 {
32 int L=i,R=i+K-1; ans=0;
33 for(int j=1;j<=m;j++)
34 {
35 a[j]=max(0,min(r[j],i+K-1)-max(l[j],i)+1);
36 ans+=a[j];
37 }
38 for(int j=1;j<=m;j++)
39 {
40 ++adds[l[j]+a[j]];
41 ++addt[min(r[j]+1,min(l[j]+K,n+1))]; //addt: +1的结束位置 +1
42 ++subs[max(min(l[j]+K,n+1),r[j]+1)]; //subs: -1start_point
43 ++subt[min(r[j]-a[j]+1+K,n+1)]; //subt: -1end_point +1
44 }
45 ll tmp=0;
46 for(int j=1;j<=n;j++) sum1[j]+=sum1[j-1]+adds[j]-addt[j]-subs[j]+subt[j];
47 for(int j=1;j<=n;j++) sum2[j]=sum2[j-1]+sum1[j], tmp=max(tmp,sum2[j]);
48 ANS=max(ANS,ans+tmp);
49 clr();
50 }
51 printf("%lld\n",ANS);
52 return 0;
53 }
CF1452E Two Editorials (思维题,暴力+差分)的更多相关文章
- 洛谷 P4749 - [CERC2017]Kitchen Knobs(差分转换+dp,思维题)
题面传送门 一道挺有意思的思维题. 首先有一个 obvious 的结论,就是对于每个炉子,要么转到哪里都符合条件,要么存在唯一的最大值.对于转到哪儿都符合条件的炉子我们 duck 不必考虑它,故我们只 ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
- HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)
HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...
- 计蒜客 28319.Interesting Integers-类似斐波那契数列-递推思维题 (Benelux Algorithm Programming Contest 2014 Final ACM-ICPC Asia Training League 暑假第一阶段第二场 I)
I. Interesting Integers 传送门 应该是叫思维题吧,反正敲一下脑壳才知道自己哪里写错了.要敢于暴力. 这个题的题意就是给你一个数,让你逆推出递推的最开始的两个数(假设一开始的两个 ...
- 7月15日考试 题解(链表+状压DP+思维题)
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- cf A. Inna and Pink Pony(思维题)
题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
随机推荐
- time模块以及datetime模块
内容概要 time模块 **timestamp时间戳 **struct_time结构化时间 **format time格式化时间 datetime模块 **date **time **datetime ...
- Spring容器变化之SmartLifecycle,LifecycleProcesso接口详述
Spring Boot run方法启动后相应的服务也随之启动,这个操作很妙.使用者都不用关心什么服务怎么启动,不管多少个服务怎么启动只要符合Spring Boot的启动规则都可以使用其run方法同一启 ...
- WPF + Winform 解决管理员权限下无法拖放文件的问题
wpf,winform混合解决管理员权限无法拖放文件的问题 学习自: https://zhuanlan.zhihu.com/p/343369663 https://zhuanlan.zhihu.com ...
- kubernetes集群之Pod说能不能让我体面的消亡呀?
kubernetes集群之Pod说能不能让我体面的消亡呀? 由于 Pod 所代表的是在集群中节点上运行的进程,当不再需要这些进程时允许其体面地终止. 1.如果 preStop 回调所需要的时间长于默认 ...
- Spring Boot 自定义配置文件异常"expected single matching bean but found 2"
运行环境:Spring Boot 2.5.0, IDEA 2020.3.2 异常详细信息: Injection of resource dependencies failed; nested exce ...
- JVM内存结构的组成、各部分功能作用
一.程序计数器 作用:是记住下一条jvm指令的执行地址 特点: 是线程私有的 不会存在內存溢出 二.虚拟机栈 每个线程运行时所需要的内存,称为虚拟机栈 每个栈由多个栈帧(Frame) 组成,对应着 ...
- git使用小技巧-忽略提交文件设置
前言 我们可以把自己的代码放到github上,但是我们有的文件或者文件夹不想提交到github上,这时候用到一个忽略文件 操作方法 * 在项目根目录创建一个 .gitignore文件 * 打开.git ...
- 攻防世界MISC进阶之签到题
攻防世界MISC进阶之签到题 第一步:分析 第二步:实操 第三步:答案第一步:分析难度系数:1星题目来源: SSCTF-2017题目描述:SSCTF线上选举美男大赛开始了,泰迪拿着他 ...
- bool? int?等可为空的数值类型的运算 三值逻辑
算术运算:(+,-,*,/)时,只要一个为null,则结果为null. 比较运算符: <.>.<= 和 >=,也是如此.如果一个或全部两个操作数都为 null,则结果为 fal ...
- C#特性(属性)Attribute
先明确一个概念: 元数据..NET中元数据是指程序集中的命名空间.类.方法.属性等信息.这些信息是可以通过Reflection读取出来的. 再来看个例子: #define BUG //#define ...