URAL 1682 Crazy Professor (并查集)
【题目链接】 http://acm.timus.ru/problem.aspx?space=1&num=1682
【题目大意】
给出k,从1开始不断地加一并把这个数写在黑板上,如果写上的数字和之前的数字满足
(a+b*b)%k=0或者(b+a*a)%k=0就在他们之间连一条线,如果黑板上出现环就结束,问能写几个数
【题解】
我们发现写到2k-1的时候,就一定会产生一个环,所以我们只要枚举数字
往满足要求的地方连边,判断是否出现环即可
【代码】
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef long long LL;
const int N=300010;
int f[N],n,pre[N];
vector<int> G[N];
int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);}
void solve(){for(int i=1;i<=3*n;i++)pre[i]=0,f[i]=i,G[i].clear();G[n-1].push_back(1);for(LL i=2;i<=3*n;i++){LL t=n-(i*i)%n;while(t<i){if(t){if(sf(t)==sf(i)){printf("%lld\n",i);return;}f[f[t]]=f[i]; pre[t]=i;}t+=n;}t=i%n;for(int j=0;j<G[t].size();j++){int p=G[t][j];if(pre[p]==i)continue;if(sf(p)==sf(i)){printf("%lld\n",i);return;}f[f[p]]=f[i];}G[n-(i*i)%n].push_back(i);}
}
int main(){while(~scanf("%d",&n))solve();return 0;
}
转载于:https://www.cnblogs.com/forever97/p/ural1682.html
URAL 1682 Crazy Professor (并查集)相关推荐
- URAL 1671 Anansi's Cobweb (并查集)
一道思维题. 传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20482 题意: 有一张无向图.给Q次删边操作,问每次操 ...
- Ural 1671 - Anansi's Cobweb 倒过来做...并查集维护..
题意: 给出一个无向图..然后不断的删边..问每次删边后..整个图是由几个联通块组成的.... 题解: 以前做过一个题..是CF上面的...是不断的删边..并询问某两点的最短路..当时的方法是倒过来. ...
- 【分组并查集讲解】A Bug‘s Life(例题)
举例: 我们开一个两倍大小的并查集.例如,假如我们要维护4个元素的并查集,我们改为开8个单位的空间: 我们用14维护朋友关系(就这道题而言,是指关在同一个监狱的狱友),用58维护敌人关系(这道题里是指 ...
- Friendly Group Gym - 102769F 2020(并查集)ccpc秦皇岛分站赛
题意: n个学生要组成一个小组参加会议(可以不参加), 1.对于每两个朋友(x ,y),如果他们俩都参加会议,该小组的友好价值将会增加 1:如果其中只有一位参加会议,则该组的友好价值将降低 1. 3. ...
- Just for fun----zjfc 并查集操作
题目描述 When I boring , I'm crazy...So I design a BT game just for fun...It's easy... 输入描述 First line i ...
- A Bug‘s Life POJ 2492 加权并查集
A Bug's Life POJ 2492 加权并查集 传送门:http://poj.org/problem?id=2492 Description Background Professor Hopp ...
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法
tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...
最新文章
- linux oraclerman自动备份,Linux平台下的Oracle自动备份案例(使用RMAN)
- sqlite 查询 支持多用户同时_开源时代的后端程序员必须要了解的一个数据库SQLite...
- Linux服务器---网络配置
- SSO模型及单点登录SSO技术选型
- Chrome浏览器插件安装位置
- zigbee cc2530 灌电流 拉电流 上拉电阻
- Nokia落寞身影下 三星成为全球最大手机厂商
- oracle复制一个表的结构图,Oracle复制表结构
- 利用dos进入mysql数据库操作数据
- AE插件Stardust for mac(最强粒子特效)
- Android自定义选座,Android实现电影院选座效果
- linux系统网桥管理工具brctl 安装及使用
- 软件工程标准与软件文档
- 2022-2027年中国暖气片行业市场全景评估及发展战略规划报告
- 当我在做技术管理时,我在做什么?
- 使用Fiddler破解钉钉回放视频不能下载
- c++求一个数的因子
- python游戏功能_python 游戏(龙的国度)
- SpringCloud+SpringCloudAlibaba
- 什么是 SRS 呢?在我们大部分的音频播放器里都内欠有这种音效。