题意:给出2K个平面上的点,给它们一一配对,问有多少种配对方法使得存在从某个点一直向右走会陷在循环里(K<=6)

思路:由于k很小,配对方法的话暴力枚举,然后判环,判环时需要注意的是一条直线上的四个点1,2,3,4 其中1和3配对,2和4配对,可以发现它不构成环,详见代码

/*{

ID:a4298442

PROB:wormhole

LANG:C++

}

*/

#include <stdio.h>

#include <iostream>

#include<fstream>

#include <string.h>

#include <algorithm>

#define maxn 1000

using namespace std;

ifstream fin("wormhole.in");

ofstream fout("wormhole.out");

struct T{int x;int y;}p[maxn];

int ans=0,g[maxn],match[maxn],n,visit[maxn];

int cmp(T x,T y){

return (x.y<y.y || ((x.y==y.y)&&(x.x<y.x)));

}

int circle(int u)

{

int vis[100]={0},v=g[u];

vis[u]=1;

while(v!=0){

u=match[v];

if(!u)return 0;v=g[u];

if(vis[u])return 1;vis[u]=1;

}

return 0;

}

void dfs(int k,int u,int num){

if(num==n){

for(int i=1;i<=n;i++)if(circle(i)){ans++;break;}

return;

}

visit[k]=1;

for(int i=(u==0)?k+1:1;i<=n;i++)if(visit[i]==0){

if(u==0){g[i]=k;g[k]=i;}

dfs(i,u^1,num+1);

if(u==0)g[i]=g[k]=0;else break;

}

visit[k]=0;

}

int main(){

fin>>n;

for(int i=1;i<=n;i++)fin>>p[i].x>>p[i].y;

sort(p+1,p+1+n,cmp);

for(int i=2;i<=n;i++)if(p[i].y==p[i-1].y)match[i-1]=i;

dfs(1,0,1);

fout<<ans<<endl;

return 0;

}

【USACO】wormholes 【暴力】的更多相关文章

  1. USACO Wormholes 【DFS】

    描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点. 根据他的计算,约翰知道他的虫洞将形成 N/2 ...

  2. USACO ariprog 暴力枚举+剪枝

    /* ID:kevin_s1 PROG:ariprog LANG:C++ */ #include <iostream> #include <cstdio> #include & ...

  3. USACO chapter1

    几天时间就把USACO chapter1重新做了一遍,发现了自己以前许多的不足.蒽,现在的程序明显比以前干净很多,而且效率也提高了许多.继续努力吧,好好的提高自己.这一章主要还是基本功的训练,没多少的 ...

  4. [题解]USACO 1.3 Wormholes

    Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

  5. USACO 1.3 Wormholes

    Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

  6. USACO 1.3 Ski Course Design - 暴力

    Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...

  7. USACO 1.3 Wormholes - 搜索

    Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

  8. HDU 4277 USACO ORZ(暴力+双向枚举)

    USACO ORZ Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. USACO Ski Course Design 暴力

    从Min到Max范围内暴力一下即可. /* ID: wushuai2 PROG: skidesign LANG: C++ */ //#pragma comment(linker, "/STA ...

随机推荐

  1. Spring------自动化装配Bean(一)

    一.创建 CompactDisc接口和SgetPeppers实现类 CompactDisc接口方法为播放.SgtPeppers实现CompactDisc接口. package soundsystem; ...

  2. log4j:WARN Please initialize the log4j system properly. 异常解决

    log4j:WARN Please initialize the log4j system properly. 这个异常很少遇到,咋一看,原来是没有配置logger4j的配置文件 问题解决方法: 传统 ...

  3. [转]深入浅出WPF(7)——数据的绿色通道,Binding

    本文转自:http://liutiemeng.blog.51cto.com/120361/95273 小序: 怎么直接从2蹦到7啦?!啊哦,实在是不好意思,最近实在是太忙了,忙的原因也非常简单——自己 ...

  4. android开发学习 ------- 【转】Genymotion 小白安装

    参考 https://www.cnblogs.com/whycxb/p/6850454.html 很详细,全面

  5. 【学习笔记】深入理解js原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...

  6. Math.net,.net上的科学计算利器

    F#在科学计算领域的应用,包括部分语法介绍. Math.net,.net上的科学计算利器 摘要: .net上科学计算个人觉得首选numpy和scipy for dotnet.因为这两个库用户数量已经非 ...

  7. Openrisc的or1200

    1 什么是OpenRISC OpenRISC 是硬件开源社区opencores开发的RISC指令集处理器架构,包括32 bits 的Openrisc1000 和64 bitsOpenrisc 2000 ...

  8. 秦晓波著的编写高质量代码-改善Java程序的151个建议一书中的线程解释错误.

    位置: 建议127: Lock与synchronized是不一样的 首先在概念上纠正这一篇内容: 援引Java源码中关于ReentrantLock的开篇说明: * A reentrant mutual ...

  9. FPGA编程技巧系列之按键边沿检测

    抖动的产生: 通常的按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开.因而在闭合及断开的瞬间均伴随有一连串的 ...

  10. Unity3D——Epirome框架_TimerManager计时任务管理器

    1.Timer timer = new Timer(); 创建时间管理器 参数(float time, TimeUnit timeUnit,bool ignoreTimeScale = false, ...