博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 40 E. Number Table
阅读量:4947 次
发布时间:2019-06-11

本文共 1268 字,大约阅读时间需要 4 分钟。

题目链接:


妙啊...

  因为已经确定的格子数目严格小于了$max(n,m)$,所以至少有一行或者一列是空着的,那么除了这一行或者这一列的格子,其余的格子随意填,只要满足了当且对应的行(列)的积是$-1$就好了,用组合数算一算就好了,剩下的空着的一行或者一列用于收尾,可以发现它当且仅有一种放法。

  考虑无解:如果$n+m$为奇数,同时还要注意一下如果$n=1$,或者$m=1$的情况

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 #define maxn 201010 #define llg long long 11 #define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);12 llg n,m,k,ans,md;13 llg c[maxn][maxn],a[maxn][maxn],d[maxn][maxn];14 bool pd=true;15 inline int getint()16 {17 int w=0,q=0; char c=getchar();18 while((c<'0' || c>'9') && c!='-') c=getchar(); if(c=='-') q=1,c=getchar(); 19 while (c>='0' && c<='9') w=w*10+c-'0', c=getchar(); return q ? -w : w;20 }21 22 llg check(llg x)23 {24 llg sum=0,V=1;25 for (llg i=1;i<=m;i++) sum+=(a[x][i]!=0),V*=a[x][i];26 if (sum==m && V==1) pd=false;27 return sum;28 }29 30 int main()31 {32 yyj("Number");33 cin>>n>>m;34 if ((n+m)&1) {cout<<0; return 0;}35 cin>>k;36 for (llg i=1;i<=k;i++)37 {38 llg x=getint(),y=getint();39 a[x][y]=getint();40 }41 if (n
>md;52 c[1][0]=c[1][1]=1;53 for (llg i=2;i

 

转载于:https://www.cnblogs.com/Dragon-Light/p/6675564.html

你可能感兴趣的文章
hyperopt中文文档:Scipy2013
查看>>
testng+IEDriverServer+yum+tomcat下载软件包
查看>>
perl6 Net::HTTP 不能发送https请求
查看>>
python 远程 部署和运行
查看>>
hihocoder 第一周 最长回文字串
查看>>
MongoDB学习day02--数据库增删改查
查看>>
spoj705 后缀数组求不同子串的个数
查看>>
KMP算法的一点学习笔记
查看>>
分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
查看>>
localStorage 杂记
查看>>
字符串的求和
查看>>
大功率电池充放电保护器的设计和制作
查看>>
linux sar命令详解
查看>>
Linux 配置Samba服务器
查看>>
Java 继承
查看>>
电商总结(四)基于共享存储的图片服务器架构
查看>>
EJS 语法
查看>>
<<浪潮之巅>>阅读笔记一
查看>>
二叉树的二叉链表存储结构
查看>>
负逻辑
查看>>