bingchaji
山东章鱼哥
这个作者很懒,什么都没留下…
展开
-
A - Wireless Network
本题运用并查集来进行解决,刚刚学习并查集,在union处出错了,还要进行注意; 下面见ac代码 #include #include #include #include using 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 · 165 阅读 · 0 评论 -
N - Is It A Tree?
本题跟M题很像,但比它简单,只要当0,0时判断就行了,之后再初始化 #include #include #include using 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 #include using 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 #include using 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 #include using 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 #include using 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 #include using 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 #include using 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 #include using 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 · 141 阅读 · 0 评论 -
H - Parity game
本题关键在父节点的初始化上,应该初始化为-1,这样才能方便判断 #include #include #include #include using 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 评论