BZOJ2087 : [Poi2010]Sheep

一条边能连上当且仅当它没有经过任何点,并且两边的点都是偶数个。

枚举原点,通过极角排序求出哪些边是合法的,然后区间DP即可。

时间复杂度$O(nm\log m+n^3)$。

 

#include<cstdio>
#include<algorithm>
const int N=610,M=20010;
int n,m,P,cnt,i,j,k,t,now,f[N][N];bool g[N][N],v[N][N];
struct vec{int x,y,p;vec(){}vec(int _x,int _y){x=_x,y=_y;}vec operator-(const vec&b){return vec(x-b.x,y-b.y);}
}a[N],b[M],c[N+M],O;
inline int cross(vec a,vec b){return a.x*b.y-a.y*b.x;}
inline bool cmp(vec x,vec y){return cross(x-O,y-O)<0;}
int dp(int l,int r){if(l+1==r)return 1;if(v[l][r])return f[l][r];v[l][r]=1;int&t=f[l][r];for(int i=l+1;i<r;i++)if(g[i][l]&&g[i][r])t=(t+dp(l,i)*dp(i,r))%P;return t;
}
int main(){scanf("%d%d%d",&n,&m,&P);for(i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);for(i=1;i<=m;i++)scanf("%d%d",&b[i].x,&b[i].y);O=a[1];std::sort(a+2,a+n+1,cmp);for(i=1;i<=n;i++)a[i].p=i;for(i=1;i<=n;i++){O=a[i];cnt=0;for(j=1;j<=n;j++)if(j!=i)c[++cnt]=a[j];for(j=1;j<=m;j++)c[++cnt]=b[j];std::sort(c+1,c+cnt+1,cmp);for(j=1,t=0;j<=cnt;j=k){for(now=0,k=j;k<=cnt&&!cross(c[k]-O,c[j]-O);k++)if(!c[k].p)now++;if(!now&&!t)for(k=j;k<=cnt&&!cross(c[k]-O,c[j]-O);k++)if(c[k].p)g[i][c[k].p]=g[c[k].p][i]=1;t^=now&1;}}return printf("%d",dp(1,n)),0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/5939811.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速学会开发微信小程序

From: https://www.cnblogs.com/juaner-hlj/p/6628148.html 1.手机&#xff08;微信-6.5.4以上&#xff09; 编辑器&#xff08;微信web开发 egret&#xff09; &#xff08;editplus sublime&#xff09; &#xff08;webstorm dw&#xff09; &#xff08;visio eclipse zen…

监听鼠标左右移动事件;所有dom事件列表

监听鼠标左右移动事件使用 mousemove 附带所有dom事件列表 <template><div><div>监听事件</div></div> </template><script> export default {data () {return {}},created () {// 定义鼠标事件处理函数document.addEventListener(…

关于Pac-Man,你所要了解的 一切

2019独角兽企业重金招聘Python工程师标准>>> 不论何时&#xff0c;它一直都是最伟大的游戏之一。这里有许多有关它的有趣的内幕&#xff1a;Pac-Man。 第一, 在一天之内重新创建Pac-Man 。 第二,对游戏种的每个鬼背后的人工智能的 一个非常详细的探讨 。 事实证明…

grunt入门 出处:http://artwl.cnblogs.com

grunt-contrib-uglify uglify是一个文件压缩插件&#xff0c;项目地址&#xff1a;https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO来展示如何使用uglify插件。 DEMO环境 package.json: {"name": "grunt-demo","version": &q…

【推荐!!!】vue修改数据页面不更新;vue监听不到数据变化;vue打印有值页面无数据;this.$set ; this.$nextTick ; this.$forceUpdate

场景&#xff1a;vue是双向数据绑定的&#xff0c;那么在修改data数据时候&#xff0c;页面也应该是变化的&#xff0c;但是偶尔会遇到 1.vue修改数据页面不更新&#xff0c;既data数据变化了&#xff0c;但是页面渲染没变化。 2.或者vue监听不到数据变化&#xff1b; 3.vue打印…

探讨NDK编译错误ld.exe: Dwarf Error: mangled line number section.

如题所示的NDK编译错误是什么原因导致的&#xff1f;我的困惑今天在把WIN32下的一个工程移植到ANDROID时遇到上述错误&#xff0c;感到非常困惑。错误如下&#xff1a;D:/ndkr8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi…

Visual Studio Code之常备快捷键

From: https://blog.csdn.net/u010019717/article/details/50443970 孙广东 2015.12.31 官方快捷键大全&#xff1a;https://code.visualstudio.com/docs/customization/keybindings Visual Studio Code是个牛逼的编辑器&#xff0c;启动非常快&#xff0c;完全可以用来代替其…

jquery中cookie用法实例详解(获取,存储,删除等)

这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以参考下本文实例讲述了jquery中cookie用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; cook…

js计算日期差;js计算天数差

场景&#xff1a;首先要注意两种情况 1.只是计算年月日的天数差&#xff0c;例如2022-10-10 12:00:00与 2022-10-11 00:00:00 相差1天 2.计算包含时分秒的天数差&#xff0c;例如2022-10-10 12:00:00与 2022-10-11 00:00:00 相差0天 3.注意safari浏览器 将时分秒的转化为时间戳…

非常全的VsCode快捷键

From: https://segmentfault.com/a/1190000007688656 常用 General 按 Press功能 FunctionCtrl Shift P&#xff0c;F1显示命令面板 Show Command PaletteCtrl P快速打开 Quick OpenCtrl Shift N新窗口/实例 New window/instanceCtrl Shift W关闭窗口/实例 Close wind…

Iptables-Fail2ban处理bind 非法***

早上发现DNS流量有些异常&#xff0c;查了query.log日志如下: 9-Apr-2013 13:49:33.418 queries: info: client 199.19.213.88#25345: view other_user: query: isc.org IN ANY ED (183.60.126.74) 09-Apr-2013 13:49:33.475 queries: info: client 199.19.213.88#25345: view …

通过挂载系统光盘搭建本地yum仓库的方法

1、配置本地yum源&#xff08;挂载光盘&#xff09; mkdir /medir/cdrom(创建目录) mount /dev/cdrom / medir/cdrom (挂载到/ medir/cdrom目录&#xff09; 2、修改yum配置文件 3. 修改挂载路径/ medir/cdrom&#xff0c; 将gpgcheck1改为0 enabled0改为1. 4. yum list …

谷歌划词翻译

谷歌划词翻译是个谷歌插件 复制及时翻译很好用 插件下载地址 配置谷歌翻译方法

[tp5] thinkPHP5-渲染模板的方式

From: https://blog.csdn.net/Wake_me_Up123/article/details/76096174 默认情况下&#xff0c;控制器的输出全部采用return的方式&#xff0c;无需进行任何的手动输出&#xff0c;系统会自动完成渲染内容的输出。 在控制器里渲染模板 namespace app\index\controller;use t…

.net 预编译 提示中导入的类型 冲突

之所以会出现你遇到的这个问题&#xff0c;是因为项目引用了自身的Dll文件&#xff0c;系统就把项目本身和项目本身生成的DLl文件看成两个项目来对待&#xff0c;因为它们两个本身就是对等的&#xff0c;就会出现冲突的问题。解决办法很简单&#xff0c;就是去掉项目对自身的引…

如何对Javascript代码进行二次压缩(混淆)

如何对Javascript代码进行二次压缩&#xff08;混淆&#xff09; 对Javascript代码进行压缩&#xff08;混淆&#xff09;&#xff0c;可以有效减少传输和加载时间。但是&#xff0c;不是所有的变量&#xff08;方法&#xff09;都能被混淆的&#xff0c;一般来说&#xff0c;只…

vue项目添加百度统计

vue项目添加百度统计

如何在网页标题栏title加入logo(icon)图标?

From: https://www.cnblogs.com/lyp123/articles/5661661.html 打开某一个网页会在浏览器的标签栏处显示该网页的标题和图标&#xff0c;当网页被添加到收藏夹或者书签中时也会出现网页的图标&#xff0c;怎么在网页title左边显示网页的logo图标呢&#xff1f; 方法一&#xf…

教你如何在linux 下批量卸载

教你如何在linux 下批量卸载 最 近本来想在linux 下配置 JDK 6.0 用来开发java&#xff0c;然后遇到很多麻烦&#xff0c;一开始的时候屁颠屁颠的到SUN的网站去下载个 JRE 的bin 文件&#xff0c;这个文件比较小&#xff0c;几十MB而已&#xff0c;安装的时候它自动安装在 /usr…

Unity AssetBundles and Resources指引 (三) AssetBundle基础

本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and-resources?playlist30089 A guide to AssetBundles and Resources 第三部分 AssetBundle基础 3.1概览 AssetBundles系统提供一种手段把一个或多个Asse…