源哥每日一题第十九弹 poj 2236 还是冰茶集

连接:http://poj.org/problem?id=2236

题意:有一堆坏电脑,和两种操作:O表示修好这台电脑,S 询问两台电脑是否联通。主要是判电脑是否联通:两台电脑间距离小于d就是联通的。

题解:emmm……直接写啊

#include <iostream>
#include <cstdio>

using namespace std;
int n;
long long d;
int pre[1005];
int jud[1005];
struct coor
{
    long long x,y;
}p[1005];

int find(int x) {
    int r = x;
    while(pre[r]!=r) r = pre[r];
    int i = x,j;
    while(i!=r) {
        j = pre[i];
        pre[i] = r;
        i = j;
    }
    return r;
}

int main(int argc, char const *argv[]) {

    int n,d;
    cin >> n >> d;
    for (int i = 1; i <= n; i++) {
        cin >> p[i].x >> p[i].y;
        pre[i] = i;
        jud[i] = 0;
    }
    char s;
    int x,y;
    while(cin >> s) {

        if(s ==‘S‘) {
            cin >> x >> y;
            if(find(x) == find(y)) {
                puts("SUCCESS");
            } else {
                puts("FAIL");
            }
        } else {
            cin >> x;
            for (int i = 1; i <= n; i++) {
                if(jud[i] && (p[x].x-p[i].x)*(p[x].x-p[i].x)+(p[x].y-p[i].y)*(p[x].y-p[i].y) <=d*d){
                    pre[find(x)] = find(i);
                }
            }
            jud[x] = 1;
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/fengyuzhicheng/p/9193790.html

时间: 2024-10-03 08:08:00

源哥每日一题第十九弹 poj 2236 还是冰茶集的相关文章

源哥每日一题第十八弹 poj 1182 并查集

题目链接:http://poj.org/problem?id=1182 题意:看不懂?退群吧 比平常的并查集加了一个判断集合间关系的操作: 开一个数组记录当前点所在集合的次序(第几个集合)用012表示 比较简单的思路,不过体现了并查集的精妙 #include <iostream> #include <cstring> #include <cstdio> using namespace std; int dad[500005]; int st[50005]; int fi

源哥每日一题第十四弹 hdu 1565 还是状压dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1565 题意:自己念 分析:有了上一题的基础,这题的状态方程也好想:dp[i][s]表示第i行第s个状态取得的最大值. 可以预处理出每一行每一种状态所能获得的值,方程就是dp[i][j] = max(dp[i][j],dp[i-1][k]+sum[i][j]); 要注意的就是判断相邻的情况:两个状态,如果a&b!=0则表示它们有相重叠的区域. #include <bits/stdc++.h> u

源哥每日一题第20弹 poj 1272 还是冰茶集

连接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 题意:要 要 要 要啥题意啊就是问题这个东西是不是一颗树 解决方式有很多种,说是冰茶集,但是你用别的方法也可以做啊~ 思路:首先作为一棵树一定满足顶点数等于边数+1,但只满足了这个条件也不行(脑补一个圆)判断方法:比方说a和b俩节点,他俩爹要是一样,你再把a和b连上,那不就有环了吗 p.s. 我记得这个题在hdu上会爆栈来着-- 还想硬广一下 #pragma comment(linker, "/S

源哥每日一题第十三弹 百练4124:海贼王之伟大航路 状压dp

连接:http://bailian.openjudge.cn/practice/4124 题意:从1到n走过所有点恰好一次最短时间.乱搞的话会完美的超时(阶乘级别的复杂度,虽然范围很小,但是也足够超时了). 思路:先想一个不太成熟的思路.用dp[s][j]表示.s记录的是每个点是否被走过的状态.而dp[s][j]表示的是从1走到j状态所用的最小时间.这样的思路成不成立呢?首先,考虑初始值.开始是在1号点,那么dp[1][1]自然就是0了,其他就是max:另外,题面说只要遍历每一个点,而于顺序的话

每日算法之二十九:Search in Rotated Sorted Array

在一个经过旋转后的有序数组中查找一个目标元素. Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search. If found in the array return its index, otherwise return -1.

Yii源码阅读笔记(二十九)

动态模型DynamicModel类,用于实现模型内数据验证: namespace yii\base; use yii\validators\Validator; /** * DynamicModel is a model class primarily used to support ad hoc data validation. * DynamicModel是一种主要用于支持ad hoc数据验证模型类 * * The typical usage of DynamicModel is as fo

爱创课堂每日一题第十六天为什么HTTPS安全?

因为网络请求需要中间有很多的服务器路由器的转发.中间的节点都可能篡改信息,而如果使用HTTPS,密钥在你和终点站才有.https之所以比http安全,是因为他利用ssl/tls协议传输.它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等.保障了传输过程的安全性

爱创课堂每日一题第十天创建ajax过程?

(1)创建`XMLHttpRequest`对象,也就是创建一个异步调用对象.    (2)创建一个新的`HTTP`请求,并指定该`HTTP`请求的方法.`URL`及验证信息.    (3)设置响应`HTTP`请求状态变化的函数.    (4)发送`HTTP`请求.    (5)获取异步调用返回的数据.    (6)使用JavaScript和DOM实现局部刷新.    var xmlHttp = new XMLHttpRequest();    xmlHttp.open('GET','demo.p

爱创课堂每日一题第二十四天-ETag应用?

Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改.常见的是使用If-None-Match.请求一个文件的流程可能如下: ====第一次请求=== 1.客户端发起 HTTP GET 请求一个文件: 2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和已经开启了Etag).状态码200 ====第二次请求=== 客户端发起 HTTP