![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bingchaji
山东章鱼哥
这个作者很懒,什么都没留下…
展开
-
A - Wireless Network
本题运用并查集来进行解决,刚刚学习并查集,在union处出错了,还要进行注意;下面见ac代码#include#include#include #includeusing namespace std;const int maxn=3000+10;int x[maxn],y[maxn],par[maxn];int repair[maxn]={0};int n,len;doub原创 2018-02-01 14:16:30 · 164 阅读 · 0 评论 -
N - Is It A Tree?
本题跟M题很像,但比它简单,只要当0,0时判断就行了,之后再初始化#include#include#includeusing namespace std;const int maxn=100010;int par[maxn],p[maxn],t[maxn];int cnt,temp;bool flag; int find(int x){ //cout<<"here"<<end原创 2018-02-06 16:06:48 · 142 阅读 · 0 评论 -
M - 小希的迷宫
本题关键一点在输入上,再之后就是再判断根节点是否有两个上,一般的条件是,如果两个父节点重复的话,则不满足情况,并且,在par数组上要初始化为0,对应的find函数也要改变#include#include#includeusing namespace std;const int maxn=100010;int par[maxn],p[maxn],t[maxn];int cnt,t原创 2018-02-06 14:52:59 · 130 阅读 · 0 评论 -
L - Connections in Galaxy War
本题题意为给定逐个点的力量值,再给出通道数,和询问数,要求给出询问点的来救援的点,本题我是百度出来的,下面写法也一致,本题是反过来输出结果,利用栈来实现#include#include#include#includeusing namespace std;const int maxn=20000+1000;const int Big=10000;int h[maxn],power原创 2018-02-05 20:37:42 · 205 阅读 · 0 评论 -
J - A Bug's Life
本题跟是一个分类的并查集,我看了百度才出来的,关键是有一个数组来区分这个数据究竟属于哪一类#include#includeusing namespace std;const int maxn=2000+100;int val[maxn],par[maxn];int flag,n;int find(int x)//通过find来寻找父节点同时寻找性别关系 { int k=par[原创 2018-02-03 15:51:38 · 187 阅读 · 0 评论 -
G - Supermarket
本题题意是很好理解的,输出最大的利润,但是我怎么都想不到运用并查集来做,后来百度,看了“无忧望月”的博客,才知道的,下面的代码也是看了他的才写出来的,ps,记得在操作之前初始化#include#include#include using namespace std;const int maxn=10000+100;int par[maxn];struct node{ int pi原创 2018-02-03 12:43:39 · 155 阅读 · 0 评论 -
E - 食物链
关于本题和上题一样,运用一定的数学知识,这题我是百度才出来的,关于公式如何推出的还有点一知半解,初学还有很多要学啊#include#includeusing namespace std;const int maxn=50000+50;int par[maxn],r[maxn];int n,ans;int find(int x){ int k=par[x]; if(k!=x)原创 2018-02-02 16:25:07 · 245 阅读 · 0 评论 -
D - How Many Answers Are Wrong
本题关键是记录每个顶点代表的值,然后又要记录最左端记录的值,并且本题的输入部分要用EOF来,输入有多组连续的数据#include#include#includeusing namespace std;const int maxn=400000+2000;int par[maxn],val[maxn];int n,ans;int find(int x){ int k=par[x原创 2018-02-02 14:10:00 · 412 阅读 · 0 评论 -
C - How Many Tables
本题在并查集的运用外,注意使用map来去重并同时进行统计,注意map的使用方式;#include#include#includeusing namespace std;const int maxn=1000+10;int dis[maxn],par[maxn];map num;int n,len;int find(int x){ return par[x]==x?x:par原创 2018-02-01 21:45:31 · 117 阅读 · 0 评论 -
B - The Suspects
本题刚开始做的时候,超时了一次,然后发现读入数组时用了二维数组来做,其余的跟A题没有去区别下面见ac代码#include#include#include#includeusing namespace std;const int maxn=30000+10;const int maxm=500+10;int par[maxn],num[maxn];map all;int stu原创 2018-02-01 16:04:40 · 139 阅读 · 0 评论 -
H - Parity game
本题关键在父节点的初始化上,应该初始化为-1,这样才能方便判断#include#include#include#includeusing namespace std;const int maxn=10000+100;int par[maxn],val[maxn];int n,m,cnt;bool flag;map mp;int Insert(int x){ if(!mp原创 2018-02-06 17:42:47 · 269 阅读 · 0 评论