2020-08-08

明天继续,立个flag,投入不到七小时就干脆别浪费这个时间了,哪怕是看ccpc直播也要凑够时间,否则退群该干啥干啥。
今天勉强算完成任务了,收工。虽然效率不算太高,而且学的东西比较杂,顺带着还补了下时间复杂度相关知识,竞赛知识介绍。不过初学阶段,可以理解。不能让人原谅的的是为什么这个时候了还是初学阶段,之前都干啥了?
算了,追究也没啥用处。
山理工教练的演讲对我还是感触比较大的。他们算山里人,我们怕是就是在山里种地的。说实话,我们学校这方面的实力还是差太多了。
暂时计划先放一下图论,补补前面的一些基本算法知识,然后多做点练习题。拓扑排序已基本初步掌握。
并查集这边学起来相对比较顺利,但是总做水题感觉也挺无聊的。
附上今天做的最后一题,难得一次AC,留作纪念(虽然debug的时候卡了测试样例)。不过这题目没有啥总结价值。
poj2236

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <map>
#include <vector>

using namespace std;
const int MAXN = 1005;
int repaired[MAXN];
vector<int> connect[MAXN];
struct computer {
    int x, y;
} c[MAXN];
int F[MAXN];
int n, d;
void init() {
    memset(F, -1, sizeof(F));
    memset(repaired, 0, sizeof(repaired));
    for (int i = 0; i < MAXN; i++)
        connect[i].clear();
}
void build_connect() {
    for (int i = 1; i <= n; i++) {
        for (int j = i + 1; j <= n; j++) {
            int dis = (c[i].x - c[j].x) * (c[i].x - c[j].x) + (c[i].y - c[j].y) * (c[i].y - c[j].y);
            if (dis <= d * d) {
                connect[i].push_back(j);
                connect[j].push_back(i);
            }
        }
    }
}
int find(int x) {
    int r = x;
    while (F[r] != -1)
        r = F[r];
    int i = x, j;
    while (i != r) {
        j = F[i];
        F[i] = r;
        i = j;
    }
    return r;
}
void union_set(int x, int y) {
    int u = find(x), v = find(y);
    if (u != v) F[v] = u;
}
int main() {
#ifdef LOCAL
    freopen("zz_in.txt", "r", stdin);
    freopen("zz_op.txt", "w", stdout);
#endif
    init();
    scanf("%d %d", &n, &d);
    for (int i = 1; i <= n; i++) {
        scanf("%d %d", &c[i].x, &c[i].y);
    }
    build_connect();
    char flag;
    int p, q;
    getchar();
    while (~scanf("%c", &flag)) {
        // cout << flag << endl;
        if (flag == 'O') {
            scanf("%d", &p);
            repaired[p] = 1;
            for (int i = 0; i < connect[p].size(); i++) {
                if (repaired[connect[p][i]]) union_set(p, connect[p][i]); //connect[p][i]写成了i
                // union_set(p, i);
            }
        }
        if (flag == 'S') {
            scanf("%d %d", &p, &q);
            if (repaired[p] && repaired[q] && find(p) == find(q)) {
                printf("SUCCESS\n");
            } else {
                // cout << find(p) << " " << find(q);
                printf("FAIL\n");
            }
        }
        getchar();
    }

#ifdef LOCAL
    printf("Time used = %.2f\n", (double) clock() / CLOCKS_PER_SEC);
#endif
    return 0;
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值