首页 > 其他分享 >P9726 [EC Final 2022] Magic

P9726 [EC Final 2022] Magic

时间:2024-09-25 23:23:21浏览次数:7  
标签:dep Magic int ret P9726 限制 Final define

首先注意到能产生贡献的只有 \(l_i,r_i\),虽然这是废话,因为每个点都有一个唯一对应的 \(l_i\) 或 \(r_i\),但我认为刚刚的性质还是挺有用的,因为这启发我们考虑每个点的贡献,然而对于一个点可选可不选,并考虑每个的贡献,点之间有些限制,这非常网络流。

于是我们去分析这些性质,发现有包含或不交关系的点之间并不存在限制,否则才有限制。那么什么会有限制呢?其实只有当 \(l_i<l_j,r_i<r_j,r_i>l_j\) 时,\(l_j\) 和 \(r_i\) 之间才有限制,我们连接这些边,由于我们只会在 \(l\) 与 \(r\) 之间连边,所以长出来的图是个二分图,然后问题变成了求最大独立集问题,于是这道题就做完啦!

代码:

#include <bits/stdc++.h>
#define rep(i, l, r) for (int i = l; i <= r; ++ i)
#define rrp(i, l, r) for (int i = r; i >= l; -- i)
#define pii pair <int, int>
#define eb emplace_back
#define inf 1000000000
#define id(x, y) n * (x - 1) + y
#define ls p << 1
#define rs ls | 1
using namespace std;
constexpr int N = 1e4 + 5, M = (1ll << 31) - 1, P = 1e9 + 7;
constexpr double PI = acos (-1.0);
inline int rd () {
  int x = 0, f = 1;
  char ch = getchar ();
  while (! isdigit (ch)) {
    if (ch == '-') f = -1;
    ch = getchar ();
  }
  while (isdigit (ch)) {
    x = (x << 1) + (x << 3) + ch - 48;
    ch = getchar ();
  }
  return x * f;
}
int qpow (int x, int y) {
  int ret = 1;
  for (; y; y >>= 1, x = x * x % P) if (y & 1) ret = ret * x % P;
  return ret;
}
void add (int &x, int y) {
  x += y;
  if (x >= P) x -= P;
}
int n;
int l[N], r[N];
bitset <N> e[N];
int dep[N];
queue <int> q;
bool bfs () {
  rep (i, 0, n * 2 + 1) dep[i] = 0;
  dep[0] = 1;
  q.push (0);
  while (! q.empty ()) {
    int u = q.front ();
    q.pop ();
    for (int v = e[u]._Find_first (); v <= n * 2 + 1; v = e[u]._Find_next (v)) {
      if (dep[v]) continue;
      dep[v] = dep[u] + 1; q.push (v);
    }
  } return dep[n * 2 + 1];
}
int dfs (int u, int f) {
  if (u == n * 2 + 1) return f;
  int out = 0;
  for (int v = e[u]._Find_first (); v <= n * 2 + 1 && f; v = e[u]._Find_next (v)) {
    if (dep[v] != dep[u] + 1) continue;
    int tmp = dfs (v, min (1, f));
    if (tmp) e[u][v] = 0, e[v][u] = 1;
    out += tmp, f -= tmp;
  }
  if (! out) dep[u] = 0;
  return out;
}
bool pos[N];
int main () {
  // freopen ("1.in", "r", stdin);
  // freopen ("1.out", "w", stdout);
  n = rd ();
  rep (i, 1, n) {
    l[i] = rd (), r[i] = rd ();
    pos[r[i]] = 1;
  }
  rep (i, 1, n * 2) {
    if (! pos[i]) e[0][i] = 1;
    if (pos[i]) e[i][n * 2 + 1] = 1;
  }
  rep (i, 1, n) {
    rep (j, 1, n) {
      if (l[i] >= l[j]) continue;
      if (r[i] > l[j] && r[i] < r[j]) e[l[j]][r[i]] = 1;
    }
  }
  int ret = 0;
  while (bfs ()) ret += dfs (0, inf);
  printf ("%d\n", n * 2 - ret);
}

标签:dep,Magic,int,ret,P9726,限制,Final,define
From: https://www.cnblogs.com/lalaouyehome/p/18432525

相关文章

  • 2024EC Finals 游记
    期末考试刚结束就坐上了去往上海的火车,由于大二在12号上午还有考试,我们一起在12号下午从北京出发,也就没有参加热身赛的机会。看了看热身赛的榜,感觉每个学校的队伍都非常强力,像区域赛那样夺杯的概率显然为0,希望能争取一下金牌。13号由于记错集合时间,我和金老师(蓝色线段树成员......
  • 2024 CCPC Final 游记
    CCPCFinal2023赛季国内的最后一战,也算是最艰难的一次。去成都参加CCPCFinal的周末正好还撞上了我的高代月考和苏子佩的概率论考试,请假了还没有补考机会,不会直接记0分吧(不愧是北下关周考大学)。周五早上坐飞机去往成都,这还是苏子佩和StarSilk第一次坐飞机,而且StarSilk......
  • final 关键字
    java提供了以关键字给我们使用,可以修饰父类成员方法,让其只能被子类使用,不能重写。final:最终的,不可改变的点击查看代码classFu7{publicfinalvoidfun1(){System.out.println("江川是世界上最帅且有钱的男人!");}}classZi7extendsFu7......
  • TestFinal
    packagecom.shrimpking.t1;/***CreatedbyIntelliJIDEA.**@Author:Shrimpking*@create2024/9/1411:15*/publicclassTestFinal{//常量staticfinalintYEAR=365;publicstaticvoidmain(String[]args){System.out.......
  • java_day7_继承、final关键字、代码块、多态
    一、继承1、继承我想养一只......
  • CCPC 2023 Final
    \(A.\)考虑合法的b序列长什么样,我们倒着做,把+变成-,在所有\(b_{i}>b_{i+1}\)的\(i\)操作\(b_{i}-b_{i+1}\)次前缀,后缀同理,最终要求b全部相等非负即满足条件。考虑前缀(后缀)操作本质是从某个地方开始后下降次数,那么我们设\(b_{0}=b_{n+1}=inf\),最终只需要判断\(\sum|b_{i}-b_{i+1}......
  • Java 中`finally` 块包含 `return` 语句会覆盖 `try` 或 `catch` 块中的 `return` 语
    在Java中,如果finally块包含return语句,它会覆盖try或catch块中的return语句。这是因为finally块中的代码在try和catch块结束后总是会执行,即使有return语句、异常或System.exit()这样的终止操作。在finally中使用return是不推荐的,因为它会让代码难以维护......
  • 帝国CMS报错Deprecated: Function get_magic_quotes
    当使用帝国CMS时遇到“Deprecated:Functionget_magic_quotes”这类报错,通常是因为PHP版本升级后,某些旧的函数被弃用。get_magic_quotes_gpc() 函数在PHP5.4中已被弃用,并在PHP7.0中被移除。原因分析PHP版本升级:如果你的服务器从较旧的PHP版本(如5.3或更低)升级到了PHP7.......
  • CF632F Magic Matrix
    description这个有点太形式化了,还是不放了。solution首先让我们注意到\(a_{i,j}\le\max(a_{i,k},a_{j,k})\)等价于\(a_{i,j}\le\max(a_{i,k},a_{k,j})\),然后转化为这个形式后就会发现可以将其理解成一张图,不存在一条从\(i\toj\)的路径满足这条边上所有......
  • Python中的“Try...Except...Finally”:掌握异常处理的艺术
    在编程的世界里,错误与异常就像是旅途中的迷雾,虽然不可避免,但通过正确的导航工具,我们可以安全地穿越。Python作为一种广泛使用的编程语言,提供了丰富的工具来帮助我们处理这些异常情况,其中之一便是“Try...Except...Finally”结构。本文将带你深入了解这一机制的核心概念、实际应用以......