首页 > TAG信息列表 > find1

模拟散列表开放寻址法

#include <iostream> #include <cstring> using namespace std; const int N=200003,null=0x3f3f3f3f; int h[N]; bool find1(int x){ int k=(x%N+N)%N; while(h[k]!=null && h[k]!=x){ k++; if(k==N) k=0; } return

CF1559D1. Mocha and Diana (Easy Version)

原题链接:1559D1. Mocha and Diana (Easy Version) 题意: 小明和小红各有一个具有\(n\)个结点的森林,现执行操作: 加一条边,使得两人的森林还是森林 小明加一条\((u, v)\)的边,那么小红也必须加一条\((u, v)\)的边。 问我们最多能加多少边? 思路: 很明显,第一个条件没啥用,关键是第二个条

NC16591 关押罪犯

题目链接 题目链接 题意 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越

【最详细解析】1052 卖个萌 (20分)_28行代码AC

立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总——>传送门 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求

牛客8 E Explorer 线段树分治

题意: n 个点 m 条双向边  每条双向边有一个上界 和一个下界   当     尺寸     下界<=(size)<=上界 时才可以通过   问有多少种尺寸可以从1 到n   #include<bits/stdc++.h>using namespace std;//input by bxd#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define rep

[BZOJ]4998: 星球联盟

 题解: LCT+并查集  查询环上元素个数 #include <algorithm>#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <stack>#include <queue>#include <cmath>#include <set>#include <map>#def

家庭房产L2-007

较为麻烦的并查集 主要是我的模板是错的检查了好久。。。。 先是输入 把每个家庭连在一起  输出的家庭编号为该家庭所有编号的最小值  在并查集里面完成 第一次 0~n-1遍历储存好 家庭编号 和房子面积和数量 第二次0~N遍历 遍历家庭人数  第三遍 处理人均面积和家庭数量和人均数

[BZOJ]2959: 长跑

题解:   我们考虑一条链时 答案为链上和  路径上有环时  这个环上的点都会产生贡献  然后我们可以 用并查集来维护LCT  有环时直接缩成一个点即可 #include <algorithm>#include <iostream>#include <cstring>#include <cstdio>#include <vector>#include <stack>#include <

[BZOJ]3060: [Poi2012]Tour de Byteotia

题解:首先我们忽略<=k这个条件  可以得出每形成一个环就需要删掉一条边  那么并查集搞一下  就可以得出答案  那么对于k的限制  我们先把两点都大于k的边处理掉 然后剩下的继续并查集搞一下 就完了 #include <algorithm>#include <iostream>#include <cstring>#include <cstd