当前位置: 首页 > news >正文

<P5464 缩小社交圈>

题目描述

社交圈子里有 n 个人,每个人都有一个 SAN 值范围 [li​,ri​]。当两个人的 SAN 值交集不为空时,这两个人有 PY 关系。

现在希望从社交圈子里面挑选出一些人组成一个集合 S,如果将所有集合内的人中有 PY 关系的那一对人都连上边,则 S 刚好成为一个树(森林不行哦)。

请问,有多少种可以选择的方案?由于答案可能很大,请对 109+7 取模。

输入格式

第一行一个整数 n。

接下来 n 行,每行 2 个整数,表示这个人的 SAN 值区间。

输出格式

一行一个整数,表示答案。

输入输出样例

输入 #1复制

3 1 5 2 7 4 8

输出 #1复制

6

说明/提示

对于20%的数据,满足 n≤18 。

对于40%的数据,满足 n≤50

对于60%的数据,满足 n≤200

对于100%的数据,满足 n≤2000,1≤li​<ri​≤4000

代码实现:

#include<bits/stdc++.h> using namespace std; #define int long long const int mod=1e9+7; inline void rd(int &x) { x=0;int p=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')p=-p;ch=getchar();} while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch-'0'),ch=getchar(); x*=p; } int n,dp[2005][2005],pre[2005][2005],sl[4005],sr[4005]; struct nd {int l,r;}p[2005]; bool cmp(const nd&a,const nd&b) { if(a.l!=b.l)return a.l<b.l; return a.r<b.r; } int mn(int x,int y) {return x<y?x:y;} int mx(int x,int y) {return x>y?x:y;} void add(int &x,int y) { x+=y; if(x>=mod)x-=mod; if(x<0)x+=mod; } signed main() { rd(n); for(int i=1;i<=n;++i) {rd(p[i].l);rd(p[i].r);} sort(p+1,p+n+1,cmp); for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j) if(p[i].r>=p[j].l)dp[i][j]=1; p[n+1].l=99999999; sl[0]=0,sr[0]=0; for(int i=1;i<=4000;++i) { sl[i]=sl[i-1]; sr[i]=sr[i-1]; while(p[sl[i]].l<i)sl[i]++; while(p[sr[i]+1].l<=i)sr[i]++; } for(int i=1;i<=n;++i) { for(int j=i+1;j<=n;++j) { if(!dp[i][j])continue; add(pre[i][j],pre[i][j-1]); add(dp[i][j],pre[i][j]); if(p[i].r==p[j].r)continue; int x=mn(p[i].r,p[j].r); int y=mx(p[i].r,p[j].r); int L=sl[x+1]; int R=sr[y]; if(L>R)continue; if(p[i].r>p[j].r)add(pre[i][L],dp[i][j]),add(pre[i][R+1],-dp[i][j]); else add(pre[j][L],dp[i][j]),add(pre[j][R+1],-dp[i][j]); } } int ans=n; for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j) add(ans,dp[i][j]); printf("%lld\n",ans); return 0; }
http://www.jsqmd.com/news/397102/

相关文章:

  • 支持实时预览与高质量导出的专业封面设计工具,完全免费:西瓜封面设计
  • 文科论文降AI比理工科更难?文科生专属降AI方案全解析
  • 题解:洛谷 P1541 [NOIP 2010 提高组] 乌龟棋
  • PEM 电解槽直流道两相流模拟:从建模到求解
  • 手把手教你使用vscode开发stm32!
  • 题解:洛谷 P1854 [IOI 1999] 花店橱窗布置
  • 题解:洛谷 P4310 绝世好题
  • 中华民族音乐传承出版工程服务平台界面设计
  • 用DeepSeek写的论文怎么降AI率?2026最新实操教程手把手教你
  • 2026毕业季降AI全攻略:从论文写作到最终提交一站式指南
  • 法智学教育软件课件UI设计
  • 【Python】【机器学习】集成算法(随机森林、提升算法)
  • 中小企业全生命周期知识产权管理100问:从初创到成熟,一文读懂核心要点
  • 题解:洛谷 P1004 [NOIP 2000 提高组] 方格取数
  • 基于高频信号的PMSM转矩脉动抑制:一场仿真探索之旅
  • 3分钟搞懂深度学习AI:感知机,AI模仿大脑
  • 题解:洛谷 P2679 [NOIP 2015 提高组] 子串
  • 论文降AI后导师说风格变了怎么办?保持个人写作风格的实用指南
  • 题解:洛谷 P1439 两个排列的最长公共子序列
  • php条件语句(混合php的if语句和js编程)
  • 题解:洛谷 P4933 大师
  • 基于LSTM的共享单车需求预测研究
  • 题解:洛谷 P2285 [HNOI2004] 打鼹鼠
  • 题解:洛谷 P1020 [NOIP 1999 提高组] 导弹拦截
  • 携程任我行礼品卡回收实操步骤 - 京顺回收
  • 研究生开题答辩前如何确保论文AI率合格?导师不会告诉你的实操指南
  • neovim配置python插件支持环境 —— Pynvim 环境搭建 —— Pynvim安装
  • 期刊投稿也要查AI了?学术期刊AIGC检测现状与对策
  • Gemini 3.1 Pro在这个平台便宜到离谱,编程能力竟然超过GPT-5.2和Opus 4.6
  • MySQL几种count比