Gym - 101964I

题意

有一个数组\(p\),如果满足\(i<j,p_i>p_j\),则\(i,j\)之间就有一条边相连,问存在多少个集合满足集合内的元素互不相连,且集合外的元素都有边连到集合内。

思路

现在给你\(p\)数组相连的边, 然后就可以暴力还原\(p\)数组,可以先记录有当前\(i\)位置之小于\(i\)位置的数字的数数量\(k\),然后从小到大找能用的第\(k\)大的数字就是位置\(i\)的数字

还原完\(p\)数组,我们可以发现如果你的子序列是上升序列,那么它们直接互不相连,而要让其他元素都连到这个集合里,我们要找不可扩展的上升序列(就是后面没有更大的数字,前面没有更小的数字),然后就会发现剩下的元素就会连到集合内,不然就会被加集合内

所以,这题就是还原\(p\)数组,然后找到不可扩展的上升序列有多少个,就是答案了。

代码

#include<bits/stdc++.h>
#define mes(a, b) memset(a, b, sizeof a)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxm = 1e6+10;
const int maxn = 1e5+10;
int n, m, T;
int a[maxn], in[maxn], vis[maxn];
ll ans, dp[maxn];
int main(){
scanf("%d%d", &n, &m);
int x, y;
for(int i = 1; i <= m;i++){
scanf("%d%d", &x, &y);
in[min(x, y)]++;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
if(!vis[j]){
if(in[i]) in[i]--;
else{
vis[j] = 1;
a[i] = j;
break;
}
}
}
}
for(int i = 1; i <= n; i++){
int Max = 0;
for(int j = i-1; j >= 1; j--){
if(a[i] > a[j] && a[j] > Max){ //如果当前a[j]比Max小,那么肯定a[j]有被Max的数更新过,就不要更新了
Max = a[j];
dp[i] += dp[j];
in[j]++;
}
}
if(!dp[i])
dp[i] = 1;
}
ans = 0;
for(int i = 1; i <= n; i++){
if(!in[i])
ans += dp[i];
} printf("%lld\n", ans);
return 0;
}

最新文章

  1. &lt;input type=&#39;file&#39;/&gt;把默认样式改成框框
  2. BZOJ2432 [Noi2011]兔农
  3. nginx对网站限速
  4. QT 读取文件夹下所有文件(超级简单的方法,不需要QDirIterator)
  5. 增量与位置PID
  6. C# WinForm中 让控件全屏显示的实现代码
  7. mac install php dev
  8. Mac OS升级到Yosemite后一些问题
  9. Ant 警告:sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
  10. 【待考察】Appium使用技巧,助你快速入门移动端自动化!
  11. linux中用composer安装yii框架
  12. nginx负载均衡实验
  13. Arraylist JDk1.8扩容和遍历
  14. [机器学习&amp;数据挖掘]朴素贝叶斯数学原理
  15. js字符串驼峰和下划线互相转换
  16. win10下安装redis 服务
  17. 《DSP using MATLAB》Problem 4.18
  18. sed ,awk , cut三剑客的区别
  19. hadoop安装单机
  20. microsoft visual c++与microsoft visual net 版本对应关系

热门文章

  1. 初次打开jenkins页面一片空白的解决办法
  2. Win7崩溃程序目录
  3. 单击EasyUI的datagrid行时不选中
  4. lLinux 下 Stress 压力测试工具
  5. git常用命令总结 git常用命令总结
  6. python print (x,end = &#39;&#39;) 意思作用
  7. git 命令图解
  8. Django学习——开发你的第一个Django应用1
  9. Checklist: 2019 05.01 ~ 06.30
  10. Swoole 的运行模式