hhuoj1054_撸猫狂魔
来源:互联网 发布:matlab 矩阵动态添加 编辑:程序博客网 时间:2024/04/29 00:23
hhuoj1054_撸猫狂魔
hhuoj1054
描述:
zyyyyy是一个二刺猿。虽然他没有九十八亿,但是他坚信可爱即正义,所以他特别喜欢撸猫。
今天他为了让猫乖乖的被撸带了很多很多猫粮,猫粮被摆成网格图,于是一大群白猫为了吃猫粮也成了网格图。
等它们吃的开心了zyyyyy就开始撸她们。当他撸某只猫的时候,这只猫所在的行和列的猫虽然在吃东西但还是会被吓得变色(白猫变黑猫,黑猫变白猫),而这只猫因为惊吓过度就变了两次色(相当于不变色)。
撸了k次以后zyyyyy心满意足,不过现在他想知道自己闯了多大的祸。。。因为原来这些猫都是白的,现在有很多变成黑的了。定义整个网格图的黑色值等于所有行的黑色值相乘,一行的黑色值是这行黑猫的个数。不过黑色值可能太大了,为了避免他倍受打击我们还是告诉他黑色值模1000000007的值吧。。。输入:
第一行三个整数,n,m,k。表示行数,列数,撸猫次数。接着k行每行两个整数,x,y。表示这次撸的是x行y列的猫 (可以重复撸)n,m <= 1000k <= 5000001<=x<=n1<=y<=m
输出:
一个整数,表示黑色值模1000000007的值。
样例输入:
5 4 23 33 2
样例输出:
32
思路
一开始,T了一发。复杂度搞错了,想的是记录每个地方的撸猫次数,偶数就不管,奇数就表示撸猫一次,然后更新行列。。。
后面用了一个r[maxn]和c[maxn],分别记录该行和该列的撸猫次数。
然后看每一个位置的时候,就只需要看该行该列的撸猫次数和是否为奇数,如果为奇数,并且该位置为黑猫。
不用管撸猫位置猫变两次,因为r[x-1]和c[x-1]都加1,那么此位置是相当于加了一偶数,无影响。
AC代码
#include<iostream> #include<cstdio> #include<cstring> #define mod 1000000007 using namespace std; const int maxn = 1010; int r[maxn], c[maxn]; long long k, n, m, ans, x, y, i, j, tmp; int main() { memset(r,0,sizeof(r)); memset(c,0,sizeof(c)); scanf("%lld%lld%lld",&n,&m,&k); while(k--) { scanf("%d%d",&x,&y); r[x-1] ++; c[y-1] ++; } ans = 1; for(i = 0;i < n;i ++) { tmp = 0; for(j = 0; j < m ;j ++) { tmp += (r[i] + c[j]) % 2; } ans = ans * tmp % mod; } printf("%lld\n",ans); return 0; }
阅读全文
0 0
- hhuoj1054_撸猫狂魔
- 1054: 撸猫狂魔
- HHUOJ_1054: 撸猫狂魔
- 用excel公式将表格数据换成sql脚本,新技能get
- 调用织梦搜索功能
- bzoj 3590: [Snoi2013]Quare
- java swing实现斗地主小游戏项目源码
- AS 导入andbase源码
- hhuoj1054_撸猫狂魔
- poj 1185 炮兵阵地(状态压缩dp)
- 点击外部隐藏键盘
- 算法(3)快速排序
- DB2错误信息汇总
- js 数组去重
- Unity Shader 画网格
- Android 实时网路监测类 步骤一(NetWorkBroadcastReceiver 注册广播)
- RAC + MVVM原理及实例详解