题意:

每个人有两个积分CC和TF

第i个人能战胜第j个人的条件满足下面两个条件中的一个即可

1、CCi > CCj 或 TFi > TFj

2、i能战胜k,k能战胜j。

题解:

先按CCi的积分排序,然后连接相邻的两个人a->b,代表a能战胜b

再按TFi的积分排序,做同样的处理。

最后我们按TFi的排序做dfs,只需要dfs一遍就可以得到所有的答案

#include <algorithm>
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
const int maxn = 1e5 + ;
struct Data{
int x, y, id, ans;
}a[maxn];
bool cmp1(const Data& A, const Data& B) { return A.x < B.x; }
bool cmp2(const Data& A, const Data& B) { return A.y < B.y; }
bool cmp3(const Data& A, const Data& B) { return A.id < B.id; }
int vis[maxn];
vector<int> G[maxn];
int n, ans;
void dfs(int x){
if(!vis[x]) ans++;
vis[x] = ;
for(int i = ; i < G[x].size(); i++){
if(vis[G[x][i]]) continue;
dfs(G[x][i]);
}
} int main(){
freopen("codecoder.in", "r", stdin);
freopen("codecoder.out", "w", stdout);
cin>>n;
for(int i = ; i <= n; i++){
cin>>a[i].x>>a[i].y;
a[i].id = i;
}
sort(a+, a++n, cmp1);
for(int i = ; i <= n; i++) G[a[i].id].push_back(a[i-].id);
sort(a+, a++n, cmp2);
for(int i = ; i <= n; i++) G[a[i].id].push_back(a[i-].id);
ans = ;
for(int i = ; i <= n; i++){
dfs(a[i].id);
a[i].ans = ans-;
}
sort(a+, a++n, cmp3);
for(int i = ; i <= n; i++) cout<<a[i].ans<<endl;
}

Codeforces Gym 101142 C. CodeCoder vs TopForces(思维+图论)的更多相关文章

  1. Codeforces Gym 101142C:CodeCoder vs TopForces(搜索)

    http://codeforces.com/gym/101142/attachments 题意:每个人在TC和CF上分别有两个排名,如果有一个人在任意一个网站上大于另一个人的排名,那么这个人可以打败另 ...

  2. Codeforces Gym 101142 G Gangsters in Central City (lca+dfs序+树状数组+set)

    题意: 树的根节点为水源,编号为 1 .给定编号为 2, 3, 4, …, n 的点的父节点.已知只有叶子节点都是房子. 有 q 个操作,每个操作可以是下列两者之一: + v ,表示编号为 v 的房子 ...

  3. Gym 101142C :CodeCoder vs TopForces(强连通算法)

    题意:N个人,每个人有a属性和b属性,如果一个人的a或者b大于另外一个人,我们说这个人可以打败那个人.且这种关系可以传递.对于每个人,输出他可以打败多少人.(保证每个a不相同,保证每个b不相同. 思路 ...

  4. C - CodeCoder vs TopForces Gym - 101142C (连通块+思维)

    题目链接: C - CodeCoder vs TopForces Gym - 101142C 题目大意:给你n个人的信息,每一个人的信息包括两个.t1和t2.A>B的前提是A的t1和t2至少有一 ...

  5. Codeforces Gym 101252D&&floyd判圈算法学习笔记

    一句话题意:x0=1,xi+1=(Axi+xi%B)%C,如果x序列中存在最早的两个相同的元素,输出第二次出现的位置,若在2e7内无解则输出-1. 题解:都不到100天就AFO了才来学这floyd判圈 ...

  6. Codeforces Gym 101190M Mole Tunnels - 费用流

    题目传送门 传送门 题目大意 $m$只鼹鼠有$n$个巢穴,$n - 1$条长度为$1$的通道将它们连通且第$i(i > 1)$个巢穴与第$\left\lfloor \frac{i}{2}\rig ...

  7. Codeforces Gym 101623A - 动态规划

    题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...

  8. 【Codeforces Gym 100725K】Key Insertion

    Codeforces Gym 100725K 题意:给定一个初始全0的序列,然后给\(n\)个查询,每一次调用\(Insert(L_i,i)\),其中\(Insert(L,K)\)表示在第L位插入K, ...

  9. Codeforces Round #546 (Div. 2) D 贪心 + 思维

    https://codeforces.com/contest/1136/problem/D 贪心 + 思维 题意 你面前有一个队列,加上你有n个人(n<=3e5),有m(m<=个交换法则, ...

随机推荐

  1. Drupal 出错的解决办法

    今天安装了superfish菜单模块,安装了一个新菜单后.网站突然打不开了.空白! 第一反应看日志,Apache服务器日志没有发现异常. 可以肯定是添加菜单时,在ATTACH BLOCK部分的区块区域 ...

  2. (转)EDM邮件制作规范完整版

    转载:http://www.maildesign.cn/archives/1380 在我们的日常工作中,经常需要发送邮件和我们的会员沟通.如注册确认.营销推广等.这些由站方发给会员的信件,往往纯文本格 ...

  3. android学习十二 配置变化

    1.配置变化会终止当前活动,并重建活动 2.配置变化有    2.1  屏幕方向变化    2.2  语言变化    2.3   插到基座等   3. 配置变化应用程序不会清除,上下文对新活动依然有效 ...

  4. Ubuntu16.04比较好的一系列软件安装介绍

    https://blog.csdn.net/Gerald_Jones/article/details/80784976

  5. 「日常训练&知识学习」莫队算法(二):树上莫队(Count on a tree II,SPOJ COT2)

    题意与分析 题意是这样的,给定一颗节点有权值的树,然后给若干个询问,每次询问让你找出一条链上有多少个不同权值. 写这题之前要参看我的三个blog:Codeforces Round #326 Div. ...

  6. Qt-QML-Charts-ChartView-编译错误-ASSERT: "!"No style available without QApplication!

    昨天本来是回家想好好琢磨一下使用Chart来绘制曲线的,奈何在建立项目的时候也就卡住了,加上心情比较烦躁,也没有耐心寻找答案就草草了事.所以今天继续搞定这个. 上图是Qt 的编译错误截图 QML de ...

  7. Python 多线程、进程、协程上手体验

    浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...

  8. linux 学习总结---- mysql 总结

    用户的创建 ---->修改 ---->删除用户 create alter drop (数据定义语言 DDL) 授权: insert update delete grant *.* revo ...

  9. Java学习笔记-序

    最近开始学习java了,上班看书看得经常瞌睡,有时候想起来觉得挺重要的知识点想记在哪里又害怕忘记了,于是乎突然想到了博客园,所以今天上午就决定记在院子里了,先写了8是因为已经看到第八章了(读的是Jav ...

  10. 技能get,React的优雅升级!

    今日,我们不啖鸡汤,不饮鸡血 只有干货——关于React的优雅升级 双手奉上,来,干了! -2019年第4期- 夫 子 说 本次升级基础包情况:react 15.6 -> 16.6 升级流程: ...