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贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
随机推荐
- Solution -「NOI 2008」「洛谷 P3980」志愿者招募
\(\mathcal{Description}\) Link. 一项持续 \(n\) 天的任务,第 \(i\) 天需要至少 \(a_i\) 人工作.还有 \(m\) 种雇佣方式,第 \(i\) ...
- 【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题
问题描述 App Service for Linux 资源创建完成后,通过FTP方式把 .jar包(logdemo.jar)包上传到 /site/wwwroot/ 文件夹后,在App Service的 ...
- kubernetes之数据管理
volume emptyDir [machangwei@mcwk8s-master ~]$ kubectl apply -f mcwVolume1.yml #部署emptydir pod/produc ...
- KafKa——学习笔记
学习时间:2020年02月03日10:03:41 官网地址 http://kafka.apache.org/intro.html kafka:消息队列介绍: 近两年发展速度很快.从1.0.0版本发布就 ...
- 利用信号量semaphore实现两个进程读写同步 Linux C
这篇帖子主要是记录一下自己使用信号量遇到的坑. 首先是需求:创建两个进程A,B.A往buffer中写,B读.两个进程利用命名管道进行通信,并实现读写同步.即A写完后通知B读,B读完后通知A写. 如果A ...
- [LeetCode]1450. 在既定时间做作业的学生人数
给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间. 已知,第 i 名学生在 startTime[i] 时开始写作业并于 ...
- 记录一次有趣misc
标题:2017_Dating_in_Singapore题目来源:XCTF 3rd-HITB CTF-2017题目描述:01081522291516170310172431-05060713202726 ...
- 一文带你秒懂商业智能BI的价值所在!
首先,先来跟大家解释说明一下什么是商业智能?这应该也是刚刚接触商业智能的小伙伴最想要了解的问题,平时刷微博.看头条时都会看到数据可视化.数据分析和大数据等词汇时,但是对它们如同熟悉的陌生人一般,那么这 ...
- Blazor和Vue对比学习:说在开始前
1.Vue:现代前端三大框架之一(Vue/React/Angualr),基于HTML.CSS和JavaScript,2014年正式对外发布,目前已发展到3.X版本.值得说道的是,Vue的创始人作者是华 ...
- 【C# .Net GC】sos.dll 混合模式调试(托管调试+本机)
当我们想使用本机调试器(如CDB或WinDBG)调试.NET应用程序时,我们必须在本机调试器和托管世界之间使用"桥",因为本机调试器本身并不理解托管代码.它是本机调试器.为了提供这 ...