BZOJ1439 : YY的问题

考虑容斥,枚举哪些不存在的边选中了,剩下的不管,则可以用组合数计算方案数。

时间复杂度$O(m2^m+nm)$。

 

#include<cstdio>
const int N=550,B=10000,MAXL=350;
int n,m,S,i,j,e[N][2],g[N],f[N];
inline int max(int a,int b){return a>b?a:b;}
struct Num{int a[MAXL],len,fu;Num(){len=1,fu=a[1]=0;}Num operator+(const Num&b){Num c;c.len=max(len,b.len)+2;int i;for(i=1;i<=c.len;i++)c.a[i]=0;if(fu==b.fu){for(i=1;i<=len;i++)c.a[i]=a[i];for(i=1;i<=b.len;i++)c.a[i]+=b.a[i];for(i=1;i<=c.len;i++)if(c.a[i]>=B)c.a[i+1]++,c.a[i]-=B;while(c.len>1&&!c.a[c.len])c.len--;c.fu=fu;}else{bool flag=0;if(len==b.len){for(i=len;i;i--)if(a[i]!=b.a[i]){if(a[i]>b.a[i])flag=1;break;}}else{if(len>b.len)flag=1;}if(flag){for(i=1;i<=len;i++)c.a[i]=a[i];for(i=1;i<=b.len;i++)c.a[i]-=b.a[i];for(i=1;i<=c.len;i++)if(c.a[i]<0)c.a[i+1]--,c.a[i]+=B;while(c.len>1&&!c.a[c.len])c.len--;c.fu=fu;}else{for(i=1;i<=b.len;i++)c.a[i]=b.a[i];for(i=1;i<=len;i++)c.a[i]-=a[i];for(i=1;i<=c.len;i++)if(c.a[i]<0)c.a[i+1]--,c.a[i]+=B;while(c.len>1&&!c.a[c.len])c.len--;c.fu=b.fu;}}return c;}Num operator*(const Num&b){Num c;c.len=len+b.len+2;c.fu=fu^b.fu;int i,j;for(i=1;i<=c.len;i++)c.a[i]=0;for(i=1;i<=len;i++)for(j=1;j<=b.len;j++){c.a[i+j-1]+=a[i]*b.a[j];if(c.a[i+j-1]>=B){c.a[i+j]+=c.a[i+j-1]/B;c.a[i+j-1]%=B;if(c.a[i+j]>=B)c.a[i+j+1]+=c.a[i+j]/B,c.a[i+j]%=B;}}while(c.len>1&&!c.a[c.len])c.len--;return c;}void operator/=(int b){int i;for(i=len;i;i--)a[i-1]+=a[i]%b*B,a[i]/=b;while(len>1&&!a[len])len--;}bool iszero(){return len==1&&!a[1];}void write(){if(len==1&&!a[1])fu=0;if(fu)putchar('-');printf("%d",a[len]);for(int i=len-1;i;i--)printf("%04d",a[i]);puts("");}void set(int x){fu=0;if(x<0)x*=-1,fu^=1;if(x>=B){len=2;a[1]=x%B;a[2]=x/B;}else{len=1;a[1]=x;}}
}ans[N],tmp,now;
int main(){scanf("%d%d",&n,&m);for(i=0;i<m;i++)scanf("%d%d",&e[i][0],&e[i][1]);for(i=0;i<m;i++)for(j=0;j<m;j++)if(i!=j&&(e[i][0]==e[j][0]||e[i][1]==e[j][1]))g[i]|=1<<j;for(S=0;S<1<<m;S++){for(i=0;i<m;i++)if(S>>i&1)if(S&g[i])break;if(i==m)f[__builtin_popcount(S)]+=__builtin_popcount(S)&1?-1:1;}for(i=0;i<=n;i++)if(f[i]){tmp.set(f[i]);for(j=0;j<=n-i;j++){if(j){now.set((n-i-j+1)*(n-i-j+1));tmp=tmp*now;}if(j>1)tmp/=j;ans[i+j]=ans[i+j]+tmp;}}for(i=0;i<=n;i++)ans[i].write();return 0;
}

  

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

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

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

相关文章

windows下配置opencv

我的windows下是使用的一个镜像安装的vs2015&#xff0c;然后在vs上编译工程需要使用opencv时&#xff0c;需要在工程中配置opencv 新建一个C工程&#xff0c;按照下面的步骤进行配置。 设置opencv的环境变量 “此电脑”右键点击“属性”-->选择“高级系统设置”-->选…

关于spring MVC中加载多个validator的方法。

首先讲下什么叫做validator&#xff1a; validator是验证器&#xff0c;可以验证后台接受的数据&#xff0c;对数据做校验。 SpringMVC服务器验证有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证。 1.使用Annotaion JSR-303标准的验证 使用这个需要…

面试时,面试官到底在考察什么?

作者&#xff1a;白海飞出处&#xff1a;极客时间《面试现场》专栏 先看一段面试对话&#xff0c;“大面”是一位久经沙场的面试官&#xff0c;小明就是今天的应聘者。一通面试下来&#xff0c;前面的技术问题小明都对答如流&#xff0c;双方相谈甚欢&#xff0c;接下来面试官“…

NoSQL-MongoDB with python

前言&#xff1a; MongoDB&#xff0c;文档存储型数据库&#xff08;document store&#xff09;。NoSQL数据库中&#xff0c;它独占鳌头&#xff0c;碾压其他的NoSQL数据库。 使用C开发的&#xff0c;性能仅次C。与redis一样&#xff0c;开源、高扩展、高可用。 基于分布式文件…

RHCS

云计算与大数据 黑洞 RHCS(概念篇) 一、 什么是RHCS RHCS是Red Hat Cluster Suite的缩写&#xff0c;也就是红帽子集群套件&#xff0c;RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合&#xff0c;它将集群系统中三大集群架构融合一体&…

深度图压缩之-高低8位拆分保存

使用kinect相机保存数据&#xff0c;为了减少保存的数据集量&#xff0c;对图像进行压缩。将彩色图像直接压缩成.mp4格式&#xff0c;此时图像上的一些高频信息会被损失掉。 为了能够让深度图有比较高的保真度&#xff0c;减少深度图上高频信息的损失&#xff0c;我们将16位的…

linux 一个超简单的makefile

2019独角兽企业重金招聘Python工程师标准>>> makefile 自动化变量&#xff1a; $ : 规则的目标文件名 例如&#xff1a;main:main.o test.o g -Wall -g main.o test.o -o main 可以写成&#xff1a; main:main.o test.o g -Wall -g main.o test.o -o $ $< : …

poj2480(利用欧拉函数的积性求解)

题目链接: http://poj.org/problem?id2480 题意&#xff1a;∑gcd(i, N) 1<i <N&#xff0c;就这个公式&#xff0c;给你一个n&#xff0c;让你求sumgcd(1,n)gcd(2,n)gcd(3,n)…………gcd(n-1,n)gcd(n,n),&#xff08;1<n<2^31&#xff09;是多少&#xff1f; 放…

跨域问题

一、为什么会有跨域问题&#xff1f; 是因为浏览器的同源策略是对ajax请求进行阻拦了&#xff0c;但是不是所有的请求都给做跨域&#xff0c;像是一般的href属性&#xff0c;a标签什么的都不拦截。 二、解决跨域问题的两种方式 JSONPCORS 三、JSONP 先简单来说一下JSONP&#x…

PAT A1052

这个需要注意的是相关的string转整数或者double的函数&#xff1b;详见这个链接blog #include <iostream> #include <string> using namespace std; bool isPrime(int n) {if (n 0 || n 1) return false;for (int i 2; i * i < n; i)if (n % i 0) return fa…

php审计学习:xdcms2.0.8注入

注入点Fields: 注册页面会引用如下方法: $fields 变量是从 $fields$_POST[fields]; 这里获取&#xff0c; 在代码里没有过滤。 打印 fields 数据查看: 从代码上看 $field_sql.",{$k}{$f_value}"; 最终会变成: ,truename111111,email12345 因为 $field_sql 最终会引入…

windows下安装python和Python-opencv

背景&#xff1a;目前基于python的图像处理和机器视觉的研究还挺多&#xff0c;最近不是在研究目标检测和目标跟踪的算法&#xff0c;由于检测和跟踪的环境比较简单所以从不带学习的跟踪方法&#xff0c;在搜索资料时搜到这个网站&#xff0c;是对opencv中的目标跟踪算法的一个…

捋一捋js面向对象的继承问题

说到面向对象这个破玩意&#xff0c;曾经一度我都处于很懵逼的状态&#xff0c;那么面向对象究竟是什么呢&#xff1f;其实说白了&#xff0c;所谓面向对象&#xff0c;就是基于类这个概念&#xff0c;来实现封装、继承和多态的一种编程思想罢了。今天我们就来说一下这其中继承…

java8简单入门

1、介绍 本片文章会从一下几个知识点进行介绍&#xff1a; 函数式接口 FunctionalInterfaceLambda 表达式函数引用 Function ReferenceStream看了几篇关于 java8 入门的例子&#xff0c;其中引入了许多令人期待已久的特性&#xff08;虽然我没有过这样的体会&#xff09;&#…

玩转带外触发的单目相机之一

背景&#xff1a;去年开始研究vins,但是只是用了普通的相机&#xff0c;然后将IMU和相机粘在一起&#xff0c;然后就是联合标定相机和IMU。VINS使用的相机是带有外触发的&#xff0c;还进行了相机和IMU的硬件时间同步。当时我特别想买个带外触发的相机&#xff0c;一直没找到资…

基于django的视频点播网站开发-step11-后台用户管理功能...

用户管理功能&#xff0c;包含用户添加、列表展示、编辑、删除四大功能。下面我们一一揭晓。 用户添加 我们先实现用户添加功能&#xff0c;我们现在urls.py下添加相关的路由 path(user_add/, views.UserAddView.as_view(), nameuser_add), path(user_list/, views.UserListVie…

BZOJ 1070 拆点 费用流

1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 5860 Solved: 2487[Submit][Status][Discuss]Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员&#xff0c;不同的技术人员对不同 的车进行维修所用的时间是不…

分布式之数据库和缓存双写一致性方案解析

先做一个说明&#xff0c;从理论上来说&#xff0c;给缓存设置过期时间&#xff0c;是保证最终一致性的解决方案。这种方案下&#xff0c;我们可以对存入缓存的数据设置过期时间&#xff0c;所有的写操作以数据库为准&#xff0c;对缓存操作只是尽最大努力即可。也就是说如果数…

使用python从csv文件中读入两列拟合直线

背景&#xff1a;要判断跟踪算法在控制目标物走直线的情况下跟踪的轨迹是否为直线&#xff0c;我保存下来跟踪算法跟踪到的目标的中心点在图像上的像素位置&#xff0c;然后拟合出穿过这些点的直线&#xff0c;然后计算这些点距离直线的平均距离来判断跟踪的精度。&#xff08;…

window document

1 打开一个新窗口 var newDocwindow.open("text/html","replace");var txt"<html><body>Learning about the DOM is FUN!</body></html>";newDoc.document.write(txt);newDoc.close(); //该方法将关闭 open() 方法打开…