[USACO DEC13] 虫洞

USACO 1.4 Wormholes 虫洞 题目描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点。 根据他的计算,约翰知道他的虫洞将形成 N/2 连接配对。例如,如果A和B的虫洞连接成一对,进入虫洞A的任何对象体将从虫洞B出去,朝着同一个方向,而且进入虫洞B的任何对象将同样从虫洞A出去,朝着相同的方向前进。这可能发生相当令人不快的后果... 阅读详情

洛谷链接:https://www.luogu.org/problemnew/show/P1444

虫洞

题目描述

农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点。

根据他的计算,约翰知道他的虫洞将形成 N/2 连接配对。例如,如果A和B的虫洞连接成一对,进入虫洞A的任何对象体将从虫洞B出去,朝着同一个方向,而且进入虫洞B的任何对象将同样从虫洞A出去,朝着相同的方向前进。这可能发生相当令人不快的后果。

例如,假设有两个成对的虫洞A(1,1) 和 B(3,1),贝茜从(2,1)开始朝着 +x 方向(右)的位置移动。贝茜将进入虫洞 B(在(3,1)),从A出去(在(1,1)),然后再次进入B,困在一个无限循环中!

| . . . .
| A > B .      贝茜会穿过B,A,
+ . . . .      然后再次穿过B

农夫约翰知道他的农场里每个虫洞的确切位置。他知道贝茜总是向 +x 方向走进来,虽然他不记得贝茜的当前位置。请帮助农夫约翰计算不同的虫洞配对(情况),使贝茜可能被困在一个无限循环中,如果她从不幸的位置开始。

输入输出格式
输入格式:

第1行:N(N<=12),虫洞的数目

第2到N+1行:每一行都包含两个空格分隔的整数,描述一个以(x,y)为坐标的单一的虫洞。每个坐标是在范围 0-1000000000。

输出格式:

第1行:会使贝茜从某个起始点出发沿+x方向移动卡在循环中的不同的配对

输入输出样例
输入样例#1:

4
0 0
1 0
1 1
0 1

输出样例#1:

2

说明

如果我们将虫洞编号为1到4,然后通过匹配 1 与 2 和 3 与 4,贝茜会被卡住,如果她从(0,0)到(1,0)之间的任意位置开始或(0,1)和(1,1)之间。

| . . . .
4 3 . . .      贝茜会穿过B,A,
1-2-.-.-.      然后再次穿过B

相似的,在相同的起始点,如果配对是 1-3 和 2-4,贝茜也会陷入循环。(如果贝西从3进去,1出来,她会走向2,然后被传送到4,最后又回到3)

仅有1-4和2-3的配对允许贝茜从任何二维平面上的点向+x方向走不出现循环。

题解

考虑所有虫洞两两匹配的情况,共有 12×11+10×9+8×7+6×5+4×3+2×1=322 12 × 11 + 10 × 9 + 8 × 7 + 6 × 5 + 4 × 3 + 2 × 1 = 322 种组合方式,完全资瓷暴力啊有木有。。。

所以我们考虑用dfs枚举所有组合,每个组合再用dfs跑一遍判环。

在跑图的dfs中,需要记录奶牛是走到虫洞的还是从另一端传送到的。我们还可以按照纵坐标为第一关键字,横坐标为第二关键字排一次序以便于dfs时快速找到+x方向的下一个点。

代码
#include<bits/stdc++.h>
using namespace std;
struct pt{int x,y;};
pt p[20];
bool operator <(pt a,pt b){return a.y==b.y?a.x<b.x:a.y<b.y;}
int n,b[20],ans;
void in()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    scanf("%d%d",&p[i].x,&p[i].y);
}
int go(int num,int v,int st,int k)
{
    if(num!=1&&v==st&&k)return 1;
    if(!k)
    if(p[v].y==p[v+1].y)return go(num+1,v+1,st,1);
    else return 0;
    else return go(num+1,b[v],st,0);
}
bool check()
{
    for(int i=1;i<=n;++i)
    if(go(1,i,i,1))return 1;
    return 0;
}
void dfs(int x)
{
    if(x==n+1&&check()){ans++;return;}
    if(!b[x])
    {
        for(int i=x+1;i<=n;++i)
        if(!b[i])
        {
            b[i]=x;b[x]=i;
            dfs(x+1);
            b[i]=0;b[x]=0;
        }
    }
    if(b[x])dfs(x+1);
    return;
}
void ac()
{
    sort(p+1,p+1+n);
    dfs(1);
    printf("%d",ans);
}
int main()
{
    in();ac();
    return 0;
}
【代码超详解】POJ 3259 虫洞(Bellman-Ford算法 · 板子题) 一、题目描述 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 76233 Accepted: 28356(2019/10/22) Description 当走访自己的农场时,农夫 John(下称 FJ)发现了许多神奇的虫洞。虫洞是一个很奇怪的东西,因为它是一个能够将你送到一个时间位于你进入虫洞之前的目的地... 阅读详情

相关推荐

ZEMAX优化方法---【Zemax学习】

在光学系统自动设计中,优化设计是光学设计中的重要阶段,也是ZEMAX软件的核心功能,涉及评价函数、权因子、阻尼因子等重要概念。在常用的阻尼最小二乘法优化设计的基础上,ZEMAX给我们提供了三种优化选择:Optimization(局部优化)、Global Search(全局优化)和 Hammer Optimization(锤形优化)。

yh的博客 4452

洛谷#P1444#虫洞

虫洞 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点。 根据他的计算,约翰知道他的虫洞将形成 N/2 连接配对。例如,如果A和B的虫洞连接成一对,进入虫洞A的任何对象体将从虫洞B出去,朝着同一个方向,而且进入虫洞B的任何对象将同样从虫洞A出去,朝着相同的方向前进。这...

测试 440

非线性动力学_用MatCont分析非线性动力学方程组(一)

写在前面:笔者打算写两到三篇系列文章介绍MatCont,此为第一篇《用MatCont分析非线性动力学方程组(一)》。MatCont是一个基于Matlab而开发的免费工具包,专门用来做非线性动力学模型分叉、向量场、周期性等分析,符号(连续性)运算和数值(离散性)运算均适用。该工具的开发及研究项目由比利时Ghent大学的Willy Govaerts教授、荷兰Utrecht大学的Yuri Kuznets...

weixin_39700215的博客 2770

USACO:1.3.5 Wormholes(虫洞)

1.3.5 Wormholes(虫洞)

蓝e的专栏 3818

避坑指南:ArcGIS 做莫兰指数分析,你的‘空间关系概念化’选对了吗?

本文深入解析了ArcGIS中莫兰指数分析的关键参数——'空间关系概念化'的选择策略。通过对比反距离法、固定距离法和K最近邻法的适用场景与影响机制,帮助研究者避免常见误区,提升空间自相关分析的准确性和解释力。特别针对全域莫兰指数和局域莫兰指数的计算差异提供了实用建议。

weixin_30872157的博客 809

PDN设计

作者:AirCity 2020.2.6 Aircity007@sina.com 本文所有权归作者Aircity所有 PDN设计的目的是降低电源纹波水平,减小电压跌落。我们通常要求LDO的文波水平是30mV,DCDC是50mV,超过这个就需要PDN设计。 PDN设计的方法是用不同的容值,合适的总电容量,降低电源平面与地平面之间的交流阻抗,确定容值总量和电容大小的过程,就是PDN设计过程。 为什么需...

AirCity123的博客 4148

hzwer模拟赛 虫洞

【题目描述】 N个虫洞,M条单向跃迁路径。从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间。虫洞有白洞和黑洞之分。设一条跃迁路径两端的虫洞质量差为delta。 1.从白洞跃迁到黑洞,消耗的燃料值减少delta,若该条路径消耗的燃料值变为负数的话,取为0。 2.从黑洞跃迁到白洞,消耗的燃料值增加delta。 3.路径两端均为黑洞或白洞,消耗的燃料值不变化。 作为压...

weixin_30602505的博客 333

Proteus实现电子秤仿真与称重检测显示

Proteus实现电子秤仿真与称重检测显示测量原理(或设计方案)原理图代码 测量原理(或设计方案) 数字电子秤总体框图如图所示: 金属箔式应变片工作原理 电阻丝在外力作用下发生机械变形时,其电阻值发生变化,这就是电阻应变效应,描述 电阻应变效应的关系式 金属箔式应变片就是通过光刻、腐蚀等工艺制成的应变敏感元件。如图所示,将四个金属箔应变片(R1、R2、R3、R4)分别贴在双杆式悬臂梁弹性体的上下两侧,弹性体受到压力发生形变,应变片随悬臂梁形变被拉伸或被压缩 测量电路 通过应变片转换悬臂梁被测部位受力

Matataya的博客 1万+

虫洞路线(最短路)

N个虫洞,M条单向跃迁路径。从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间。虫洞有白洞和黑洞之分。设一条跃迁路径两端的虫洞质量差为delta。 1.从白洞跃迁到黑洞,消耗的燃料值减少delta,若该条路径消耗的燃料值变为负数的话,取为0。 2.从黑洞跃迁到白洞,消耗的燃料值增加delta。 3.路径两端均为黑洞或白洞,消耗的燃料值不变化。 作为压轴题,自然不会是如此简单的最短路问题,所以每过1单位时间黑洞变为白洞,白洞变为黑洞。在飞行过程中,可以选择在一个虫洞停留1个单位.

yhhy666的博客 514

Android15音频进阶之4种调试线程死锁利器(八十九)

本篇目的:Android15音频进阶之4种调试线程死锁利器对于开发者来说,最令人头疼的,莫过于多线程交互出问题的时候,我们应该从哪里找突破口呢?下面来介绍一下调试Android音频中线程死锁的四种方案线程死锁是并发编程中常见的问题之一,它指的是在多个线程竞争资源的过程中,由于相互等待对方持有的资源而无法继续执行,从而导致所有线程都无法向前推进的现象。死锁不仅会导致系统性能严重下降,甚至可能导致整个系统崩溃。线程死锁的产生有四个必要条件:互斥条件:资源不能被多个线程共同使用,只能由一个线程独占。

Android系统攻城狮 1997

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 985

1715: [Usaco2006 Dec]Wormholes 虫洞

1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit:5 SecMemory Limit:64 MBSubmit:501Solved:278[Submit][Status][Discuss] Description John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(...

158

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 733

BZOJ 1715 Usaco2006 Dec Wormholes 虫洞

1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit:5 SecMemory Limit:64 MBSubmit:972Solved:517[Submit][Status][Discuss] Description John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(...

128

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Wormholes虫洞[USACO 2006 Dec]

摘要: FarmerJohn的农场包含N块田地、M条双向路径和W个单向虫洞。虫洞具有时间回溯特性,能将使用者传回T秒前。题目要求判断是否存在一个环路,使得出发后能在初始时间之前返回起点。这可以转化为判断图中是否存在负权环的问题。通过将虫洞视为负权边,使用SPFA算法检测负环即可。对于每个农场,若存在负环输出"YES",否则输出"NO"。输入包含多个农场数据,需分别处理并输出结果。代码实现了SPFA算法来检测负环,并正确处理了多组数据的输入输出。

Lsq_MAX_4869的博客 388

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

P2850 [USACO06DEC] Wormholes G

虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。现在 John 希望能够从某块地出发,走过一条路径回到出发点,且同时也回到了出发时刻以前的某一时刻。若有负环,则John可以沿着负环一直走,直到回到出发前的时刻。对于每组测试数据,输出一行一个字符串,如果能回到出发时刻之前,则输出。每组数据的第一行是三个用空格隔开的整数,分别代表农田的个数。的路径一直转圈即可,每转完一圈,时间就会减少一秒。行,每行有三个用空格隔开的整数。John 的每个农场有。,代表测试数据的组数。

qq_37231166的博客 611

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

问题 C: 2.[Usaco2006 Dec]虫洞(Bzoj1715)

链接:http://acm.ocrosoft.com/problem.php?cid=1713&pid=2 题目描述 John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞。其中1<=N<=500,1<=M&l...

Luoriliming的博客 364

bzoj 1715: [Usaco2006 Dec]Wormholes 虫洞

Description John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞。其中1 Input Line 1: 一个整数 F, 表示农场个数。 Line 1 of each farm: 三个整数 N, M, W。 Line

M.L.B 589

[USACO06DEC] Wormholes G(spfa判断环)

虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。现在 John 希望能够从某块地出发,走过一条路径回到出发点,且同时也回到了出发时刻以前的某一时刻。对于每组测试数据,输出一行一个字符串,如果能回到出发时刻之前,则输出。每组数据的第一行是三个用空格隔开的整数,分别代表农田的个数。的路径一直转圈即可,每转完一圈,时间就会减少一秒。行,每行有三个用空格隔开的整数。行,每行三个用空格隔开的整数。的小路,经过这条路需要花费。John 的每个农场有。,代表测试数据的组数。

m0_60738889的博客 817

USACO 2024DEC 考试题目讲解

将可能的误差考虑在内,输出所有可能是 Bessie 发出的哞叫,按字典序顺序排序。的砖块插入奶酪块中的方案数,使得砖块的任何部分都不与剩余的奶酪重叠。Bessie 认为 Elsie 是错误的,但她太忙于数学作业,无法确认她的怀疑。对于 Bessie 的做法,简单的分支结构就可以直接解决;输出可能是 Bessie 发出的哞叫的数量,以下是按字典序排序的哞叫列表。由于 FJ 正在玩牛的世界,当下方的奶酪被切割后,重力不会导致上方的奶酪掉落。,表示字符串的长度以及 Bessie 的哞叫的频次下限。

joe_g12345的博客 1328

【USACO06DEC】虫洞 G ,C++ 代码实现

题目描述:John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John 的每个农场有 m 条小路(无向边)连接着 n 块地(从 1∼n 标号),并有 w 个虫洞。现在 John 希望能够从某块地出发,走过一条路径回到出发点,且同时也回到了出发时刻以前的某一时刻。请你告诉他能否做到。输入:第一行:N,K。接下来一行 K 个整数,第 i 个为 Xi。第 N+2 行:Q。接下来 Q 行:每行两个整数 Li, Ri。

寻隐者不遇的博客 469

洛谷P2850 [USACO06DEC]虫洞Wormholes [SPFA求负环,超级源点]

链接:P2850 题目描述 While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at...

秃头交易站. 343

1507:虫洞 Wormholes

【题目描述】 原题来自:USACO 2006 Dec. Gold,原文见 POJ 3259 John 在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John 的每个农场有 M 条小路(无向边)连接着 N(从 1 到 N 标号)块地,并有 W 个虫洞。 现在 John 想借助这些虫洞来回到过去(在出发时刻之前回到出发点),请你告诉他能办到吗。 John 将向你提供 F 个农场的地图。没有小路会耗费你超过 104秒的时间,当然也没有虫洞

lyc_lb 908

负环——虫洞

虫洞 农夫约翰在巡视他的众多农场时,发现了很多令人惊叹的虫洞。 虫洞非常奇特,它可以看作是一条 单向 路径,通过它可以使你回到过去的某个时刻(相对于你进入虫洞之前)。 农夫约翰的每个农场中包含N片田地,M条路径(双向)以及W个虫洞。 现在农夫约翰希望能够从农场中的某片田地出发,经过一些路径和虫洞回到过去,并在他的出发时刻之前赶到他的出发地。 他希望能够看到出发之前的自己。 请你判断一下约翰能否做到...

行走天涯的豆沙包的博客 363

[Usaco2006 Dec]Wormholes

题目链接: https://begin.lydsy.com/JudgeOnline/problem.php?id=1668 Description: John在他的农场中发现了许多虫洞。虫洞可以看作一条有向边,可以使你回到过去的时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N(从1…N标号)块地,有W个虫洞 现在John想借助这些虫洞来回到过去(出发时刻之前),请你告诉他...

小可爱的博客 380

打卡信奥刷题(2661)用C++实现信奥题 P2850 [USACO06DEC] Wormholes G

题目描述农夫John在农场中发现虫洞(单向通道,可时间回溯)和双向路径。给定多个农场地图,判断是否存在一个环路,使得出发后能在离开前返回起点(即存在负权环)。输入包含农场数F,每个农场的田地数N、双向路径数M、虫洞数W,以及路径和虫洞的具体信息。输出对每个农场判断是否存在满足条件的环路(YES/NO)。解题思路使用SPFA算法检测负权环,通过DFS方式遍历所有可能的路径来判断是否存在这样的环路。代码实现中采用vector存图,并对每个点作为起点进行SPFA检测。

Loge谈信奥--一个专注于信奥人的博客 1007
上一篇: 有序表的最小和(element)
下一篇: [USACO DEC13] 名称记录
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值