齿轮

HYSBZ - 4602

题意:很好理解就不啰嗦了。

致谢:感谢队友小明。

题解:嗯,一开始想到的是并查集,后来,就先看了另一道题,xj写dfs和暴力,就卡死了。于是来补这题了,前向星建图

题解:本题正解是考察并查集,不过这里就不说了,等到以后再说了。这题是用dfs来实现。

Step1:很好想到就是把每一个齿轮搜索一下,(假设现在搜索u齿轮,可以往简单的方向想,即u转了一圈)然后把和u相连接的齿轮v判断一下,把v转的圈数存起来,因为接着要搜索v,判断与v相连的齿轮转的圈数(要存起来,后面会用到,step2里面,所以开个数组mo[])。这个时候就需要一个vis[]数组,来记录这个点时候判断过了。

Step2:如果和u相连的v没有判断过,那么就标记一下,接着向下判断,但是如果要是判断过了,就说明可能形成了“互连”的样子,比如1-3,3-2,2-1,这样如果我们规定齿轮1转了一圈,那么齿轮3转的圈数可以计算完存起来,齿轮2转的圈数可以由齿轮3得到,那么开始判断与齿轮2相连的齿轮1时,因为齿轮1我们规定好了转一圈,那么用题目给的比值算一算,当前的齿轮2转的圈数合不合法就可以了,如果不合法,返回false,如果合法继续判断其他点。

Step3:

#include <bits/stdc++.h>
using namespace std;
struct node
{
int v,x,y;
int next;
};
const int maxn = 20005;
struct node edge[maxn];
int vis[maxn];
double mov[maxn];
int head[maxn];
int cnt = 1, flag = 1;
void add(int u, int v, int x, int y) // 前向星建图
{
edge[cnt].v = v;
edge[cnt].x = x;
edge[cnt].y = y;
edge[cnt].next = head[u];
head[u] = cnt ++;
}
void dfs(int u)
{
for(int i = head[u]; i != -1; i = edge[i].next)
{
int x = edge[i].x;
int y = edge[i].y;
int v = edge[i].v;
if(vis[v] == 0) // 没有搜索过,就计算出来这个齿轮应该转的圈数
{
mov[v] = mov[u] / (double) x * (double) y;
vis[v] = 1;
dfs(v);
if(flag == 0) return ;
}
else //如果形成圈了,判断是否合法
{
if(abs(mov[u] * y - mov[v] * x) > 1e-7)
{
flag = 0;
return ;
}
}
}
}
int main()
{
int Case = 1,t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
cnt = 1;
memset(head,-1,sizeof(head));
memset(vis,0,sizeof(vis));
for(int i = 1; i <= m; i ++)
{
int u,v,x,y;
scanf("%d%d%d%d",&u,&v,&x,&y);
add(u,v,x,y);
add(v,u,y,x);
}
vis[1] = 1;
mov[1] = 1.0;
flag = 1;
dfs(1);
if(flag) printf("Case #%d: Yes\n",Case ++);
else printf("Case #%d: No\n",Case ++);
}
return 0;
}

齿轮 HYSBZ - 4602 (DFS实现)的更多相关文章

  1. UVALive - 6436、HYSBZ - 2435 (dfs)

    这两道题都是用简单dfs解的,主要是熟悉回溯过程就能做,据说用bfs也能做 道路修建(HYSBZ - 2435) 在 W 星球上有n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道 ...

  2. BZOJ 4602: [Sdoi2016]齿轮 dfs

    4602: [Sdoi2016]齿轮 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4602 Description 现有一个传动系统,包 ...

  3. bzoj 4602: [Sdoi2016]齿轮

    4602: [Sdoi2016]齿轮 Description 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x  : y.即如果只考虑这两个组合 ...

  4. [bzoj4602][Sdoi2016]齿轮——dfs

    题目 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y.即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈.传 ...

  5. HDU 4602 Magic Ball Game(离线处理,树状数组,dfs)

    Magic Ball Game Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. 反素数ant HYSBZ - 1053(数学+dfs)

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x为反质数.例如,整数1,2,4,6等都是反质 ...

  7. BZOJ4602: [Sdoi2016]齿轮 DFS 逆元

    这道题就是一个DFS,有一篇奶牛题几乎一样.但是这道题卡精度. 这道题网上的另一篇题解是有问题的.取对数这种方法可以被轻松卡.比如1e18 与 (1e9-1)*(1e9+1)取对数根本无法保证不被卡精 ...

  8. [Sdoi2016]齿轮

    4602: [Sdoi2016]齿轮 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 613  Solved: 324 [Submit][Status ...

  9. bzoj4602 [Sdoi2016]齿轮

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4602 [题解] 对于每组齿轮(u, v)连边,权值为y/x(反向边x/y) 那么直接dfs计 ...

随机推荐

  1. 对称加密,非对称加密,数字签名,https

    对称加密和非对称加密 对称加密 概念:加密秘钥和解密秘钥使用相同的秘钥(即加密和解密都必须使用同一个秘钥) 特点:一对一的双向保密通信(每一方既可用该秘钥加密,也可用该秘钥解密,非对称加密是多对一的单 ...

  2. ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端

    原文:https://www.stevejgordon.co.uk/httpclientfactory-named-typed-clients-aspnetcore  发表于:2018年1月 上一篇文 ...

  3. Suricata Rules

    Suricata Rules https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Rules https ...

  4. 判断上传文件是否为excel

    1. 可以在input上传组件上添加属性accept,这样上传文件的时候,就只能选择excel文件了. <input type="file" accept="app ...

  5. iOS中JSON解析三方库的比较

    网络数据解析框架 1.  JsonModel 一个 JSON 模型转换库,有着比较简洁的接口.Model 需要继承自 JSONModel. 2.  yyModel yyModel比较轻量(算上.h 只 ...

  6. unity 刚体

    刚体属性(rigidbody)标明物体受物理影响,包括重力,阻力等等. mass为重量,当大质量物体被小重量物体碰撞时只会发生很小的影响.. Drag现行阻力决定组件在没有发生物理行为下停止移动的速度 ...

  7. Linux 磁盘、分区、文件系统、挂载

    磁盘 Linux所有设备都被抽象成为一个文件,保存在/dev目录下. 设备名称一般为hd[a-z]或sd[a-z].如果电脑中有多硬盘,则设备名依次为sda.adb.sdc...以此类推 IDE设备的 ...

  8. Manjaro安装mysql-5.7折腾小记

    安装前准备: 现在Arch官方源是MariaDB,所以得从mysql官网下载,地址:https://www.mysql.com/downloads/ 选择一个合适的版本下载: 下载下来先将压缩文件解压 ...

  9. zabbix 3.2.2 server web展示如何显示中文 (三)

    1.确认zabbix是否开启了中文支持功能(/var/www/html/zabbix/include/locales.inc.php) 2.登录zabbix后,点击可爱的小公主吧 Admin(zabb ...

  10. Dotnet站点多个路由对应同一个Action的总结

    需求:有些浏览器会屏蔽带有Ad字样的路径,此时需要创建多个路由指向同一个Action. 例如:原来 : http://lalalalalala.org:1506/api/advert/common   ...