恢复训练(学不动了摸会鱼) Pt. 1
本来下午想把pre稿子写了,咕咕咕。
群论是啥也不会了,写个polya试试(手动doge)为什么博客媛没有emoji,以后万一自己搭博客一定要加上这个小东西
polya淼题:poj1286
先复吸一下polya
本来有这么个burnside引理,为什么叫引理呢,因为polya的证明引用了这个小可爱。
正经人谁好好写公式,(其实是不会群论的正规表达方式)
比如说从前有这么个置换群$F = \{ f_i , i \in Z and 1\le i \le n_F \} $ 其中 $n_F = \| F \|$ 集合元素总数。$f_i$表示一种置换(一个n的全排列)。
注意应用有限次任意$f_i$的迭代并不会得到不属于$F$的置换
我们要给一个长为n的序列染色。若我们想得到在置换群$F$下本质不同的染色结果(染色结果A与B本质相同,当且仅当对A有限次应用$F$中的任意置换后可以得到B)
那么$Burnside$引理告诉我们这种染色数是
$\frac{1}{\| F \|}\sum_{i}^{n_F}{Count(f_i)}$
其中$Count(\cdot)$表示在应用一次某种置换后颜色序列不变的染色种类数,即在$f_i$置换下恒不变的颜色序列(不动点状态)
具体的例子可以看看百度百科的那个方块染色,我觉得不错。
Polya定理是burnside的具体化,也就是说只在某种情况下burnside的应用。
这种情况就是序列每个位置都可以染任意m种颜色中的一个。
此时$Count(\cdot)$可以被重写。
若一个置换群$f_i$是由$k_i$个子置换组成的,一个子置换中元素永远也无法到达另一个子置换中的位置。
此时$Count(f_i) = m^{k_i}$
$P\acute{o}lya 定理: \frac{\sum{m^{k_i}}}{\| F \|}$
好了长度水差不多了,简单说一下解题思路哈
显然可以用Polya 做嘛 (doge)
置换就暴力拿出来一个一个看。一共2n个置换,n个转动项链的置换 {2,3,4, ... ,n, 1}, {3, 4, 5, ..., n, 1, 2}, ..., {n, 1, 2, ..., n-1}
还有n个在项链背面转的: {n, n-1, ... , 3, 2, 1}, {n-1, n-2, ..., 2, 1, n}, ...
记一下数就好了
后来发现好像不用把子置换记一遍数,奇数环1个子置换,偶数环有时有两个子置换,反环置换数也可以统计
不管了反正A了
Code:
#include<cstdio>
#include<cstring>
#include<algorithm>
typedef long long lnt;
int a[100];
int vis[50];
lnt sPow(lnt aa, int b){
lnt ans = 1;
while(b){
if(b % 2) ans *= aa;
aa *= aa;
b /= 2;
}
return ans;
}
void dfs(int now){
if(vis[now]) return ;
vis[now] = 1;
dfs(a[now]);
return ;
}
lnt count(int n){
int ans = 0;
memset(vis, 0, sizeof(vis));
for(int i=1; i<=n; ++i) if(! vis[i]){
++ans;
dfs(i);
}
return sPow(3ll, ans);
}
lnt polya(int n){
if(!n){
return 0;
}
lnt sum = 0;
for(int delta=0; delta<n; ++delta){
for(int i=0; i<n; ++i){
a[(i+delta)%n + 1] = i+1;
}
sum += count(n);
for(int i=0; i<n/2; ++i) std::swap(a[i+1], a[n-i]);
sum += count(n);
}
return sum / (2ll*n);
}
int main(){
int n;
while(true){
scanf("%d", &n);
if(n == -1) return 0;
printf("%lld\n", polya(n));
}
return 0;
}
Hahaha
再弄点计算几何(doge)
随处找找
发现lgl巨佬这里有不少题诶
(我好像一个也不会诶...)%%% lgl
算了先打开一个看看
先来这个poj3525
17.00 了,还不会。·咕咕咕
肝pre去了(doge)
恢复训练(学不动了摸会鱼) Pt. 1的更多相关文章
- JDK 12又来了,我学不动了...
写在前面 看到 JDK 12又发布了,萌新不知不觉感觉瑟瑟发抖,从 Java 1.8的函数式编程思维和范式 到 Java 1.9的模块化特性的加持 以及还没来得及深切感受一下 Java 1.11 的 ...
- 我是先学C语言还是先学C++,实不相瞒,鱼和熊掌可兼得!
这是最近一周时间几个读者小伙伴所提的问题,我顺手截了两个图. 实不相瞒,这类问题之前也经常看到. 每次遇到这种问题,看起来很简单,但是打字一时半会还真说不清,想想今天周末了,写一篇文章来统一聊 ...
- 学不动了,ECMAScript2018都来了
原文:ECMAScript regular expressions are getting better! 作者: Mathias Bynens: Google V8引擎开发者 译者:Fundebug ...
- 学不动了!微信官方推出 Web 前端和小程序统一框架 Kbone
听说最近微信官方推出了一个统一 Web 前端和小程序的框架 -- Kbone ,特意去看了下... 为什么微信要搞Kbone? 微信小程序的底层模型和 Web 端不同,开发者无法直接把 Web 端的代 ...
- 模仿写了一个摸鱼APP解决原作者的问题
前几天见到微博里有人提到摸鱼APP,发现需要在windows store下载才可以使用,文件约100多M左右的样子,自已没有登录微软Store的习惯.想想只有一个介面,没有必要这么大,于是,自已动手写 ...
- alpha-咸鱼冲刺day3
一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 今天把数据库的表给建好了,学长那边把登陆跟注册页面也做好了(纯页面,html5+css的那种) 四,问题困难 日常啥都不会,百度 ...
- alpha-咸鱼冲刺day3-紫仪
总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 今天把数据库的表给建好了,学长那边把登陆跟注册页面也做好了(纯页面,html5+css的那种) 四,问题困难 日常 ...
- 从零开始学Electron笔记(一)
前端技术在最近几年迅猛发展,在任何开发领域我们都能看到前端的身影,从PC端到手机端,从APP到小程序,似乎前端已经无所不能,这就要求我们需要不断地去学习来提升自己!前段时间尤大通过直播介绍了一下Vue ...
- 跟我一起学Redis之Redis概述
背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...
随机推荐
- Kubeadm部署-Kubernetes-1.18.6集群
环境配置 IP hostname 操作系统 10.11.66.44 k8s-master centos7.6 10.11.66.27 k8s-node1 centos7.7 10.11.66.28 k ...
- 痞子衡嵌入式:揭秘i.MXRT1170上串行NOR Flash双程序可交替启动设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1060/1010上串行NOR F ...
- CobaltStrike逆向学习系列(8):Beacon 结果回传流程分析
这是[信安成长计划]的第 8 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Beacon 接收与处理 0x02 结果回传 Beacon 在接受完命令并执行后,会将数据加密回传给 T ...
- 实力再获认可!Smartbi入选爱分析·产业数字化厂商全景报告
近日,中国独立的第三方产业数字化研究与咨询机构--爱分析发布<2021爱分析·产业数字化厂商全景报告>.思迈特软件凭借优秀的解决方案能力及丰富的业务实践经验,入选报告中银行数字化.保险数字 ...
- Html简单标签
学习html <h1> 标题标签</h1> 标题标签 <p>段落标签</p> 段落标签 换行标签</br> 换行标签 水平线标签</h ...
- WPF中TreeView控件数据绑定和后台动态添加数据(一)
数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...
- 如何修改oracle数据库用户密码过期策略
转至:https://www.cnblogs.com/zhangshuaihui/p/11451590.html 1. 查询数据库用户何时过期 登陆数据库PL/SQL工具,输入以下sql语句: s ...
- python实用脚本-通过jenkins界面化导出数据
1.jenkins 配置 2.jenkins 脚本 ansible-playbook /opt/test.yaml --extra-vars "loanno=${loanno}" ...
- VSCode 安装Vue 插件 - vetur
想要编辑器识别vue文件需要安装vue插件,在VSCode上好用的是vetur 如下图:(如果没有安装就会出现安装按钮,点击进行安装) 安装完成之后,重启VSCode,就能识别vue文件了,方便我们编 ...
- Java中常用的加密方式(附多个工具类)
一.Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二.分类按加密算法是否需要key被分为两类 ...