1644: 超能陆战队

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 6  Solved: 1
[Submit][Status][Web Board]

Description

在与卡拉汉教授的决战中,小宏发明的微型机器人与小白最后都被吸入了空洞。然而,若干年后的一个下午,大白带着小宏的微型机器人回来了!与大白再次相聚的小宏激动不已。可是由于空洞的强大吸力,微型机器人已经部分损坏,不能像以前一样很好的合体了。当任意两个微型机器人的编号存在不小于p的公共质因子时,他们就能合并!微型机器人都是从x开始连续编号的,并且最后一个微型机器人的编号为y。现在给出p,小宏想知道合体后最少能形成几个机器人

Input

每个样例一行,分别为x,y,p 
0 <= x,y <= 1000000 
p <= 1000000

Output

每个样例输出一行

Sample Input

20 100000 6

Sample Output

8217

HINT

 

Source

解题:并查集乱搞下,TLE不是我的本意,我不知道CSUOJ的服务器到底跑多快,以及是否开启了o2,所以没有设置时限,谁知OJ管理童鞋竟然只给了1s

目前这段代码能够AC

 #include <bits/stdc++.h>
using namespace std;
const int maxn = ;
int a,b,p,tot,prime[maxn],uf[maxn];
bool vis[maxn] = {true,true};
void selectPrime(){
for(int i = ; i < maxn; ++i){
if(!vis[i]) prime[tot++] = i;
for(int j = ; j < tot && prime[j]*i < maxn; ++j){
vis[i*prime[j]] = true;
if(i%prime[j] == ) break;
}
}
}
int Find(int x){
int t = x;
while(uf[x] != x) x = uf[x];
while(uf[t] != t){
int tmp = uf[t];
uf[t] = x;
t = tmp;
}
return x;
}
int main(){
selectPrime();
while(~scanf("%d %d %d",&a,&b,&p)){
if(a > b) swap(a,b);
if(p > b){
printf("%d\n",b - a + );
continue;
}
for(int i = a; i <= b; ++i) uf[i] = i;
for(int i = ; i < tot && prime[i] <= b; ++i){
if(prime[i] >= p){
int t = a/prime[i]*prime[i];
while(t < a) t += prime[i];
int s = t + prime[i];
while(s <= b){
int x = Find(t);
int y = Find(s);
if(x != y) if(i&) uf[x] = y;else uf[y] = x;
s += prime[i];
}
}
}
int ans = ;
for(int i = a; i <= b; ++i)
if(uf[i] == i) ans++;
printf("%d\n",ans);
}
return ;
}

已经改成3s了

CSUOJ 1644 超能陆战队的更多相关文章

  1. csuoj 1511: 残缺的棋盘

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 1511: 残缺的棋盘 时间限制: 1 Sec  内存限制: 128 MB 题目描述 输入 ...

  2. 1644 免费馅饼 题解(c++)(S.B.S.)

    1644 免费馅饼(巴蜀oj上的编号) 题面:          SERKOI最新推出了一种叫做“免费馅饼”的游戏.         游戏在一个舞台上进行.舞台的宽度为W格,天幕的高度为H格,游戏者占 ...

  3. csuoj 1354: Distinct Subsequences

    这个题是计算不同子序列的和: spoj上的那个同名的题是计算不同子序列的个数: 其实都差不多: 计算不同子序列的个数使用dp的思想: 从头往后扫一遍 如果当前的元素在以前没有出现过,那么dp[i]=d ...

  4. BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课( BFS )

    BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #inclu ...

  5. BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课

    题目 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec  Memory Limit: 64 MB Description 考虑一 ...

  6. 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课

    1644: [Usaco2007 Oct]Obstacle Course 障碍训练课 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 383  Solved ...

  7. CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划)

    CJOJ 1644 编辑距离 / Luogu 2758 编辑距离(动态规划) Description 字符串是数据结构和计算机语言里很重要的数据类型,在计算机语言中,对于字符串我们有很多的操作定义,因 ...

  8. 一本通1644【例 4】佳佳的 Fibonacci

    1644:[例 4]佳佳的 Fibonacci 时间限制: 1000 ms         内存限制: 524288 KB sol:搞了大概一个多小时什么结果都没,被迫去看题解,感觉自己菜到家了qaq ...

  9. TJU Problem 1644 Reverse Text

    注意: int N; cin >> N; cin.ignore(); 同于 int N; scanf("%d\n",&N); 另:关于 cin 与 scanf: ...

随机推荐

  1. 怎样創建 iOS 展開式 UITableView?

    原文:http://www.appcoda.com.tw/expandable-table-view/ 译者:kmyhy(appcoda的驻站译者) 幾乎全部的 App 都會以導航的方式向用戶展示多個 ...

  2. 日期格式,Popup的使用方法,RenderTransform与LayoutTransform的区别

    1.画个笑脸给大家娱乐一下: <Canvas Width="200" Height="180" VerticalAlignment="Cente ...

  3. [poj 3904] sky code 解题报告(组合计算+容斥原理)

    题目链接:http://poj.org/problem?id=3904 题目大意: 给出一个数列,询问从中取4个元素满足最大公约数为1的方案数 题解: 很显然,ans=总的方案数-最大公约数大于1的4 ...

  4. ScrollView嵌套GridView不显示顶部

    /*     * scrollView中嵌套GridView不能显示头部     *      * 方案①:scrollView.smoothScrollTo(0, 0);     *      * ...

  5. javascript 优秀写法

    http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices

  6. GoldenGate 应用系统升级

    (仅复制DML时)源端和目标端数据库增减复制表 增加复制表 在GoldenGate的进程参数中,如果通过*来匹配所有表,因此只要符合*所匹配的条件,那么只要在源端建立了表之后GoldenGate就能自 ...

  7. App开发Native.js入门指南

    概述 Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展 ...

  8. 禁用cache

    Z:\src\services\network\network_context.cc:http_cache_enabled

  9. Linux启动用户空间-init初始化进程

  10. vscode 调试vue.js程序

    npm install -g vue-cli                //安装vue-clivue init webpack projectName  //创建项目 1.Ctrl+~ 打开命令行 ...