FZOJ2110 star(DFS)

2024-05-12 21:32
文章标签 dfs star fzoj2110

本文主要是介绍FZOJ2110 star(DFS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Overpower often go to the playground with classmates. They play and chat on the playground. One day, there are a lot of stars in the sky. Suddenly, one of Overpower’s classmates ask him: “How many acute triangles whose inner angles are less than 90 degrees (regarding stars as points) can be found? Assuming all the stars are in the same plane”. Please help him to solve this problem.

Input

The first line of the input contains an integer T (T≤10), indicating the number of test cases.

For each test case:

The first line contains one integer n (1≤n≤100), the number of stars.

The next n lines each contains two integers x and y (0≤|x|, |y|≤1,000,000) indicate the points, all the points are distinct.

Output

For each test case, output an integer indicating the total number of different acute triangles.

Sample Input

1
3
0 0
10 0
5 1000

Sample Output

1
 
 
#include<stdio.h>
#include<math.h>
typedef struct nn
{double x1,y1;
}node;
void cmp(double *a,double *b,double *c)
{double tem;if(*a<*b){tem=*a;*a=*b;*b=tem;}if(*a<*c){tem=*a;*a=*c;*c=tem;}
}
double cacreat(double x1,double y1,double x2,double y2)
{double edglen;edglen=sqrt(pow(x1-x2,2.0)+pow(y1-y2,2.0));return edglen;
}
int pandu(double a,double b,double c)
{if(b*b+c*c-a*a>0)return 1;return 0;
}
double x[105],y[105];
node s[3];
int vist[105],n,sum;
void dfs(int cout,int j)
{double edg1,edg2,edg3;int i;s[cout].x1=x[j];s[cout].y1=y[j];if(cout==2){edg1=cacreat(s[0].x1,s[0].y1,s[1].x1,s[1].y1);edg2=cacreat(s[0].x1,s[0].y1,s[2].x1,s[2].y1);edg3=cacreat(s[1].x1,s[1].y1,s[2].x1,s[2].y1);cmp(&edg1,&edg2,&edg3);if(pandu(edg1,edg2,edg3)!=0)sum++;return ;}for(i=j+1;i<n;i++)if(vist[i]==0){vist[i]=1;dfs(cout+1,i);vist[i]=0;}
}
int main()
{int i,t;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=0;i<n;i++){scanf("%lf%lf",&x[i],&y[i]);vist[i]=0;}sum=0;for(i=0;i<n;i++){vist[i]=1;dfs(0,i);vist[i]=0;}printf("%d\n",sum);}
}


这篇关于FZOJ2110 star(DFS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983790

相关文章

poj 1564 Sum It Up -- DFS 递归

题意:给一个数 t ,以及 n 个数,求 n 个数中的几个数加起来的和为 t 的情况有多少种。 注意:题目要求相同的组合方式不能出现2次,即 “3 4 1 1 1 1 ” 的结果为:“1+1+1”。 思路:一个  for  循环遍历一遍,每个 i 表示以当前数为起点开始一次DFS递归,当所遍历的和为 t 时,输出该组合方式,如果大于 t 则返回,小于则往下递归。以二维数组保存已经输出过的数据,

一个有效的面试——善用STAR法则

下面从两个招聘官和求职者两个维度来简单阐述: 一、对于招聘官而言 首先基于一个原理,那就是成功面试公式: 成功的面试 = 把握正确清晰的用人标准 + 挖掘真实匹配的应聘者信息                   = 以素质模型去“发问” + 用STAR方式去“追问” 那么什么是STAR行为面试法?估计很多人都知道。行为面试,也称行为事件访谈,它是一种效度较高的面试技术。在行为面试中,

洛谷 P1141 01迷宫 (dfs解决)

题目描述 有一个仅由数字 0 与 1 组成的 n×n 格迷宫。若你位于一格 0 上,那么你可以移动到相邻 4 格中的某一格 1 上,同样若你位于一格 1 上,那么你可以移动到相邻 4 格中的某一格 0 上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。 输入格式 第一行为两个正整数 𝑛,𝑚。 下面 𝑛 行,每行 𝑛 个字符,字符只可能是 0 或者

[HDU 4324] Triangle LOVE (拓扑排序,DFS)

HDU - 4324 题意是,一张有 N个点的图,保证每两个点之间有且只有一条有向边连接 求是否存在三元环 用拓扑排序判环,如果存在环,则一定存在三元环 证明如下: 不存在二元环 设存在 n(n>=3)元环 p1->p2->p3->…->pn->p1 1) 若存在边 p3->p1,则存在三元环 (p1->p2->p3->p1) 2) 若不存在 p3->p1,则必然存在 p1->p3

[CSU - 1811 (湖南省赛16)] Tree Intersection (dfs序维护子树+离线询问+树状数组)

CSU - 1811 (湖南省赛16) 给定一棵树,每个节点都有一个颜色 问割掉任意一条边,生成的两个子树中颜色集合的交集大小 这个是 dfs序处理子树 + 离线询问 + bit维护 的解法 首先问题转化为求解一个子树中有多少种颜色以及独有颜色的数量 用总的颜色数量减去独有颜色数量即为这棵子树的答案 先做一遍 dfs,再按 dfs序重新组建颜色序列 这样对子树的询问,就变成

DFS走迷宫(懒猫老师C++完整版)

DFS走迷宫的C++完整版 知识储备一:普通动态二维数组的构造二:栈的构造三:栈的逆序遍历 Main文件代码 该版本代码是配合 懒猫老师用DFS走迷宫视频 基于C++基础所写的完整版(实现了栈逆序遍历),适合小白系统性的学习和复习知识点,只要将下文.h和.cpp和main文件所展示的代码结合起来就是个完整的代码。 知识储备 一:普通动态二维数组的构造 二维数组中不同行的内

fast DFS 单机使用实例

fast DFS 单机使用实例 我在一台服务器上简单测试了fastdfs。client, tracker, storage server都是同一个物理服务器。   1. 编译fastdfs:   sles207:/opt/mars/FastDFS # ./make.sh   storage_service.o: In function `storage_service_init':/opt/ma

如何用好GitHub中的Watch、Star和Fork

原文:http://www.jianshu.com/p/6c366b53ea41 在每个 github 项目的右上角,都有三个按钮,分别是 watch、star、fork,但是有些刚开始使用 github 的同学,可能对这三个按钮的使用却不怎么了解,包括一开始使用 github 的我也是如此,这篇博客,结合自己的理解和使用,说说这三个按钮的用法以及一些个人见解。 如下图所示这是我们经常看到的三

[深度优先搜索DFS]迷宫问题

描述 定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,}; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 输入 一个5 × 5的二维数组,表示一个迷宫。数

【LeetCode】 Surrounded Regions (BFS DFS)

题目:Surrounded Regions 广搜和深搜都能解决,但是LeetCode上使用深搜时会栈溢出 DFS: <span style="font-size:18px;">/*LeetCode Surrounded Regions* 题目:给定一个字符数组,由'X'和'O'组成,找到所有被x包围的o并将其替换为x* 思路:只要替换被包围的o就行,如果有一个o是边界或者上下左右中有一个