1023
2016-06-26 12:19
211 查看
题目编号:1023
题目大意:也一群人在一个体育馆找位置,体育馆座位有300且环绕成一个圈。给出若干两个人的距离,表示B在A的顺时针开始的距离值。求给出的若干关系不正确的个数,也就是后来的座位与前面的有冲突。
解题思路:这个题目是典型的并查集问题,只是对比以前的模版有点区别,这道题的解题关键也就在合并的函数上了。首先输入,然后进入函数,假设是A和B两个人。合并A,B时,假设A,B属于不同的树,那么就要合并这两棵树, 把A树合并到B树上,这时要给A树的跟结点赋值,关键是附上一个什么值呢。由于A点和B点的权值brr[A]和brr[B]都是相对跟结点的距离,所以分析A,B之间的相对距离即可。然后返回bool类型,判断标记加1。最后输出即可。
做题感想:没什么时间做题了,感觉这题还是比较简单的就做了,主要是套用并查集的模版,再进行改装一下。#include<iostream>
#include<cmath>
using namespace std;
int arr[50001],brr[50001],n,m,i,s;
int find(int x)
{
if(x==arr[x])
return arr[x];
int t=arr[x];
arr[x]=find(arr[x]);
brr[x]+=brr[t];
return arr[x];
}
bool YJY(int x,int y, int m){
int a=find(x);
int b=find(y);
if(a==b)
{
if(brr[x]+m!=brr[y])
return false;
return true;
}
arr[b]=a;
brr[b]=brr[x]+m-brr[y];
return true;
}
int main()
{
int a,b,x;
while(cin>>n>>m)
{
for( i=0;i<=n;++i)
{
arr[i]=i;
brr[i]=0;
}
s=0;
for(i=0;i<m;++i)
{
cin>>a>>b>>x;
if(!YJY(a,b,x))
{
++s;
}
}
cout<<s<<endl;
}
return 0;
}
题目大意:也一群人在一个体育馆找位置,体育馆座位有300且环绕成一个圈。给出若干两个人的距离,表示B在A的顺时针开始的距离值。求给出的若干关系不正确的个数,也就是后来的座位与前面的有冲突。
解题思路:这个题目是典型的并查集问题,只是对比以前的模版有点区别,这道题的解题关键也就在合并的函数上了。首先输入,然后进入函数,假设是A和B两个人。合并A,B时,假设A,B属于不同的树,那么就要合并这两棵树, 把A树合并到B树上,这时要给A树的跟结点赋值,关键是附上一个什么值呢。由于A点和B点的权值brr[A]和brr[B]都是相对跟结点的距离,所以分析A,B之间的相对距离即可。然后返回bool类型,判断标记加1。最后输出即可。
做题感想:没什么时间做题了,感觉这题还是比较简单的就做了,主要是套用并查集的模版,再进行改装一下。#include<iostream>
#include<cmath>
using namespace std;
int arr[50001],brr[50001],n,m,i,s;
int find(int x)
{
if(x==arr[x])
return arr[x];
int t=arr[x];
arr[x]=find(arr[x]);
brr[x]+=brr[t];
return arr[x];
}
bool YJY(int x,int y, int m){
int a=find(x);
int b=find(y);
if(a==b)
{
if(brr[x]+m!=brr[y])
return false;
return true;
}
arr[b]=a;
brr[b]=brr[x]+m-brr[y];
return true;
}
int main()
{
int a,b,x;
while(cin>>n>>m)
{
for( i=0;i<=n;++i)
{
arr[i]=i;
brr[i]=0;
}
s=0;
for(i=0;i<m;++i)
{
cin>>a>>b>>x;
if(!YJY(a,b,x))
{
++s;
}
}
cout<<s<<endl;
}
return 0;
}
相关文章推荐
- sudo的使用场景
- python模块之XlsxWriter
- Linux centos下让alias自定义永久生效(+常用的别名)
- Python lambda 匿名函数 基础知识篇
- DuiLib学习(九)--按钮风格
- 虚拟主机上部署安装TzuiCMS程序图文教程
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- tiny4412sdk-1506原生uboot卡死
- Google Play services工程
- Python中API调用的几种类型
- API调用的几种类型
- jquery.jqprint.js 实现打印
- Python基础(二)
- 用java做一个最小的操作系统内核2.
- 【转自三国杀吧】【一】身份局窘境:不过无处停摆~
- Python基础(一)
- GCD和NSThread延时执行对比
- Android 自定义水平进度条的圆角进度
- Linux启动/停止/重启Mysql数据库的方法
- maven不会把jar包部署到tomcat上