原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=30

题目大意:

平面图有一些点和一条边,要求找这样的多边形:

1.边的数量是k

2.多边形内部没有任何的点和边

3.多边形的每个顶点旁边是两条边,如题目例子中的< v2, v1, v7, v8 , v2, v5, v4, v3 >是不符合题意的,因为v2出现了两次。

求这样的多边形的数量。

题目没有重边和环,且给的图中的边不会相交,整个图是连通的。

 #include<stdio.h>
#include<iostream>
#include<cmath>
#define N 205
using namespace std;
class point
{
public:
int x,y;
point(int xx=,int yy=){x=xx;y=yy;}
point(point &p){x=p.x;y=p.y;}
point& operator-(const point&);//向量减法
double operator*(const point& p){return x*p.y-y*p.x;}//向量叉乘
};
point& point::operator-(const point& p)
{
point p1(x-p.x , y-p.y);
return p1;
}
double Distance(point& p1,point& p2)
{
return sqrt(pow((p2.y-p1.y),)+pow((p2.x-p1.x),));
}
double angle(point& p1,point& p2)//返回值为-3~1
{
if(p2.y>=p1.y) return (p2.x-p1.x)/Distance(p1,p2);
else return -(p2.x-p1.x)/Distance(p1,p2)-;
}
class G
{
public:
point p[N];
int edg[N][N];
int n;//点的数目
G(int nn);
void psort(int i);
int seach(int vi,int ei,int k);
};
G::G(int nn)
{
int ii,i,iii;
for(ii=;ii<nn;ii++)
{
cin>>i;
cin>>p[i].x>>p[i].y;
cin>>edg[i][];
for(iii=;iii<=edg[i][];iii++)
{
cin>>edg[i][iii];
}
}
for(ii=;ii<=nn;ii++)
{
psort(ii);
}
}
void G::psort(int ii)
{
int i,j,t;
for(i=;i<edg[ii][];i++)
{
for(j=i+;j<=edg[ii][];j++)
{
if(angle(p[ii],p[edg[ii][i]])<angle(p[ii],p[edg[ii][j]]))
{
t=edg[ii][i];
edg[ii][i]=edg[ii][j];
edg[ii][j]=t;
}
}
}
}
int G::seach(int vi,int ei,int k)//从第vi个点的第ei条边开始搜索
{
int a[],i=,j,bo=ei;
while()
{
a[i++]=vi;
vi=edg[vi][ei];
for(j=;j<=edg[vi][];j++)
{
if(edg[vi][j]==a[i-]) break;
}
if(j!=edg[vi][]) j++;
else j=;
ei=j;
if(i>=&&a[]==a[i-]&&a[]==vi) break;
for(j=;j<i;j++)
{
if(vi==a[j]) return ;
}
}
if(i-==k)
{
int s=;
for(int j=;j<=i-;j++)
{
s+=p[a[j]]*p[a[j-]];
}
if(s>) return ;
else return ;
}
return ;
}
int main()
{
int M,n,k,i,j,t;
cin>>M;
while(M--)
{
t=;
cin>>n;
G g(n);
cin>>k;
for(i=;i<=n;i++)
{
for(j=;j<=g.edg[i][];j++)
{
t+=g.seach(i,j,k);
}
}
cout<<t/k<<endl;
}
return ;
}

【解题报告】zju-1030 Farmland的更多相关文章

  1. 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)

    官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...

  2. zoj 2313 Chinese Girls' Amusement 解题报告

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1313 题目意思:有 N 个人(编号依次为1~N)围成一个圆圈,要求求 ...

  3. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  4. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  5. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  6. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  7. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  8. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  9. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

随机推荐

  1. (转)Android学习进阶路线导航线路(Android源码分享)

     转载请注明出处:http://blog.csdn.net/qinjuning 前言:公司最近来了很多应届实习生,看着他们充满信心但略带稚气的脸庞上,想到了去年的自己,那是的我是不是也和 现在的他们一 ...

  2. hdu2025查找最大元素

    #include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> #in ...

  3. Android SlidingMenu侧滑菜单使用

    把下载的侧滑菜单压缩包打开,会有一个library文件夹,在eclipse中import existing android code into workspace,导入library文件夹,并且选择作 ...

  4. 虚拟机WindowServer2003共享文件夹

    前话 之前我写过虚拟机装SQL Server的博文,也许有同学参考了也通过虚拟机装数据库服务来做实验作业了. 到了第二章节学习时,实验要求数据库导出Excel文件,这样一来就出现了小问题了,Windo ...

  5. sublime 支持PHP语法提示

    下载插件phpcs>> https://github.com/benmatselby/sublime-phpcs 解压后修改文件夹名字为:Phpcs 把文件夹放到packages目录下 c ...

  6. EXT实现表格斑马线

    Ext.grid.GridPanel 单双行颜色样式(斑马线)2014-04-03 11:25 1078人阅读 评论(0) 收藏 举报分类:ExtJs(36)Ext.grid.GridPanel st ...

  7. Android 图片的缩略图

    <1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...

  8. SSIS ->> 生成时间格式

    有时我们需要生成一个文件,文件名的构成是当前时间的特定字符串格式,如yyyyMMddHHmmss 当前时间变成yyyyMMddHHmmss这个格式: (DT_WSTR,4) YEAR(GETDATE( ...

  9. .NET责任链模式(混合单例模式,模板方法模式)-----制作与扩展能力验证

    .NET责任链模式.单例模式.模板方法模式混用 前言 哇,看到题目挺长的,这个组合型的东西,到底能干啥呢?本篇文章来一起琢磨琢磨,这两天为了团队的软件赶工,我负责的那一块叫:插件管理器.我们团队的成员 ...

  10. Android:在eclipse中快速多行注释的方法

    http://blog.csdn.net/jianghuiquan/article/details/8534337 也许你能够记住以下部分快捷键,对你开发和设计过程中大裨益! 1.//注释添加和取消 ...