题意:平面内有N头牛$N\le 10$john从(0,0)出发,最后回到(0,0)

   只有走到牛那里john才可以改变方向,否则沿着直线走

   问john经过每一头牛并且在每一头牛出恰好改变方向一次的方案(牛可以经过多次,但只能改变方向一次)

(dfs没写出来)

看到$n\le 10$就容易多了

用next_permutation枚举改变方向的牛的顺序

判断是否成立即可

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int n;
int ans;
int a[];
struct node
{
int x;
int y;
}cow[];
bool pd[];
inline bool doit()
{
int lx=; //上头牛
int ly=;
for(int i=;i<n;i++)
{
int x=cow[a[i]].x; //当前牛
int y=cow[a[i]].y;
int nx=cow[a[i+]].x; //下头牛
int ny=cow[a[i+]].y;
if(x!=lx&&y!=ly) return false; //无法到达
if(x!=nx&&y!=ny) return false;
int xx=x-lx;
int yy=y-ly;
int xxx=nx-x;
int yyy=ny-y;
if(xx*xxx+yy*yyy>) return false; //没拐弯(向量点乘判断)
lx=x;
ly=y;
}
return true;
}
int main()
{
n=read();
for(int i=;i<=n;i++)
a[i]=i;
for(int i=;i<n;i++)
{
cow[i].x=read();
cow[i].y=read();
}
do
{
ans+=doit();
}while(next_permutation(a,a+n));
put(ans);
olinr ~~(^_^)+love_nmr;
}

感谢rqj dalao对蒟蒻的指点

P1556 幸福的路的更多相关文章

  1. 洛谷P1556 幸福的路

    P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...

  2. 洛谷 P1556 幸福的路

    P1556 幸福的路 题目描述 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波. 每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发.为了使路径更有趣,Joh ...

  3. luogu1556 幸福的路

    注意到\(n\le10\),所以枚举经过的拐弯牛的所有排列. 注意到STL是一个好东西,所以我这里偷懒直接使用了next_permutation 枚举所有n的排列,对于每一个排列也就是经过拐弯牛的顺序 ...

  4. 博客索引and题目列表

    目录 笔记整理 计划 要学的东西 缺省源 要做的题 搜索 高斯消元 矩阵 排列组合 2019.7.9 2019.7.10 kmp ac自动机 2019.7.11 2019.7.15 笔记整理 1.同余 ...

  5. Adapter的封装之路

    原文:Adapter的封装之路 一.几种常见列表效果: 假如要用RecyclerView实现下面的几种效果,你会如何实现呢? 效果1:单布局效果   效果2:多布局效果 有多种Item布局   效果3 ...

  6. 见证历史 -- 2013 NBA 热火夺冠之路有感

    见证历史-- 2013 NBA 热火夺冠之路有感今年NBA季后赛从第一轮看起,到最终的热火夺冠,应该看得是最爽的一次.但一些情节和细节,回忆起来,深有感悟. 1. 做人要低调詹宁斯豪言演黑八雄鹿本赛季 ...

  7. 通向高可扩展性之路(WhatsApp篇)---- 脸书花了190亿买来的WhatsApp的架构

    原文链接:http://highscalability.com/blog/2014/2/26/the-whatsapp-architecture-facebook-bought-for-19-bill ...

  8. 屠蛟之路_集木成舟_ForthDay

    下数据库大山,行数里至水岸,无边无际的东海便豁然展现在屠蛟少年的眼前. 要想到达东海之中的蛟灵岛绞杀beta怪蛟,夺回心爱的小公举,少年们首先需要一艘经得起风浪的船.毕竟海上之路暗涌潜伏.同样凶险万分 ...

  9. 《少有人走的路:心智成熟的旅程》--[美]M·斯科特·派克

    <少有人走的路>,美国作家M·斯科特·派克所著 下面是我的书摘: * 归根到底,它告诉我们怎样找到真正的自我. * 人可以拒绝任何东西,但绝对不可以决绝成熟.决绝成熟,实际上就是在规避问题 ...

随机推荐

  1. 在IIS下配置自定义的报错页面

    这里介绍在IIS中配置自定义出错页面的方法,主要以404为例,其他状态可类推 1.远程桌面连接IIS所在的服务器,进入控制面板>系统和安全>管理工具,双击打开IIS管理器,选择需要配置的网 ...

  2. PhoneGap打Android包报错

    1.下载AndroidSDK,安装 2.下载Phonegap,解压,为以后打包用 3.下载Node.js,安装 4.下载并安装Ant工具 5.配置环境变量 ANT_HOME=ANT主目录路径 PATH ...

  3. [摘]Android逆向分析常用网站

    androidterm:   Android Terminal Emulator   http://code.google.com/p/androidterm/   droidbox:   Andro ...

  4. Python多进程-进程间数据的传递

    两个进程间的数据是独立的,要进行数据传递的话可通过几个方法 Queue 通过队列来进行进程间数据的传递 # -*- coding:utf-8 -*- __author__ = "MuT6 S ...

  5. delphi 在线程中运行控制台命令(console)

    在编程开发的时候,我们时常会调用windows本身的功能,如:检测网络通断,连接无线wifi等. 虽然,用 windows api 操作可以完美地完成这些操作,但是,函数参数太难了.令人望而生畏,不是 ...

  6. sqlplus 设置显示格式

    使用sqlplus查询显示结果,显示很乱,下面有种方法可以让她显示的更好看些.1.设置显示的宽度:设置前可以先查看当前宽度: SQL> show linesize;linesize 100SQL ...

  7. Win7无法访问Windows共享文件夹

    解决方法如下 On the Windows 7 machine: Run secpol.msc Drill down through Local Policies | Security Options ...

  8. 常用Oracle分析函数详解

    学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理代表 ...

  9. 监控和安全运维 1.4 nagios安装

    1. Nagios 简介是一个开源软件,可以监控网络设备网络流量.Linux/windows主机状态,甚至可以监控打印机它可以运行在Linux上或windows上基于浏览器的web界面方便运维人员查看 ...

  10. struts2学习笔记(1)配置与基本操作

    主要作用:将请求与页面区分开 配 置: 下载struts 2.0,在安装路径D:\项目学习\三大框架视屏\struts-2.3.24-all\struts-2.3.24\apps 中解压struts2 ...