25.2.9总结

(思维题还是太超标了,建议削一削)

a,b为t在s中左上角坐标,一一对比即可(大胆点数据量比较小,直接四层循环也能做,但是我是胆小鬼)

cpp 复制代码
#include<iostream>
using namespace std;
char a[10000][10000];
char b[10000][10000];
int n, m;
void find(int i, int j) {
    for (int p = 1; p <= m; p++) {
        for (int q= 1; q <= m; q++) {
            if (a[i + p - 1][j + q - 1] != b[p][q])           
            return;
        }
    }
    cout << i << " " << j;
    return;
}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> a[i][j];
        }
    }
    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= m; j++) {
            cin >> b[i][j];
        }
    }
    for (int i = 1; i <= n-m+1; i++) {
        for (int j = 1; j <= n-m+1; j++) {
            if (a[i][j] == b[1][1])find(i, j);
        }
    }
    return 0;
}

(不会,学长的思路)

把有朋友关系的人连上边,一个连通块内的所有人都可以通过若干次操作来互相成为朋友。求出每个连通块的大小,人数和已有的朋友关系,就可以求出连通块内未有的朋友关系,也就是答案。这个过程可以用并查集维护

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n, m;
const int pp = 100000;
int sz[pp], lsz[pp], f[pp];
bool vis[pp];
long long ans = 0;
int find(int x) {
    if (x == f[x]) return x;
    return f[x] = find(f[x]);
}
int main() {
    for (int i = 0; i < pp; i++) {
        sz[i] = 0;
        lsz[i] = 1;
        f[i] = i;
    }
    cin >> n >> m;
    for (int i = 1; i <= m; i++) {
        int x, y;
        cin >> x >> y;
        int xx = find(x);
        int yy = find(y);
        if (xx == yy) {
            sz[xx]++;
        }
        else {
            f[xx] = yy;
            lsz[yy] += lsz[xx];
            sz[yy] = sz[yy] + sz[xx] + 1;
        }
    }
    for (int i = 1; i <= n; i++) {
        int fx = find(i);
        if (vis[fx]) continue;
        vis[fx] = true;
        ans += (long long)lsz[fx] * (lsz[fx] - 1) / 2 - sz[fx];
    }
    cout << ans;
    return 0;
}

(ok准备下播)

相关推荐
霍霍的袁16 分钟前
【C++11】左值右值引用与移动语义详细笔记(左值右值、右值引用、移动构造、移动赋值、引用折叠、万能转发)
c++·笔记·学习·visual studio
布莱克60519 分钟前
C++ 中 unordered_set 与 unordered_map 有什么不同?一篇讲透
开发语言·c++·哈希
小豆庄22 分钟前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
海清河晏11129 分钟前
加油站问题
数据结构·算法·leetcode
GG.WinGel42 分钟前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
艾iYYY1 小时前
进程的状态
算法
秋天的怀念_David1 小时前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法
鶴哥只手遮天1 小时前
AFSIM 2.9.0 深度解析:架构、原理与工程实践-第 1 章 项目全景与代码地图
c++
CV爱数码1 小时前
论文精读|RED-CNN:残差编解码网络,低剂量 CT 去噪的经典基线
网络·人工智能·算法·cnn·ct·重建·x-ray
充值内卷1 小时前
C++单文件迷宫游戏:TauriCPP 开发全记录
开发语言·c++·游戏