BZOJ 4195 -- NOI(P?) 2015 程序自动分析
来源:互联网 发布:stm32用ucos还是linux 编辑:程序博客网 时间:2024/04/27 03:49
这道NOI的题看起来很水,我这不到NOIP的水平的人都能A掉。
但毕竟水平洼,交到第4次才A,原因是,map的操作掌握的不熟练。
这道题用我学长的话来说就是并查集乱搞,用某大大大神犇的话说就是用并查集瞎**乱搞。
对,这道NOI的题,只需要一个并查集就可以。
不过一开始看到i,j的范围10亿还给吓到了,数组开不了这么大,不过又有n的范围是10万,也就是说最多有20万个数,还数上了相同的。
所以简单的离散化就可以。
#include <cstdio>#include <algorithm>#include <cstring>#include <map>#define M 100005using namespace std;int t, n, flag;int fa[M*2], s[M*2];struct query{ //用结构体的话这份代码在COGS上是过不了的,会T,只要把结构体去掉,换成3个数组就好了int i, j, e;}q[M];int find(int x){return x == fa[x] ? x : fa[x] = find(fa[x]);}int main(){scanf("%d", &t);while(t--){flag = 1;memset(s, 0, sizeof s);scanf("%d", &n);for(int k = 1; k < M*2; k++) fa[k] = k;for(int k = 1; k <= n; k++){scanf("%d %d %d", &q[k].i, &q[k].j, &q[k].e);s[++s[0]] = q[k].i;s[++s[0]] = q[k].j;}sort(s+1, s+s[0]);map <int, int> m;for(int k = 1; k <= s[0]; k++)m.insert(pair<int,int>(s[k], k)); // 就是这里,s[k]与k的位置不能搞反,才能通过s[k]检索kfor(int k = 1; k <= n; k++)if(q[k].e) {int a = find(m[q[k].i]), b = find(m[q[k].j]);if(a != b) fa[a] = b;}for(int k = 1; k <= n; k++)if(!q[k].e){int a = find(m[q[k].i]), b = find(m[q[k].j]);if(a == b) {printf("NO\n"); flag = 0; break;}} if(flag) printf("YES\n");}return 0;}
0 0
- BZOJ 4195 -- NOI(P?) 2015 程序自动分析
- 程序自动分析 [Bzoj 4195,Noi 2015]
- 【并查集】【NOI 2015】【bzoj 4195】程序自动分析
- NOI 2015 程序自动分析
- NOI 2015 程序自动分析
- noi 2015 程序自动分析
- NOI 2015 程序自动分析
- NOI 2015 程序自动分析
- BZOJ 4195 程序自动分析
- BZOJ 4195 [Noi2015] 程序自动分析
- BZOJ 4195 [Noi2015]程序自动分析
- NOI 2015 DAY1 T1 程序自动分析 并查集+离散化
- BZOJ 4195 && NOI 2015 并查集
- bzoj 4195: [Noi2015]程序自动分析 hash+并查集
- BZOJ 4195 & UOJ 127 [Noi2015]程序自动分析
- BZOJ 4195: [Noi2015]程序自动分析 哈希表 并查集
- BZOJ 4195 [Noi2015]程序自动分析 并查集
- BZOJ-4195 NOI2015Day1T1 程序自动分析 并查集+离散化
- 字符串_字符串翻转输出
- hdoj2456饭卡【01背包】
- MFC 消息截取简单说一下
- 大数据量高并发访问的数据库优化方法
- hdoj2126Buy the souvenirs【01背包+不同组合记录】
- BZOJ 4195 -- NOI(P?) 2015 程序自动分析
- 【图论】NOIP2009最优贸易
- POJ 1080 Human Gene Functions(DP)
- Tomcat总体架构(Tomcat源码解析系列二)
- 字典树
- 大浪淘沙,JSP终将死去
- 剑指Offer面试题39(Java版):二叉树的深度
- Ubuntu 安装搜狗输入法
- UIButton