2019河北省大学生程序设计竞赛(重现赛)J-舔狗 (拓扑排序)
题目链接:https://ac.nowcoder.com/acm/contest/903/J


题意:给你 n 个舔狗和他喜欢的人,让你俩俩配对(只能和喜欢它的和它喜欢的),求剩下的单身狗数量。
思路:类似于拓扑排序,由入度最少的边开始配对,也就是被最少的舔狗喜欢的(甚至是没有)。将已经配对的舔狗进行标记,更新入度后重新加入优先队列,最后用总数减去标记数就是答案了。
总结:一开始我的思路是对的呐,但是我太菜了,卡在没办法处理同时配对2个点和维护他们入度,看完别人的处理才发现自己是局限于找入度为0而不是找入度最少。
AC代码:
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<vector>
using namespace std;
const int maxn = 1e6 + ;
const int INF = 0x3f3f3f3f;
int n;
int in[maxn];
int vis[maxn];
int like[maxn];
struct node{
int u,v;//u是编号,v是入度。
bool friend operator<(node a,node b)//优先队列使入度小的排在前面
{
return a.v > b.v;
}
};
void solve()
{
int ans = ;
priority_queue<node> q;
for(int i = ;i<= n;i++)
{
q.push( node{i,in[i]} );//将所有点加入队列;
}
while(!q.empty())
{
node w = q.top(); q.pop();
if(vis[w.u] || vis[ like[w.u] ]) continue; //如果他或者他喜欢的配对了就不能配了;
ans += ;
vis[w.u] = ;
vis[ like[w.u] ] = ;
//更新入度,反正优先队列,多跑几次没关系
q.push( node{like[like[w.u]],--in[ like[like[w.u]] ] } );//like[like[w.u]] 是指舔狗喜欢的人喜欢的人。
}
printf("%d\n",n-ans);
}
int main()
{
scanf("%d",&n);
for(int i = ;i <= n;i++)
{
scanf("%d",&like[i]);
in[like[i] ]++;
}
solve();
return ;
}
2019河北省大学生程序设计竞赛(重现赛)J-舔狗 (拓扑排序)的更多相关文章
- 舔狗【2019河北省大学生程序设计竞赛 J题】
题目描述 > “舔狗舔狗,> 舔到最后,> 一无所有.” 有 n 只舔狗,每只舔狗的心中都有自己朝思暮想的一位. 每个人虽然受到了一万次拒绝,还毅然第一万零一次鼓起勇气. 作为一个不 ...
- 2019河北省大学生程序设计竞赛(重现赛) L题-smart robot(深度优先搜索)
题目链接:https://ac.nowcoder.com/acm/contest/903/L 题意:给你 n * n的方阵,你可以从任意一个数字开始走,可以走上下左右四个方向,走过的数字会被拼合,拼合 ...
- 2019河北省大学生程序设计竞赛(重现赛)B 题 -Icebound and Sequence ( 等比数列求和的快速幂取模)
题目链接:https://ac.nowcoder.com/acm/contest/903/B 题意: 给你 q,n,p,求 q1+q2+...+qn 的和 模 p. 思路:一开始不会做,后面查了下发现 ...
- “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛 C-Cities
题目描述:There are n cities in Byteland, and the ith city has a value ai. The cost of building a bidirec ...
- 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛(8/11)
$$2019中国大学生程序设计竞赛(CCPC)\ -\ 网络选拔赛$$ \(A.\hat{} \& \hat{}\) 签到,只把AB都有的位给异或掉 //#pragma comment(lin ...
- [BFS,A*,k短路径] 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 path (Problem - 6705)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6705 path Time Limit: 2000/2000 MS (Java/Others) Mem ...
- [贪心,dp] 2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛 Fishing Master (Problem - 6709)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6709 Fishing Master Time Limit: 2000/1000 MS (Java/Othe ...
- 2019中国大学生程序设计竞赛-女生专场(重现赛)部分题解C-Function(贪心+优先队列) H-clock(模拟)
Function 题目链接 Problem Description wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n). 现在他想在∑ni=1xi = ...
- 2018CCPC 中国大学生程序设计竞赛 网络赛
链接 1.括号序列贪心/CF&51nod原题 [分析]: 贪心,每次到i的时候,假如你要在i里面要卖掉股票,获益是a[i], 肯定要在前面要么:1)把已经卖了的变成不买不卖,需要-a[j], ...
随机推荐
- LINUXE下执行php 定时任务
linux test.php <?php $fn='/home/root.adminssh/boz/logs'; $data=rand(1,9999); $fp=fopen($fn,'wb'); ...
- 个人笔记 - C++相关收藏
一.文件操作 1.C++从txt文件中读取二维的数组
- 85、使用TFLearn实现iris数据集的分类
''' Created on 2017年5月21日 @author: weizhen ''' #Tensorflow的另外一个高层封装TFLearn(集成在tf.contrib.learn里)对训练T ...
- java.lang.IllegalAccessException: Class XXXcan not access xxx with modifiers "private"
field 或者 method 是 provate的 field.setAccessible(true); method.setAccessible(true); 有时候是因为 newinstance ...
- FPGA 报错ERROR:Simulator:861 – Failed to link the design。
问题综述: 我使用的是windows 10 32位专业版系统,电脑装的是ISE14.4版本,当我用此ISE自带的仿真器ISIM来仿真时,仿真器总是报错ERROR:Simulator:861 – Fai ...
- python学习笔记:目录结构
"项目目录结构"其实也是属于"可读性和可维护性"的范畴. 目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Sta ...
- Linux下JDK1.6升级1.8版本
先不管是否已安装JDK1.6还是JDK1.7,先下载 jdk-8u45-linux-x64.rpm 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置 给所有用户 ...
- 【牛客网-剑指offer】斐波拉契数列
题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 知识点: 一列数:从1开始,前两项为1,从第三项开始每一项等于前两项之和 ...
- WPF textbox 鼠标滚动更新日期,text文本值更改
/// <summary> /// 选择日期 /// </summary> private void RQTxt_MouseWheel(object sender, Mouse ...
- 让Nginx路径中的子目录匹配文件夹的另一种写法
其实相当于对路径做一种通配符,根据路径名访问相应的文件夹.直接看高潮部分如下.. location /static { root /var/www/usmt; index index.html boa ...