本来下午想把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的更多相关文章

  1. JDK 12又来了,我学不动了...

    写在前面 看到 JDK 12又发布了,萌新不知不觉感觉瑟瑟发抖,从 Java 1.8的函数式编程思维和范式 到 Java 1.9的模块化特性的加持 以及还没来得及深切感受一下 Java 1.11 的 ...

  2. 我是先学C语言还是先学C++,实不相瞒,鱼和熊掌可兼得!

    这是最近一周时间几个读者小伙伴所提的问题,我顺手截了两个图. 实不相瞒,这类问题之前也经常看到.     每次遇到这种问题,看起来很简单,但是打字一时半会还真说不清,想想今天周末了,写一篇文章来统一聊 ...

  3. 学不动了,ECMAScript2018都来了

    原文:ECMAScript regular expressions are getting better! 作者: Mathias Bynens: Google V8引擎开发者 译者:Fundebug ...

  4. 学不动了!微信官方推出 Web 前端和小程序统一框架 Kbone

    听说最近微信官方推出了一个统一 Web 前端和小程序的框架 -- Kbone ,特意去看了下... 为什么微信要搞Kbone? 微信小程序的底层模型和 Web 端不同,开发者无法直接把 Web 端的代 ...

  5. 模仿写了一个摸鱼APP解决原作者的问题

    前几天见到微博里有人提到摸鱼APP,发现需要在windows store下载才可以使用,文件约100多M左右的样子,自已没有登录微软Store的习惯.想想只有一个介面,没有必要这么大,于是,自已动手写 ...

  6. alpha-咸鱼冲刺day3

    一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 今天把数据库的表给建好了,学长那边把登陆跟注册页面也做好了(纯页面,html5+css的那种) 四,问题困难 日常啥都不会,百度 ...

  7. alpha-咸鱼冲刺day3-紫仪

    总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 今天把数据库的表给建好了,学长那边把登陆跟注册页面也做好了(纯页面,html5+css的那种) 四,问题困难   日常 ...

  8. 从零开始学Electron笔记(一)

    前端技术在最近几年迅猛发展,在任何开发领域我们都能看到前端的身影,从PC端到手机端,从APP到小程序,似乎前端已经无所不能,这就要求我们需要不断地去学习来提升自己!前段时间尤大通过直播介绍了一下Vue ...

  9. 跟我一起学Redis之Redis概述

    背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...

随机推荐

  1. Note -「计算几何」模板

      尚未完整测试,务必留意模板 bug! /* Clearink */ #include <cmath> #include <queue> #include <cstdi ...

  2. 微服务从代码到k8s部署应有尽有系列(四、用户中心)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  3. MySQL是怎么保证redo log和binlog是完整的?

    摘要:WAL机制保证只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复. 本文分享自华为云社区<MySQL会丢数据吗?>,作者: JavaEdg ...

  4. [c/c++]c++控制台操作(基本操作的代码)

    本文转自:http://blog.csdn.net/stude/article/details/7645056 控制台窗口界面编程控制 〇.摘要一.概述二.控制台文本窗口的一般控制步骤三.控制台窗口操 ...

  5. BI工具的选择标准有哪些?

    作为企业的IT部门如果没有良好的BI工具支持,IT部门将会十分容易陷入困境.那么面对多元化的BI工具市场,IT部门如何选择BI工具呢?BI工具选择的标准又是什么?Smartbi将为大家做一个简单的解答 ...

  6. [MethodImpl(MethodImplOptions.Synchronized)]与lock机制

    [MethodImpl(MethodImplOptions.Synchronized)]与lock机制 在进行.NET开发时,经常会遇见如何保持线程同步的情况.在众多的线程同步的可选方式中,加锁无疑是 ...

  7. 《Symfony 5全面开发》教程04、Symfony处理http请求的流程

    当我们访问项目的/test路径时,浏览器会向我们的服务器端发送一个请求.我们打开浏览器的开发者工具,打开network选项卡. 在地址栏中敲击回车,浏览器向我们的服务器端发送了一个请求.请求的地址是1 ...

  8. httpHelper 从URL获取值

    /// <summary> /// 从URL获取值(字符串) /// </summary> public static string GetValueFromUrl(strin ...

  9. DPLL 算法(求解k-SAT问题)详解(C++实现)

    \(\text{By}\ \mathsf{Chesium}\) DPLL 算法,全称为 Davis-Putnam-Logemann-Loveland(戴维斯-普特南-洛吉曼-洛夫兰德)算法,是一种完备 ...

  10. Azure KeyVault(四)另类在 .NET Core 上操作 Secrets 的类库方法-----Azure.Security.KeyVault.Secrets

    一,引言 上一篇文章我们在 .Net Core Web 项目中添加了 "Microsoft.Azure.KeyVault" 的 Nuget 包操作 Azure KeyVault 的 ...