[luogu5464]缩小社交圈
不难证明合法当且仅当满足一下两个条件:
1.每一个位置最多被覆盖两次(无环)
2.将选择的区间按左端点从小到大排序,对于每一个左端点,其之前的区间的最大右端点不小于其(连通)
(关于第一个的充分性证明可以考虑一个极小环,将环上区间排序即矛盾)
就将所有区间按照左端点从小到大排序,然后依次选择
更具体的,用$f_{i,j}$表示仅考虑左端点小于等于$i$的区间,最大右端点为$j$的选择方案数
转移考虑第$i$个位置上的区间,根据第二个条件可以得到$j\ge i$,再根据第一个条件可以得到最多选择一个区间,接下来,可以直接转移到$f_{\min(j,r_{选择的区间},\max(j,r_{选择的区间})}$
解释一下:由于选择了这个区间,那么剩下的区间左端点必然不能在$[i,\min(j,选择的区间)]$,否则该位置即被覆盖了3次,也就是”已经考虑完了“
(这里并没有改变$f_{i,j}$的定义,只是让原本需要从这里一点点转移上去的部分直接转移)
特别的,第一个区间允许$j<i$,也允许选择多个区间,需要特判
时间复杂度即为$o(L^{2})$($L$为$l_{i},r_{i}$的范围),可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 4005
4 #define mod 1000000007
5 vector<int>v[N];
6 int n,x,y,ans,f[N][N];
7 void add(int &x,int y){
8 x=(x+y)%mod;
9 }
10 int main(){
11 scanf("%d",&n);
12 int m=0;
13 for(int i=1;i<=n;i++){
14 scanf("%d%d",&x,&y);
15 m=max(m,y);
16 v[x].push_back(y);
17 }
18 for(int i=1;i<=m;i++){
19 for(int j=0;j<=m;j++)add(f[i][j],f[i-1][j]);
20 sort(v[i].begin(),v[i].end());
21 for(int j=0;j<v[i].size();j++){
22 add(f[i][v[i][j]],1);
23 for(int k=j+1;k<v[i].size();k++)add(f[v[i][j]][v[i][k]],1);
24 for(int k=i;k<=m;k++)add(f[min(k,v[i][j])][max(k,v[i][j])],f[i-1][k]);
25 }
26 }
27 for(int i=0;i<=m;i++)add(ans,f[m][i]);
28 printf("%d",ans);
29 }
[luogu5464]缩小社交圈的更多相关文章
- LuoguP5464 缩小社交圈
LuoguP5464 缩小社交圈 背景:洛谷七月月赛T4 题目大意给定\(n\)个点,每个点的权值对应着一个区间\([l_i,r_i]\),两个点\(i,j\)有边当且仅当他们权值的并集不为空集,问有 ...
- PhotoView实现图片随手势的放大缩小的效果
项目需求:在listView的条目中如果有图片,点击条目,实现图片的放大,并且图片可以根据手势来控制图片放大缩小的比例.类似于微信朋友圈中查看好友发布的照片所实现的效果. 思路是这样的:当点击条目的时 ...
- 【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)
这是一个iOS项目雅黑深邃的K线的绘制. 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://git ...
- FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能. 用eq滤镜就可以实现亮度.对比度.饱和度等的常用视频增强功能. 推荐两篇写得不错的博文: (1)ffmpeg综合应用 ...
- 鼠标上下滑动总是放大缩小页面,按住ctrl+0
鼠标上下滑动总是放大缩小页面,可能是ctrl键失灵了,幸好键盘有两个ctrl键,按住ctrl+0,页面就正常了,吓死宝宝了,~~~~(>_<)~~~~
- WPF布局之让你的控件随着窗口等比放大缩小,适应多分辨率满屏填充应用
一直以来,我们设计windows应用程序,都是将控件的尺寸定好,无论窗体大小怎么变,都不会改变,这样的设计对于一般的应用程序来说是没有问题的,但是对于一些比较特殊的应用,比如有背景图片的,需要铺面整个 ...
- (十四)WebGIS中地图放大缩小的设计和实现
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在上一章中,我们给出了整个工具栏设计的核心,使用命令模式,并 ...
- OpenCV2:等间隔采样和局部均值的图像缩小
图像的缩小从物理意义上来说,就是将图像的每个像素的大小缩小相应的倍数.但是,改变像素的物理尺寸显然不是那么容易的,从数字图像处理的角度来看,图像的缩小实际就是通过减少像素个数来实现的.显而易见的,减少 ...
- C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框
最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...
随机推荐
- 理解hashMap
首先需要理解几个基本概念: 什么是数据结构?(摘自 java数据结构系列--什么是数据结构 (baidu.com)) 数据结构是计算机组织.存储数据的方式.简单来说就是,数据按指定的规则进行存储,从而 ...
- 世纪联华的 Serverless 之路
作者 | 朱鹏(旻苍) 来源 | Serverless 公众号 一.世纪联华超市简介 1. 公司简介 杭州联华华商集团有限公司成立于 2002 年 7 月,主要业务涵盖购物中心.大卖场.超市.便利店等 ...
- 市区择房分析(ArcPy实现)
1, 背景 如何找到环境好.购物方便.小孩上学方便的居住区地段是购房者最关心的问题.因此购房者就需要从总体上对商品房的信息进行研究分析,选择最适宜的购房地段. 2,目的 学会利用缓冲区分析和叠置分析解 ...
- Django基础1
一,web框架的本质 web应用的本质就是一个socket的服务端.而用户的浏览器就是一个客户端,具体事例如下: import socket sk = socket.socket() sk.bind( ...
- 洛谷4847 银河英雄传说(LCT+LCSPLAY)
QWQ硬是把一个\(splay\)好题,做成了\(LCT\) 首先,根据题目性质,我们可以发现序列之间是具有前后性质的. 那么,我们就不可以进行\(makeroot\)等操作. 我们定义\(findr ...
- MS office设置夜间模式
点击文件 帐户 -> office主题
- NX Open 图层说
我也是偶然发现的,在一次调试下,竟然会报警. 所以我写了测试代码,进行测试:结果如下 纳尼???还有271层?还能设置大于256层?NX open可以的.
- PostMan生成的测试报告 工具node.js、步骤、结果
Postman生成测试报告的工具node.js 1.下载并安装: win系统(下载后一直下一步就好了) mac系统 2.配置环境 (1).在命令提示符里面输入npm 检验安装是否成功可以输入命令:n ...
- [火星补锅] 非确定性有穷状态决策自动机练习题Vol.3 T3 && luogu P4211 [LNOI2014]LCA 题解
前言: 这题感觉还是很有意思.离线思路很奇妙.可能和二次离线有那么一点点相似?当然我不会二次离线我就不云了. 解析: 题目十分清真. 求一段连续区间内的所有点和某个给出的点的Lca的深度和. 首先可以 ...
- 线程池系列二:一张动图,彻底懂了execute和submit
我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息. [线程池原理:线程池原来是个外包公司,打工人我悟了] 若是我们想在异步执行完 ...