题意:给出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. HBase表结构设计--练习篇

    一.表结构操作 1.建立一个表scores,有两个列族grad和course [hadoop@weekend01 ~]$ hbase shell hbase(main):006:0> creat ...

  2. C#中的委托(转)

    C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 ...

  3. 【C#】枚举

    枚举 public static class CommonEnums { public enum people { /// <summary> ///男人 /// </summary ...

  4. Dapper系列之一:Dapper的入门(多表批量插入)

    Dapper介绍  简介:      不知道博客怎么去写去排版,查了好多相关博客,也根据自己做过项目总结,正好最近搭个微服务框架,顺便把搭建微服务框架所运用的知识都进行博客梳理,为了以后复习,就仔细琢 ...

  5. 高阶函数之filter 和 sorted

    filter函数 接受一个函数和序列,把传入的函数依次作用于每个序列,然后根据返回值时True还是False保留或舍弃元素. def func(n): if n%2 == 0: return n m ...

  6. CF967D Resource Distribution

    思路: 在一堆服务器中,资源最少的那一个是“瓶颈”,由此想到贪心思路. 首先对所有服务器按照资源数量c排序,再从头到尾扫描.对每个位置,根据x1和x2计算出两段连续的服务器集合分别分配给A任务和B任务 ...

  7. java实现汉诺塔算法

    package com.ywx.count; import java.util.Scanner; /** * @author Vashon * date:20150410 * * 题目:汉诺塔算法(本 ...

  8. TCP/IP详解之IP协议

    1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制 ...

  9. 原创:PHP编译安装配置参数说明

    --prefix=/application/php-5.5.32 \          #指定PHP的安装路径 --with-mysql=/application/mysql/ \          ...

  10. resnet.caffemodel

    http://blog.csdn.net/baidu_24281959/article/details/53203757