题意:n*n的格子,涂色,有k种颜料,必须满足旋转任意个90度和翻转之后图片的样子不变,现在已经有m个格子涂过色了,问还有多少种涂法满足上述条件。

分析:

满足上述对称条件,那么涂色的种类问题我们可以放在正方形的一个角来做,因为一个角确定了其他角的颜色也就确定了。

以左上角的下半角为例。共有1+2+....+(n+1)/2个格子,然后记录涂过色的格子对应到这个三角形里的格子数目,用tot来记录,即每输入一个涂过色的格子的坐标我们就在这个三角形里找与之对应的坐标,用vis[][]数组标记是否已经计过数了,若没有就tot++,但是这里vis[][]会爆内存,改用map<pair<int,int>,int>就好了。再说一遍:STL大法好。

坐标的对应关系:

设x'和x是对应的横坐标,那么看图容易得:x'+x=n-1(这里题目要求0~n-1,WA了一发),所以x'=n-1-x,由于左上角,横纵坐标一定是小的,那么我们就来判断,如果输入的坐标x大于他的对应坐标n-1-x,就把x赋值为n-1-x;y同理。这样就把所有坐标对应到了左上角的正方形,还要把范围缩小到下三角形,那么再看坐标关系,只需x>y即可,也就是如果x<y的时候换一下横纵坐标就行了(因为关于对角线对称)。

找到了还能自由涂的格子就算一个快速幂取模就行了。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<algorithm>
#define mod 100000007
using namespace std;
long long n,m;
long long k;
//int vis[10005][10005];
map<pair<int,int>,int> mp;
long long f(long long k,long long b,long long m)
{long long ans=1;while(b){if(b&1) ans=(ans*k)%m;b>>=1;k=(k*k)%m;}return ans;
}
int main()
{while(scanf("%I64d%I64d%I64d",&n,&m,&k)!=EOF){// memset(vis,0,sizeof(vis));mp.clear();long long tot=0;while(m--){int x,y;scanf("%d%d",&x,&y);if(x>n-1-x) x=n-1-x;if(y>n-1-y) y=n-1-y;if(x<y) swap(x,y);
//            if(!vis[x][y]){
//                vis[x][y]=1;
//                tot++;
//            }if(!mp[make_pair(x,y)]){mp[make_pair(x,y)]=1;tot++;}}long long a=(n+1)/2;long long ans=f(k,a*(a+1)/2-tot,mod);printf("%I64d\n",ans);}
}

HDU 4365 正方形格子涂色中心对称轴对称的涂法有多少种-思维-(矩阵坐标关系快速幂取模)相关推荐

  1. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  2. 快速幂取模——Pupu(HDU 3003)

    题目: 由题目推出计算公式: ans = (2^(n-1) + 1) % n 因为n取值很大,所以需要用到快速幂取模: int multi(int a,int b) { int ret; ret=1; ...

  3. c语言写一个格子涂色的游戏,不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思...

    原标题:不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思 30000+游戏爱好者已加入我们! 沐沐带你发现好游戏! <魔力贴贴>游戏小程序好玩吗? <魔力贴贴>小游戏怎么玩 ...

  4. hdu 3003-Pupu-快速幂取模

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3003 Pupu Time Limit: 2000/1000 MS (Java/Others)     ...

  5. c语言写一个格子涂色的游戏,格子涂色游戏(VC绘图--10:用鼠标控制绘图作业)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 二楼代码,用鼠标左键选色,填色.用鼠标右键退出.下面是代码及注释 #include void gezi();//函数声明 int fill();//函数声 ...

  6. python画正方形并涂色_这种图片怎么用python画出来,每一个数字代表一种颜色?...

    Python 画正方形,写数字的代码如下: from PIL import Image, ImageDraw, ImageFont, ImageFilter WIDTH = 100 * 4 HEIGH ...

  7. python画正方形并涂色_关于python使用cv画矩形并填充颜色同时填充文字

    原博文 2017-05-08 12:18 − font = cv2.FONT_HERSHEY_SIMPLEX # 使用默认字体 cv2.rectangle(im, (10, 10), (110, 11 ...

  8. hdu 3221 Brute-force Algorithm(高速幂取模,矩阵高速幂求fib)

    http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序.问funny函数调用了多少次. 我们定义数组为所求 ...

  9. 【Polay定理总结】【2019华为笔试】【普通涂色问题 组合数学】召唤师的技能——圆排列,翻转和项链排列

    题目描述: 华为用的这个, 其实是个杭电的题目: 题目链接:hdu 3923 Invoker dota游戏里面,召唤师可以控制冰雷火三种元素,并通过元素组合产生新的技能.现在我们修改了张新的地图, 地 ...

最新文章

  1. ASP.NET MVC Html.ActionLink使用说明
  2. python微型web框架flask介绍
  3. 【错误记录】集成 Tinker 热修复报错 ( No such property: variantConfiguration for class: .ApplicationVariantData )
  4. Android --- RecyclerViwe中使用SnapHelper报错:“An instance of OnFlingListener already set.”
  5. 迎开学水题狂欢赛(舞踏会[dp+三叉树],HH去散步[矩阵快速幂],排序[模拟],铁路旅行[线段树])
  6. 快速了解AngularJs HTTP响应拦截器
  7. PostgreSQL 自定义复合类型(composite type) deform引入的额外开销
  8. oracle数据库抽取到gp,Oracle迁移数据到Greenplum
  9. display: inline-block;水平居中
  10. java下载上传远程文件
  11. 复杂多个合约部署验证方法
  12. 如何保证虚拟机ip地址不变
  13. 在 CentOS 上构建无线网络测试环境
  14. 干货分享 | Windows系统下载SRA数据方法——生信小白亲测可行
  15. Windows 批处理 一键安装MySQL教程 MySQL绿色安装包下载
  16. 服务器并发量计算,网站并发量计算
  17. AILearning:GitHub万星的中文机器学习资源,路线图、视频、电子书、学习建议全在这
  18. 蓝桥杯 填空题 水题 等差素数列 C++ 简单暴力枚举
  19. 华泰单因子测试之估值类因子(回归法)
  20. 国家自然科学基金 计算机视觉,【科研新成果】我院2019年国家自然科学基金项目取得新突破...

热门文章

  1. 学习资料 | TI毫米波雷达学习网站汇总(雷达初学者必须要知道)
  2. 哈尔滨工业大学csapp大作业
  3. 为什么你的简历没人看?
  4. 味美浓香 野三坡花椒芽
  5. VML编程之------group集合容器.vmlframe图形引用 ----《VML极道教程》原著:沐缘华
  6. 借鉴--阮一峰博客之Jquery设计思想
  7. Docker 之 桥接网络 (二)
  8. rasa填槽slot
  9. 咬文嚼字vue系列(二)
  10. 2018 某外企大公司Java面试题