#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define pii pair<int,int>
#define all(x) x.begin(),x.end()
#define mem(a,b) memset(a,b,sizeof(a))
#define per(i,a,b) for(int i = a;i <= b;++i)
#define rep(i,a,b) for(int i = a;i >= b;--i)
const int maxn = 3e5;
int n = 0,q = 0;
struct node{
int l,r,size;
};
node a[maxn+10];
int tot = 0;
int num[maxn+10];
int times[4][maxn+10];//times[1][j]表示从1-j,fence只被涂一次色的个数
//times[2][j]表示从1-j,fence只被涂一次色的个数,
bool cmp(node x,node y){
return (x.l == y.l) ? (x.r < y.r) : (x.l < y.l);
}
int f(int x,int y){
if(a[x].r < a[y].l){//分类讨论
return (times[1][a[x].r] - times[1][a[x].l-1]) + (times[1][a[y].r] - times[1][a[y].l-1]);
}else{
int res = 0;
res += (times[1][a[y].l-1] - times[1][a[x].l-1] + times[1][max(a[x].r,a[y].r)] -
times[1][min(a[x].r,a[y].r)]);
res += (times[2][min(a[x].r,a[y].r)] - times[2][a[y].l-1]);
return res;
}
}
void solve(){
int ans = 0;
per(i,1,q){
per(j,i+1,q){
int sum = f(i,j);//要删去的点
if(tot - sum >= ans){
ans = tot - sum;
}
}
}
printf("%d\n",ans);
}
int main(){
while(~scanf("%d %d",&n,&q)){
memset(num,0,sizeof(num)); memset(times,0,sizeof(times));
tot = 0;
int r = 0;
a[0].r = a[0].l = 0;
per(i,1,q){
scanf("%d %d",&a[i].l,&a[i].r);
a[i].size = a[i].r - a[i].l + 1;
++num[a[i].l]; --num[a[i].r+1];//差分
}
per(i,1,n){//求每个点的值
num[i] += num[i-1];
}
per(i,1,n){
times[1][i] = times[1][i-1] + ((num[i] == 1) ? 1 : 0 );
}
per(i,1,n){
times[2][i] = times[2][i-1] + ((num[i] == 2) ? 1 : 0 );
}
sort(a+1,a+1+q,cmp);//排序便于分类讨论
tot = a[1].size;//计算总共有多少个点被涂
int l = a[1].r;
per(i,2,q){
if(a[i].l > l){
tot += a[i].size;
l = a[i].r;
}else{
tot += max(0,a[i].r - l);
l = max(a[i].r,l);
}
}
solve();
}
return 0;
}
相关推荐
zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载
芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。
Painting the Fence(离散化)
Painting the Fence(离散化) Main Title 题目描述 Farmer John has devised a brilliant method to paint the long fence next to his barn (think o...
面板数据门槛归回分析,xthreg的安装,xthreg2安装包
我用的是Stata17,数据是不平衡的面板数据,需要用到xthreg2,虽然我找到了xthreg2.ado,但是还需要安装xthreg,因为运行xthreg2需要xthreg包顺带安装的lxthreg.mlib文件。但是!我后来发现还是不行,最后是去买了一个真正能用到xthreg2的lxthreg.mlib文件,才可以运行。
C. Painting the Fence (前缀和 思维)
C. Painting the Fence You have a long fence which consists of n sections. Unfortunately, it is not painted, so you decided to hire q painters to paint it. i-th painter will paint all sections x such ...
卡尔曼滤波与目标追踪
卡尔曼滤波与目标追踪为什么要学卡尔曼滤波?卡尔曼滤波是什么?一些概率论的知识基础卡尔曼滤波完整推导状态估计计算卡尔曼增益预测和更新 卡尔曼滤波部分我打算分三节(三次博客的内容): 卡尔曼滤波与行人状态估计 扩展卡尔曼滤波(EKF)与传感器融合 过程模型,无损卡尔曼滤波(UKF)与车辆状态轨迹 为什么要学卡尔曼滤波? 卡尔曼滤波以及其扩展算法能够应用于目标状态估计,如果这个目标是行人,那么就是行人状态估计(或者说行人追踪),如果这个目标是自身,那么就是车辆自身的追踪(结合一些地图的先验,GPS等数据的话就
【kubernetes】kubernetes kubeadm init 错误了 怎么回退?
因为虚拟机设置问题首先报错:然后我根据文章修改了核数。重启后,查看VIP运行所在机器,发现机器没有变化然后重新执行初始化后面报错了根据提供的信息,问题主要集中在 kubelet 未能成功启动控制平面组件,导致初始化过程超时。以下是可能的原因及相应的排查步骤:原因 1:kubelet 未运行或运行状态异常正如错误提示所指出,kubelet 可能未运行或处于不健康状态。请按照提示执行以下命令检查 kubelet 的状态和服务日志:根据输出结果,判断 kubelet 是否正常运行。后续一大堆错误。
C. Painting the Fence(暴力)
You have a long fence which consists of
卫朋:IPD流程落地之产品开发验证阶段解读
IPD验证阶段
Painting the Barn 2 (最大子矩阵)
测试链接 题面: Farmer John is not good at multitasking. He gets distracted often, making it hard to complete long projects. Currently, he is trying to paint one side of his barn, but he keeps painting smal...
FPGA设计-Vivado的Off-Chip Termination设置问题
经常遇到在FPGA设计时,很多人很迷惑这些关于硬件的终端匹配怎么设置,Vivado的Off-Chip Termination设置问题,这里就详细说一下这个问题。
GaussDB本地安装手册(主备模式)
如果实例状态是Normal,则安装成功。三节点集中式配置文件。
Painting the Fence(差分数组+前缀和)
链接:Painting the Fence 题意: 给一个n,一个q n代表墙的宽度(米),q代表油漆工的人数 给q对数字,分别代表第i个油漆工刷墙的范围 l[i]~r[i] 只能选q-2个油漆工,问最多可以刷多少米的墙 解析: 用差分数组算出所有油漆工的刷墙效果,遍历每个油漆工(i),减少他刷的范围(-1),用前缀和计算他的范围内有多少个等于1 遍历每个油漆工(j),(i!=j...
Android 12 大屏时底下显示任务栏以及虚拟按键靠右问题
Android 12 点大屏时,底下导航栏变成显示任务栏,虚拟按键靠右的分析以及修改
CodeForces1132 C.Painting the Fence (前缀和+枚举)
C.Painting the Fence You have a long fence which consists of n sections. Unfortunately, it is not painted, so you decided to hire q painters to paint it. i-th painter will paint all sections x such th...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
(CodeForces) C. Painting the Fence
传送门 解题思路:就是枚举放弃的两个区间,直接是肯定爆炸的,但是我们差分和前缀和预处理一下就行了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=1e4 + 5; int n,q,sum[maxn],num[maxn]; int l[maxn],r[maxn]; i...
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
CF 1132 problem_C:Painting the Fence(暴力枚举+差分处理)
题意是给出一段长为n的序列,给出q个连续子序列,让你选择其中q-2个子序列,求覆盖的最大范围是多大。 一开始想贪心,每次选最长的,然后判断一下覆盖相交的情况。但题目没有要求你覆盖的范围一定是连续的,不要求连续的话子序列选择情况和判断比较复杂,所以贪心思路就直接丢弃了。一看只要选q-2个,2个不选,那就枚举哪两个2不选。 然后就被怎么处理卡住了,首先想到用差分算出每一个点被覆盖多少次,然后枚举两个子...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
Educational Codeforces Round 61 (Rated for Div. 2)-C. Painting the Fence 前缀和优化
题意就是给出多个区间,要求去掉两个区间,使得剩下的区间覆盖范围最大。 当然比赛的时候还是没能做出来,不得不佩服大佬的各种姿势。 当时我想的是用线段树维护区间和,然后用单点判0,维护区间间断个数。然后打到一半,就发现想法有问题。 这道题正解就是简单的前缀和,或者DP。 我为了更加深入理解,两种方法都试了试。 前缀和版本: 由于题目给的范围是5000,明显支持N^2,于...
1132C - Painting the Fence(思维+差分)
https://codeforces.com/problemset/problem/1132/C 思路:可以发现n^2枚举。 对于去除第一个人后序列的状态,可以O1用差分修改出来。然后On累加。 去除第二个人后序列的答案怎么算。可以发现去除第二个人后对其所在的[l,r]区间内还剩涂了一次的状态去除掉就好了。所以前缀和统计一下只有一个覆盖情况的。 差分维护好扫一遍处理好前缀,然后On枚举。 #include<iostream> #include<vector> #inclu
Educational Codeforces Round 61 (Rated for Div. 2) C. Painting the Fence(思维+前缀和)
题目链接:http://codeforces.com/contest/1132/problem/C 题意是有n个点,m条线段,问用m-2条线段最多可以覆盖多少个点。 思路就是暴力枚举,但是虽然数据范围不大,但是太暴力也还是过不了的,所以我们可以用前缀和去优化把查询的操作变成O(1)的查询,我们首先记录一下这n个点有多少个点被覆盖了(变量为tot),然后m^2去...
Educational Codeforces #61 (Div. 2) C. Painting the Fence (前缀和)
题目: https://codeforces.com/problemset/problem/1132/C 参考了http://www.pianshen.com/article/4932273340/ 这位巨巨的代码 思路非常清晰,没什么好说的了 自己太菜了 疯狂wa #include<cstdio> #include<cstring> #include<cmath&...
常用算法代码模板与题单 | A - 基础算法(更新于2026.10.7)
这篇文档其实是我自己学习路上的一份“复习笔记”。之前看了不少教程,零零散散记了一堆代码片段和小技巧,时间久了就容易忘,翻起来也麻烦。所以干脆花时间整理了一下,把常用的模板、容易踩的坑、还有一些个人觉得挺实用的小技巧都归到了一起。 如果你也在学类似的东西,或许能帮你省下一些翻找的时间;如果有哪里写得不清楚或不对,也欢迎随时指正交流。 希望这份整理也能对你有一点点帮助~ ✨
AtCoder Weekday Consest 赛情分析及题解 | 汇总(更新至 AWC 0129 Beta)
我把自己练习过的AtCoder AWC题目都整理了一下。虽然网站上有许多高手的解法,但因为我自己也是初学者,所以只用了比较容易理解的方法来分析和解答。如果你也在学习的话,希望这些内容能对你有一点帮助。
洛谷 P5542 Painting the barn(二维差分 模板)
题目大意: 小明对着墙壁画矩形,问小明画的矩形里面重叠k次的区域面积是多大。 解题思路: 首先,我们可以想到对画的一片区域进行+1操作,最后扫描一遍画的区域,若某个点的和为k我们就记录下来。 首先,我们可以试一下naive的+1,发现复杂多太高。这时候引入一个新结构叫做二维差分,二维差分再配合二维前缀和就可以达到O(n^2)的更新一片区域。关于二维差分,这里有一个解释: https://...
【基础算法】前缀和、差分
前缀和与差分的核心思想都是都是用空间换时间的做法。
Painting the Barn(二维前缀和,二维差分)
Painting the Barn(二维前缀和,二维差分) 题目传送门 Painting the Barn 题目大意 在一个二维平面上,给你n个矩阵,每个矩阵给你左下角和右上角的点,代表矩阵覆盖的面 求被覆盖了k次的面积 思路 二维前缀和, vis[i][j]+=vis[i−1][j]+vis[i][j−1]−vis[i−1][j−1];vis[i][j]+=vis[i-1][j]+vis[i][j-1]-vis[i-1][j-1];vis[i][j]+=vis[i−1][j]+vis[i][j−1]−vi
3404



被折叠的 条评论
为什么被折叠?



