[AHOI2002]黑白瓷砖
\(\text{Solution}\)
根据 \(Polya\) 定理推算
记总砖数为 \(m = \frac{n(n+1)}2\)
考虑旋转,不动点数均为为 \(2^{\frac{m+2}3}\)
翻转,考虑三个对角线,记对称轴上砖数为 \(s=\frac{n+1}2\),则不动点数均为 \(2^{\frac{m-s}2+s}\)
还有 \(2^m\)
故答案为三种相加除以 \(6\)
加上高精度即可
\(\text{Code}\)
#include <cstdio>
#include <cstring>
#include <iostream>
#define RE register
#define IN inline
using namespace std;
int n, m;
struct BigInt{
int a[1005], n;
IN BigInt(){n = 0; memset(a, 0, sizeof a);}
IN BigInt operator + (const BigInt &b)
{
BigInt c; c.n = max(n, b.n);
for(RE int i = 1; i <= c.n; i++)
c.a[i + 1] += (c.a[i] + a[i] + b.a[i]) / 10,
c.a[i] = (c.a[i] + a[i] + b.a[i]) % 10;
while (c.a[c.n + 1]) ++c.n;
return c;
}
IN BigInt operator * (const BigInt &b)
{
BigInt c; c.n = n + b.n - 1;
for(RE int i = 1; i <= n; i++)
for(RE int j = 1; j <= b.n; j++)
c.a[i + j] += (c.a[i + j - 1] + a[i] * b.a[j]) / 10,
c.a[i + j - 1] = (c.a[i + j - 1] + a[i] * b.a[j]) % 10;
while (c.a[c.n + 1]) ++c.n;
return c;
}
IN BigInt operator / (const int &b)
{
BigInt c; c.n = n;
for(RE int i = 1; i <= n; i++) c.a[i] = a[i];
for(RE int i = n; i; i--)
c.a[i - 1] += c.a[i] % b * 10, c.a[i] /= b;
while (!c.a[c.n] && c.n > 1) --c.n;
return c;
}
};
IN BigInt fpow(BigInt x, int y)
{
BigInt s; s.n = 1, s.a[1] = 1;
for(; y; y >>= 1, x = x * x) if (y & 1) s = s * x;
return s;
}
int main()
{
scanf("%d", &n), m = n * (n + 1) / 2;
BigInt _2, _3; _2.n = _3.n = 1, _2.a[1] = 2, _3.a[1] = 3;
BigInt ans = fpow(_2, m) + fpow(_2, (m - (n + 1) / 2) / 2 + (n + 1) / 2) * _3;
ans = (ans + fpow(_2, (m + 2) / 3) * _2) / 6;
for(RE int i = ans.n; i; i--) printf("%d", ans.a[i]);
}
[AHOI2002]黑白瓷砖的更多相关文章
- [wikioi2926][AHOI2002]黑白瓷砖(Polya定理)
小可可在课余的时候受美术老师的委派从事一项漆绘瓷砖的任务.首先把n(n+1)/2块正六边形瓷砖拼成三角形的形状,右图给出了n=3时拼成的“瓷砖三角形”.然后把每一块瓷砖漆成纯白色或者纯黑色,而且每块瓷 ...
- P2561 [AHOI2002]黑白瓷砖
$ \color{#0066ff}{ 题目描述 }$ \(\color{#0066ff}{输入格式}\) 文件中以一行的形式存放一个正整数 n , n ≤ 20 . \(\color{#0066ff} ...
- 洛谷——P2556 [AHOI2002]黑白图像压缩
P2556 [AHOI2002]黑白图像压缩 题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验. 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 ...
- 洛谷P2556 [AHOI2002] 黑白图像压缩 [模拟]
题目传送门 黑白图像压缩 题目描述 选修基础生物基因学的时候, 小可可在家里做了一次图像学试验. 她知道:整个图像其实就是若干个图像点(称作像素)的序列,假定序列中像素的个数总是 8 的倍数, 于是每 ...
- LuoguP2556 [AHOI2002]黑白图像压缩 题解
Content 题目描述太过于繁琐而无法简化,请前往原题面查看. 数据范围:\(1\leqslant n\leqslant 8\times 10^4\). Solution & Code 一个 ...
- 「算法笔记」Polya 定理
一.前置概念 接下来的这些定义摘自 置换群 - OI Wiki. 1. 群 若集合 \(s\neq \varnothing\) 和 \(S\) 上的运算 \(\cdot\) 构成的代数结构 \((S, ...
- C语言版flappy bird黑白框游戏
在此记录下本人在大一暑假,2014.6~8这段时间复习C语言,随手编的一个模仿之前很火热的小游戏----flappy bird.代码bug基本被我找光了,如果有哪位兄弟找到其他的就帮我留言下吧,谢谢了 ...
- 课程设计 --- 黑白棋中的 AI
原文链接:https://www.dreamwings.cn/reversi/3013.html 到了考试周了佯,可是偏偏这个时候迎来了很多很多的课程设计,幸好教授把C语言的课程设计提前发出了,不然都 ...
- 【BZOJ-1976】能量魔方Cube 最小割 + 黑白染色
1976: [BeiJing2010组队]能量魔方 Cube Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 884 Solved: 307[Submi ...
- Android自动化压力测试之Monkey Test Android常见的错误类型及黑白名单的使用方法(四)
Android常见的错误类型有两种 1.ANR类型 1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2)BroadcastReceiver在10秒内没有执行完毕 2.Crash类型 1)异 ...
随机推荐
- DHorse操作手册
在介绍DHorse的操作之前,我们先来看一下发布一个系统的流程是什么样的. 发布系统的流程 我们以一个Springboot系统为例,来说明一下发布流程. 1.首先从代码仓库下载代码,比如Gitlab: ...
- 根据经纬度算UTM带号
1. UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的.虽然我们仍然将其看作与"高斯-克吕格"相似的坐标系统,但实际上UT ...
- mysql-DuplicateUpdate和java的threadpool的"死锁"
大家千万不要被文章的标题给迷惑了,他两在本篇文章是没有关系的, 今天给大家讲讲最近2个有意思的issue,分享一下我学到的 mysql DuplicateUpdate的用法要注意的点 java的thr ...
- #define 的神奇操作
# define 的神奇操作 一.宏定义中的 #.## 符号的神奇用法 1.1 # 的用法 1.1.1 作用 #表示字符串化操作符(stringification),其作用是将宏定义中的传入参数名转换 ...
- 【Hadoop学习】上:组成介绍、生态体系、环境准备、不同运行模式测试
目录: 入门(上) HDFS(中) MapReduce&Yarn(下) 优化(补充) 一.大数据概述 概念 特点:VVVV 应用场景 二.Hadoop到大数据生态 1.Hadoop生态圈.发展 ...
- python中函数教程
函数的基本概念 1.什么是函数? 函数相当于一种工具,就是把一串代码装到一起,我们下次需要用的这个功能的时候可以直接使用 函数相当于是工具(具有一定功能) 不用函数 修理工需要修理器件要用锤子 原地打 ...
- golang在win10安装、环境配置 和 goland(IDE开发golang配置)
前言 本人在使用goland软件开发go时,对于goland软件配置网上资料少,为了方便自己遗忘.也为了希望和我一样的小白能够更好的使用,所以就写下这篇博客,废话不多说开考. 一.查看自己电脑系统版本 ...
- TS学习笔记
类型 类型 例子 描述 number 1,2,-2 任意数字 string 'hi',"hi" 任意字符串 boolean true,false 布尔值或者true false 字 ...
- [编程基础] Python对象的浅拷贝与深拷贝笔记
Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象.对于不可变的对象,这通常没有什么区别.但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这些对象的"真实副本 ...
- [编程基础] Python装饰器入门总结
Python装饰器教程展示了如何在Python中使用装饰器基本功能. 文章目录 1 使用教程 1.1 Python装饰器简单示例 1.2 带@符号的Python装饰器 1.3 用参数修饰函数 1.4 ...