2017.08.19【NOIP提高组】模拟赛B组总结
来源:互联网 发布:网络语雪崩是什么意思 编辑:程序博客网 时间:2024/06/01 21:49
今天感觉无法AK,因为,有一道比较坑的第二题,说是什么莫队算法或者是用lct,我太弱了,又不会莫队,又不会树链剖分,也不会splay,那就只能先放着。总结一下吧。
第一题
题意不讲,感觉其实就是一个堆,跟那个合并果子十分相似,没有什么意义的水题。
第二题
大佬可以秒一秒这道题目:
Description
众所周知,Zjr506是算法之神,因此Ztxz16经常向他请教算法。这一天,Zjr506在教导了Ztxz16关于图论方面的一些算法后,给他出了一道图论题作为家庭作业:
给定N个点,M条无向边,Q个询问,每个询问给定L, R,问连上第L~R条边后,图中有多少联通块(询问之间互不影响)。
Ztxz16智商太低,百思不得其解,只好向你请教这个问题。
Input
第一行输入N M Q
接下来M行每行两个整数代表一条边
接下来Q行每行两个整数代表一个询问
Output
输出Q行,代表这个询问中联通块的个数
Sample Input
3 3 3
1 2
2 3
1 3
1 1
2 3
1 3
Sample Output
2
1
1
Data Constraint
20%的数据保证N, M, Q <= 1000
60%的数据保证N, M, Q <= 50000
100%的数据保证N, M, Q <= 200000, L <= R
反正我现在A不了。
第三题
给你一些点,然后他们之间有一些边,然后选择删掉一些边,使得剩下的边不能构成一个环,要求删去的边的总长度最小。
如果觉得我语文差的话,可以看原题,
Description
Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫。
为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木桩之间绕上藩篱以困住这些猫。
一段时间后,Zjr506在绕了M个藩篱后兴高采烈的离开了。作为正义的使者,Ztxz16不忍心看到这些猫受到折磨,于是决定拆除一些藩篱让所有的猫都逃出去。因为Zjr506的巧妙设计,藩篱不会在除木桩之外的地方相交。这些藩篱构成了一些封闭的区域,每一个区域中都有一只猫。
因为Zjr506制造这些藩篱也不容易,所以Ztxz16希望拆除的藩篱总长度尽量小,现在他希望你告诉他最小的总长度。
Input
第一行两个数 n,m ( 2<=n<=10000 , 1<=m<=50000 )
接下来 n 行 , 每行两个整数 xi,yi, 代表第 i 个木桩的坐标 ( − 10000 ≤ xi, yi ≤ 10000).
接下来 m 行,每行两个整数 pi,qi (1 ≤ pj, qj ≤ N) , 代表木桩 pi 与木桩 qi 之间有一个藩篱。
Output
输出一个实数代表答案,当答案与标准答案差的绝对值不超过0.001时认为它是正确的。
Sample Input
8 8
0 0
3 0
3 3
0 3
1 1
1 2
2 2
2 1
1 2
2 3
3 4
4 1
5 6
6 7
7 8
8 5
Sample Output
4.000000000
Data Constraint
对于20%的数据:
N , M <= 30
对于30%的数据:
N, M <= 300
对于100%的数据:
N <= 10000, M <= 50000
题解:随便搞一下最大生成树就好了,然后用并查集判断是否构成环,然后就没有了。
代码
t3:
var father,x,y:array[1..10000] of longint; a:array[0..50000] of extended; p,q:array[0..50000] of longint; n,m,i,f1,f2:longint; ans:extended;function getfahter(x:longint):longint;begin if (father[x]=0)or(father[x]=x) then father[x]:=x else father[x]:=getfahter(father[x]); exit(father[x]);end;procedure swap(var a,b:longint);var t:longint;begin t:=a; a:=b; b:=t;end;procedure swap1(var a,b:extended);var t:extended;begin t:=a; a:=b; b:=a;end;procedure qsort(x,y:longint);var i,j:longint; mid:extended;begin i:=x; j:=y; mid:=a[(i+j)div 2]; repeat while a[i]>mid do inc(i); while a[j]<mid do dec(j); if i<=j then begin swap(p[i],p[j]); swap(q[i],q[j]); swap1(a[i],a[j]); inc(i); dec(j); end; until i>j; if i<y then qsort(i,y); if x<j then qsort(x,j);end;function euclid(i:longint):extended;begin exit(sqrt(sqr(x[p[i]]-x[q[i]])+sqr(y[p[i]]-y[q[i]])));end;begin readln(n,m); for i:=1 to n do begin readln(x[i],y[i]); end; for i:=1 to m do begin readln(p[i],q[i]); a[i]:=euclid(i); write(a[i]:0:6,' '); ans:=ans+a[i]; end; writeln; qsort(1,m); for i:=1 to m do begin f1:=getfahter(p[i]); f2:=getfahter(q[i]); if f1<>f2 then begin ans:=ans-a[i]; father[f1]:=f2; end; end; writeln(ans:0:9);end.
最后几句
感觉自己还是太傻,t3那么简单的题都没有想到,还是太弱了。
the end
由于我的水平有限,难免会有些写错的地方,希望大家批评指正,多多包容,thank you for your patience.
- 2017.08.19【NOIP提高组】模拟赛B组总结
- 2017.08.19【NOIP提高组】模拟赛B组总结
- 2017.08.05【NOIP提高组】模拟赛B组总结
- 2017.08.06【NOIP提高组】模拟赛B组总结
- 2017.08.14【NOIP提高组】模拟赛B组总结
- 2017.08.15【NOIP提高组】模拟赛B组总结
- 2017.08.16【NOIP提高组】模拟赛B组总结
- 2017.08.17【NOIP提高组】模拟赛B组总结
- 2017.08.18【NOIP提高组】模拟赛B组总结
- 2017.08.18【NOIP提高组】模拟赛B组总结
- 2017.7.6总结【NOIP提高组】模拟赛B组
- 2017.07.15NOIP提高组模拟赛B组总结
- 2017.10.06【NOIP提高组】模拟赛B组总结
- 2017.11.25【NOIP提高组】模拟赛B组总结
- 2017.12.09【NOIP提高组】模拟赛B组总结
- 2017.12.09【NOIP提高组】模拟赛B组总结
- 【初中部 NOIP提高组 二试】模拟赛B总结
- 2017.08.05【NOIP提高组】模拟赛B组
- 设计模式之原型模式
- 面试时遇到的一些题
- 层次遍历、递归:jump-game
- CCPC2017网络赛1005 CaoHaha's staff——找规律
- 安装Python 3.6 在Ubuntu 16.04 LTS 版本
- 2017.08.19【NOIP提高组】模拟赛B组总结
- ajax以get和post方式请求
- hbase的安装和启动
- css3放大显示div(由远及近显示)
- win10下移动硬盘位置不可用无法访问
- 皮克定理
- Android 显示原理简介
- PAT_1073. Scientific Notation
- 邮件系统