1628

加了些数论知识  先看下剩余类的概念

一个整数被正整数n除后,余数有n种情形:0,1,2,3,…,n-1,它们彼此对模n不同余。这表明,每个整数恰与这n个整数中某一个对模n同余。这样一来,按模n是否同余对整数集进行分类,可以将整数集分成n个两两不相交的子集。我们把(所有)对模n同余的整数构成的一个集合叫做模n的一个剩余类。

对于a%k=x b%k=y  若x!=y  a与b有边相连 则a的剩余类  与b的剩余类l里的元素也是可以相连的  即 a ->b->a+k->b+k->a 所以有环

若x==y 则同一剩余类里元素都可以相连 a->a+k->a+2k->a 成环 且不会大于3*k

然后利用并查集就可以了 用vector存下可以与其满足对k取余为0的剩余类 枚举t t+k t+2*k时的情况 是不是形成 了环

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 300010
#define LL long long
vector<LL>q[N];
LL f[N];
LL find(LL x)
{
if(x!=f[x])
f[x] = find(f[x]);
return f[x];
}
int main()
{
LL i,j,k;
int flag = ,g;
scanf("%lld",&k);
for(i = ; i <= k*; i++)
f[i] = i;
for(i = ; i < k ; i++)
{
LL tt = (i*i)%k;
q[i].push_back((k-tt)%k);
q[(k-tt)%k].push_back(i);
}
for(i = ; i < k ; i++)
sort(q[i].begin(),q[i].end());
for(i = ; i <= k* ; i++)
{
int io = i%k;
int tt = unique(q[io].begin(), q[io].end()) - q[io].begin();
int t;
for(j = ; j < tt ; j++)
{
t = q[io][j];
if(t<i&&t>)
{
int tx = find(i);
int ty = find(t); if(tx==ty)
{
flag = ;
break;
}
else
f[tx] = ty;
}
if(t+k<i)
{
int tx = find(i);
int ty = find(t+k);
if(tx==ty)
{
flag = ;
break;
}
else
f[tx] = ty;
}
if(t+*k<i)
{
int tx = find(i);
int ty = find(t+*k);
if(tx==ty)
{
flag = ;
break;
}
else
f[tx] = ty;
}
}
if(flag)
{
g = i;
break;
}
}
if(flag)
printf("%d\n",g);
else
printf("-1\n");
return ;
}

1682. Crazy Professor(并查集)的更多相关文章

  1. URAL 1682 Crazy Professor (并查集)

    [题目链接] http://acm.timus.ru/problem.aspx?space=1&num=1682 [题目大意] 给出k,从1开始不断地加一并把这个数写在黑板上,如果写上的数字和 ...

  2. ural1682 Crazy Professor

    Crazy Professor Time limit: 1.0 secondMemory limit: 64 MB Professor Nathan Mathan is crazy about mat ...

  3. *HDU1829 并查集

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  4. POJ 2492 并查集扩展(判断同性恋问题)

    G - A Bug's Life Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  5. hdu 1829 A Bug's Life(分组并查集(偏移量))

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  7. hdu 1829 A Bug's Life(并查集)

                                                                                                    A Bu ...

  8. 【POJ】2492 A bug's life ——种类并查集

    A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 28211   Accepted: 9177 De ...

  9. POJ 2492 并查集应用的扩展

    A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 28651 Accepted: 9331 Descri ...

随机推荐

  1. php截取字符串的实例代码(支持utf-8)

    分享下php中截取字符串的例子,支持utf-8格式. 1,截取字符串 <?php $string="2006年4月我又长大了一岁!"; echo substr($string ...

  2. maven项目转eclipse工程的命令:eclipse.bat

    call mvn clean:clean call mvn eclipse:eclipse -DdownloadSources=true @pause 复制以上内容,保存为eclipse.bat 以后 ...

  3. centos架设FTP服务器

    1.安装vsftp在这里,我们架设的是虚拟用户,所谓虚拟用户就是没有使用真实的帐户,只是通过某种手段达到映射帐户和设置权限的目的.yum -y install vsftpd在CentOS中,这样就可以 ...

  4. The main roles of LTE eNodeB.

    eNB的功能包括: RRM(无线资源管理) IP头压缩 用户数据流加密 UE附着时的MME选择 寻呼信息的调度传输 广播信息的调度传输 设置和提供eNB的测量 CMC(连接移动性控制) 动态资源分配 ...

  5. Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField

    关联关系字段 (Relationship fields) ForeignKey,ManyToManyField与OneToOneField分别在Model中定义多对一,多对多,一对一关系. 例如,一本 ...

  6. bootstrap 框架选型过程

    1.看有没有帮助文档,帮助文档的完整程度. 2.是否是我们业务需要的,花哨的功能真的有用吗? 对于偏pc端使用的系统 toggles意义不大 bootstrap和extjs的区别是什么呢? easyU ...

  7. C++ 字符串各种处理

    要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...

  8. 如何在Linux下重命名多个文件

    在Linux中,当你想要改变一个文件名,使用mv命令就好了.然而mv不能使用通配符重命名多个文件.可以用sed.awk或者与xargs结合使用来处理多个文件的情况.然而,这些命令行即繁琐又不友好,并且 ...

  9. office安装不了 “windows installer 服务不能更新一个或多个受保护的windows文件”

    出现这种情况可能是系统中某些文件缺失了,一般发生于安装GHOST版或做过精简的系统 打开C:\WINDOWS\msagent 看看文件夹中内容是不是如下图所示: 再打开C:\Program Files ...

  10. js解决checkbox全选和反选的问题

    function SelectAll() { var checkboxs=document.getElementsByName("chk_list"); for (var i=0; ...