题目中是把所有而不是一部分互膜记录给出了。。。
注意到原本在一个子群的成员到最后一定是一个连续的区间,假设我们在已知[l,r][l,r][l,r]是一个群,考虑如何分裂它。设与rrr相连的最小点是x" role="presentation" style="position: relative;">xxx,当区间长度为偶数且x=l+r−12x=l+r−12x=\frac{l+r-1}{2}时左右大小相同,xxx即为左半部分右端点,否则r−x+l−1" role="presentation" style="position: relative;">r−x+l−1r−x+l−1r-x+l-1相连的点一定就是左半部分的右端点。那么这样我们就知道了左半部分的大小,拆分下去即可。
代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
#define fs first
#define sc second
#define N 100010
#define Ed(x) (*(x.end()-1))
using namespace std;
int n,m,ans;
vector<int> con[N];
pair<int,int> e[N];
int read()
{int x=0,f=1;char ch=getchar();for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*f;
}
bool solve(int l,int r,int dep)
{if(l==r) {ans=max(ans,dep);return con[l].empty();}if(con[r].empty()) return 0;int x=Ed(con[r]),d;if(((r-l)&1)&&x==(l+r>>1)) d=x;else {if(con[r-(x-l)-1].empty()) return 0;d=Ed(con[r-(x-l)-1]);}if(d<x&&d>=((l+r+1)>>1)) return 0;for(int i=d+1;i<=r;i++)if(con[i].empty()||Ed(con[i])<l||Ed(con[i])>d||i%(d-l+1)!=Ed(con[i])%(d-l+1)) return 0;else con[i].pop_back();return solve(l,d,dep+1)&&solve(d+1,r,dep+1);
}
int main()
{int ca=read();while(ca--){for(int i=0;i<n;i++)con[i].clear();n=read();m=read();for(int i=1;i<=m;i++){int x=read(),y=read();if(x>y) swap(x,y);e[i]=make_pair(x,y);}sort(e+1,e+m+1);for(int i=m;i;i--)con[e[i].sc].push_back(e[i].fs);ans=0;if(solve(0,n-1,0)) printf("%d\n",ans);else puts("-1");    }return 0;
}

[JZOJ5748] 小Y增员操直播群 递推+分治相关推荐

  1. JZOJ 5748 小Y增员操直播群

    传送门 题面 思路 正解 参考代码 时间复杂度 传送门 题面 思路 这道题太 fake 了,打个暴力都能过,丢分居然是因为没有判断重边和自环 QAQ,唉,我太弱啦! 显然我们可以把这些人分成一段一段的 ...

  2. 2287. 【POJ Challenge】消失之物(数组递推\分治优化背包)

    2287. [POJ Challenge]消失之物 这题的思想和P4564 [CTSC2018]假面优化的思想一样,应该反过来说,假面那个题应该是借鉴这题的思路. 显然不能枚举每个物品消失O(n)O( ...

  3. 函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)

    最近在做关于过热气温的动态建模问题.有现场运行的历史数据,要找出导前区和惰性区的传递函数. 对这类算法了解不多,程序读起来比较吃力,所以就转来一篇完整的辨识程序,在原有基础上进行了简化,并稍加注解一下 ...

  4. luogu P4240 毒瘤之神的考验(莫比乌斯反演+递推前缀和+数论分块)

    problem 洛谷链接 solution ∑i=1n∑j=1mφ(ij)=∑i=1n∑j=1mφ(i)φ(j)gcd⁡(i,j)φ(gcd⁡(i,j))\sum_{i=1}^n\sum_{j=1}^ ...

  5. 递推与递归 (区别)

    递推与递归 本文中部分内容转自他人博客,作者相关信息以及博客地址在文末. 概念 递归:从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程,称为递归. 递归的定义:在一个函数 ...

  6. gcd + 扩展欧几里得定理+递推乘法逆元(模板)

    gcd: int gcd(int a, int b){ return b==0? a: gcd(b, a%b); } 扩张欧几里得定理: 扩展欧几里德算法是用来在已知a, b求解一组x,y使得ax+b ...

  7. python递推法 p=(x、y)=x-x^2+x^3_组合数学(超详细!!!)

    加法原理 今天您想给orz做一道题. 您有10道数学题,5道物理题,5道oi题,这些题orz都不会做. 可惜您只能用其中一道题来考orz. 请问您有多少种方法让orz爆零? 10+5+5 = 20 假 ...

  8. 小C的01序列(简单递推)

    题目链接:https://www.cometoj.com/contest/84/problem/B?problem_id=4305 令f[i][k]表示第sis_isi​中k对应次数,考察序列特征,发 ...

  9. [递推式求解、多指针、前缀和]XATU第七届算法大赛

    文章目录 赛后感想 1.2题略 3 乐华水上梦幻乐园之拖鞋失踪案[概率论.递推式求解] 题意 分析 代码 4.5.6.7.8题略 9 Ugly Number[多指针] 题意 做法1[BFS with ...

最新文章

  1. java自增运算符与自减运算符
  2. closewait一直不释放_家里甲醛一直去不掉,原来是原理弄错了!跟邻居学来这一招搞定...
  3. 通过Visual Studio为Linux编写C++代码
  4. 关于笔记本安装parrot和kali的一些问题(花屏,息屏,屏幕不能休眠)
  5. MapReduce的编程规范
  6. Word 2007 发布测试
  7. STM32H7时钟树RCC分析--- HAL库配置(二)
  8. Python 机器学习 利用sklearn构建决策树的实现 2
  9. Pyspark访问Hbase
  10. Activiti中的流程存储服务(RepositoryService)
  11. 用aspnetpager实现datalist分页
  12. Java 最常见的 200+ 面试题:面试必备 1
  13. 6. HBase优化
  14. 影响因子在10的计算机杂志什么水平,国人无人发表的TOP期刊,影响因子翻倍,5分变10分,不收版面费!...
  15. c语言中动态内存分配的作用,C语言中动态内存的分配(malloc,realloc)
  16. T-Tree索引与MMDB简单映射(草稿)
  17. 微服务与敏捷开发(Scrum/Kanban)的核心思想之我见
  18. 拷机测试需要多久_【温馨提示】亚马逊卖家警惕!没有UL测试报告产品将会被下架...
  19. 编译报错undefined symbol: vtable for
  20. mvc 、mvp、 mvvm

热门文章

  1. gem意思_邓紫棋为什么叫gem 邓紫棋gem有什么特殊的含义吗
  2. 人生啊,就是经常要用无数的格言警句来督促自己不断进步!
  3. 中国古代表示幸福的名人名言
  4. 打造商业模式中的闭环                                                     ----闭环意味着循环
  5. 二元函数对xy同时求导_【“数”你好看】求导
  6. [BOST] 你的大脑比你想象的更优秀
  7. 键盘快捷键设置与记录,附表格
  8. 改造一个环节,效率就提升1倍 爱奇艺对影视后期下手了
  9. 可能是最全的实用API接口汇总
  10. c语言下标法改为指针变量法,C语言教材第七章指针实验.doc