• Gym 101142C CodeCoder vs TopForces【思维+Dfs】



    题目大意:

    如果A>B,并且B>C,那么有A>C,现在A>B的条件是,A的两个元素中的至少一个大于B。

    问一个人可以打败多少人。

    思路:


    ①问题其实就是在找一个联通块,我们将元素按照x从小到大排序一下,然后相邻的两个点建一条边。

    ②然后在将元素按照y从小到大排序一下,然后相邻的两个点再建一条边。

    然后每个点Dfs一下统计即可。

    一开始的时候,我想的是两个关键字分别排一次序,分别记一下名次

    按第一关键字排序,在第一关键子小于他的找到一个第二关键字的排名最小的

    然后按第二关键字再来一次。

    后来怎么都wa,原因可能是因为关系太复杂,而排序之后就全是线性的关系了,许多关系就考虑不到了

    还是dfs稳qwq





     1 #include"bits/stdc++.h"
     2 using namespace std;
     3 
     4 struct aa
     5 {
     6  int id1;
     7  int id2;
     8  int pos;
     9  int ans;
    10  int a,b;
    11 
    12 }a[1000000];
    13 
    14 vector<int> v[200000];
    15 int vis[200000];
    16 
    17 
    18 int cmp(aa a,aa b)
    19 {
    20  return a.a>b.a;
    21 }
    22 
    23 int cmp2(aa a,aa b)
    24 {
    25  return a.b>b.b;
    26 }
    27 int cmp3(aa a,aa b)
    28 {
    29  return a.pos<b.pos;
    30 }
    31 
    32 int n;
    33 
    34 
    35 int ans[2000000];
    36 int cnt;
    37 
    38 void dfs(int x)
    39 {
    40     vis[x]=1;
    41     cnt++;
    42     for (auto i:v[x])if(!vis[i])dfs(i);
    43     return ;
    44 }
    45 
    46 int main()
    47 {
    48      freopen("codecoder.in","r",stdin);
    49 // 
    50             freopen("codecoder.out","w",stdout);
    51  
    52 cin>>n;
    53 
    54  for (int i=1;i<=n;i++)
    55  cin>>a[i].a>>a[i].b,a[i].pos=i;
    56  
    57  sort(a+1,a+1+n,cmp);
    58  
    59  for (int i=1;i<n;i++)v[a[i].pos].push_back(a[i+1].pos);
    60  
    61  sort(a+1,a+1+n,cmp2);
    62  for (int i=1;i<n;i++)v[a[i].pos].push_back(a[i+1].pos); 
    63  
    64  for (int i=n;i;i--)
    65  {
    66      if(!vis[a[i].pos])dfs(a[i].pos);
    67      ans[a[i].pos]=cnt;
    68      
    69  }
    70  
    71 for (int i=1;i<=n;i++)cout<<ans[i]-1<<endl;; 
    72 
    73 
    74  
    75  
    76  
    77  
    78  
    79 }
  • 相关阅读:
    cookie设置不能马上返回?
    Firemonkey的旁门左道[八]
    小智慧38
    避免15个浪费时间的坏习惯
    Deep Learning论文笔记之(七)深度网络高层特征可视化
    hdu1024 最大m子序列和
    poj 2472
    poj 2472
    hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地
    hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地
  • 原文地址:https://www.cnblogs.com/zhangbuang/p/10656138.html
Copyright © 2020-2023  润新知