[学习笔记] 如果你愿意学那么你是可以看的懂的 —— 群论与 burnside 引理和 polya 定理

群与子群

<G,op><G,op><G,op> 是一个群需要满足以下条件:

  • opopop 是一个满足结合律的二元运算,如 *+
  • GGG 是一个集合,存在单位元 eee
  • GGG 中所有元素都有逆元。
  • GGGopopop 运算封闭,封闭简单理解就是元素的逆元也在里面,有单位元,任意两个数二元运算结果也在里面。

这里的单位元,逆元,结合律按照一般的意思来理解即可。

虽然没有要求满足交换律,但还是定义逆元是 xx−1=x−1x=exx^{-1}=x^{-1}x=exx1=x1x=e

如果还满足交换律就叫做交换群。

群内元素只有“乘法”这一种运算规则,这个“乘法”指的就是 opopop 运算。

例如,op='+',那么 xy=x+y,xx−1=x+x−1=exy=x+y,xx^{-1}=x+x^{-1}=exy=x+y,xx1=x+x1=e

<H,op><H,op><H,op><G,op><G,op><G,op> 的子群,满足两个条件:

  • HHHGGG 的子集。
  • <H,op><H,op><H,op> 是个群。

群元素个数有穷时,阶就等于元素个数。

置换群

映射:两个集合之间元素的对应关系,可能一对多,多对一,一对一等。

置换:有限集合到自身的双射,即一一对应。

S={a1,a2,...,an}S=\{a_1,a_2,...,a_n\}S={a1,a2,...,an} 的一个置换 f=(a1a2…anap1ap2…apn)f=\begin{pmatrix}a_1\quad a_2\quad\dots\quad a_n\\a_{p_1}\quad a_{p_2}\quad\dots\quad a_{p_n}\end{pmatrix}f=(a1a2anap1ap2apn)

表示:将 aia_iai 映射成 apia_{p_i}api,即 ai=apia_i=a_{p_i}ai=api。其中 p1,...,pnp_1,...,p_np1,...,pn 是一个 nnn 元排列。

显然 SSS 上所有的置换个数为 n!n!n!

置换的乘法:即函数的合成。

对于两个置换 f=(a1a2…anap1ap2…apn),g=(ap1ap2…apnaq1aq2…aqn)f=\begin{pmatrix}a_1\quad a_2\quad\dots\quad a_n\\a_{p_1}\quad a_{p_2}\quad\dots\quad a_{p_n}\end{pmatrix},g=\begin{pmatrix}a_{p_1}\quad a_{p_2}\quad\dots\quad a_{p_n}\\a_{q_1}\quad a_{q_2}\quad\dots\quad a_{q_n}\\\end{pmatrix}f=(a1a2anap1ap2apn),g=(ap1ap2apnaq1aq2aqn)fffggg 的乘积记为 f∘g=(a1a2…anaq1aq2…aqn)f\circ g=\begin{pmatrix}a_1\quad a_2\quad\dots\quad a_n\\a_{q_1}\quad a_{q_2}\quad\dots\quad a_{q_n}\\\end{pmatrix}fg=(a1a2anaq1aq2aqn)

即先做 fff 的映射再做 ggg 的映射。

定义 Sn={S_n=\{Sn={ 所有的 nnn 元排列 }\}}。装备了乘法opopopSnS_nSn 的子群叫做 nnn 元置换群。

循环置换

循环置换是一类特殊的置换,表示为 (a1,a2,...,am)=(a1,a2,...,am−1,ama2,a3,...,am,a1)(a_1,a_2,...,a_m)=\begin{pmatrix}a_1,a_2,...,a_{m-1},a_m\\a_2,a_3,...,a_m,a_1\end{pmatrix}(a1,a2,...,am)=(a1,a2,...,am1,ama2,a3,...,am,a1)

若两个置换不含有相同的元素,则称它们是不相交的。

举个例子 A=(a1,a2a2,a1),B=(a4,a5,a6a5,a4,a6)A=\begin{pmatrix}a_1,a_2\\a_2,a_1\end{pmatrix},B=\begin{pmatrix}a_4,a_5,a_6\\a_5,a_4,a_6\end{pmatrix}A=(a1,a2a2,a1),B=(a4,a5,a6a5,a4,a6),则 A,BA,BA,B 就是不相交的,所含元素集合的交为空。

任何一个置换都可以分解成若干个(≥1\ge 11)不相交的循环置换的乘积。

举个例子,(a1,a2,a3,a4,a5,a6a2,a1,a3,a6,a4,a5)=(a1,a2)∘(a3)∘(a5,a6,a4)\begin{pmatrix}a_1,a_2,a_3,a_4,a_5,a_6\\a_2,a_1,a_3,a_6,a_4,a_5\end{pmatrix}=(a_1,a_2)\circ(a_3)\circ(a_5,a_6,a_4)(a1,a2,a3,a4,a5,a6a2,a1,a3,a6,a4,a5)=(a1,a2)(a3)(a5,a6,a4)

证明:很简单,将元素看作点,映射关系当成边,则每个节点的入度和出度都为 111。形成的图形必然是若干个环集合,而一个环就代表一个循环置换。

群的陪集分解

GGG 是群,HHHGGG 的子群,a∈Ga\in GaG

定义 Ha={h∣ha∈H}Ha=\{h\mid ha\in H\}Ha={hhaH}。(这里的 hahaha 做乘法,是群的运算符号,即 h(op)ah(op)ah(op)a

HaHaHa 是子群 HHH 的在 GGG 中的一个右陪集。

显然 He=H,a∈HaH_e=H,a\in HaHe=H,aHa

∀a∈G\forall a\in GaGH,HaH,HaH,Ha 等势。(集合大小相同)

证明:构造从 H→HaH\rightarrow HaHHa 的双射,只需让 f(h)=haf(h)=haf(h)=ha 即可。

这说明在有限集的情况,HHHHaHaHa 的阶相同。

∀a,b∈G,a∈Hb\forall a,b\in G,a\in Hba,bG,aHb 等价于 ab−1∈Hab^{-1}\in Hab1H 等价于 Ha=HbHa=HbHa=Hb

证明:a∈Hb⇒ab−1∈H⇒Hab−1∈Ha\in Hb\Rightarrow ab^{-1}\in H\Rightarrow Hab^{-1}\in HaHbab1HHab1HHHH 是群,对内部元素是封闭的)⇒Ha∈Hb\Rightarrow Ha\in HbHaHb

基于此,我们可以定义等价类关系并进行等价类分解。

定义等价类关系,∀a,b∈G,ab−1∈H\forall a,b\in G,ab^{-1}\in Ha,bG,ab1H,则将 a,ba,ba,b 划分在同一个等价类里面。(以 HHH 为判定条件划分 GGG 这个群空间)

同时得到 lagrange定理

拉格朗日定理:设 GGG 是有限群,HHHGGG 的子群,则 GGG 的阶一定是 HHH 阶的倍数,具体是多少倍看能分出多少个等价类来。

GGG 划分成 Ha,Hb,...,HHa,Hb,...,HHa,Hb,...,H,任意两个 ab−1∉Hab^{-1}\not\in Hab1H,而上面又证明了 ∣Ha∣=∣H∣=∣Hb∣=...|Ha|=|H|=|Hb|=...Ha=H=Hb=...

每个等价类的大小是一样的。

左陪集 aHaHaH 与右陪集完全一样,不再赘述。

轨道-稳定子集定理

GGG 是集合 Ω\OmegaΩ 上的有穷置换群。a∈Ωa\in \OmegaaΩ

定义 Ga={g∣g∈G∧g(a)=a}G^a=\{g\mid g\in G\wedge g(a)=a\}Ga={ggGg(a)=a},称 GaG^aGaaaa 的稳定子群。

解释:aaa 是一个数,ggg 是一个置换,GaG^aGa 是所有置换 ggg 满足 ggg 作用于 aaa 后仍是 aaa 不变的集合。

举个例子,一个置换 g=(1234553241)g=\begin{pmatrix}1\ 2\ 3\ 4\ 5\\5\ 3\ 2\ 4\ 1\end{pmatrix}g=(1 2 3 4 55 3 2 4 1),那么 G4G^4G4 就会含有这个 ggg

定义 G(a)={g(a)∣g∈G}G(a)=\{g(a)\mid g\in G\}G(a)={g(a)gG},称 G(a)G(a)G(a)aaa 的轨道。

解释:aaa 是一个数,ggg 是一个置换,g(a)g(a)g(a)ggg 作用于 aaa 后的值,G(a)G(a)G(a) 是这些值的集合。

GGG 中所有置换作用于 aaa 后可能的值的集合。

举个例子,一个置换 g∈G,g=(1234553241)g\in G,g=\begin{pmatrix}1\ 2\ 3\ 4\ 5\\5\ 3\ 2\ 4\ 1\end{pmatrix}gG,g=(1 2 3 4 55 3 2 4 1),那么 G(1)G(1)G(1) 就会含有 555G(2)G(2)G(2) 就会含有 333

轨道-稳定子集定理:∣G∣=∣G(a)∣∣Ga∣\big|G\big|=\big|G(a)\big|\big|G^a\big|G=G(a)Ga

证明:

首先显然 GaG^aGaGGG 的子群,GaG^aGa 对置换作用在置换上的这个二元运算封闭。

考虑陪集分解,任取两个置换 x,y∈G,x(a)=y(a)⇔x−1(x(a))=a=x−1(y(a))⇔x−1y∈Ga⇔xGa=yGax,y\in G,x(a)=y(a)\Leftrightarrow x^{-1}(x(a))=a=x^{-1}(y(a))\Leftrightarrow x^{-1}y\in G^a\Leftrightarrow xG^a=yG^ax,yG,x(a)=y(a)x1(x(a))=a=x1(y(a))x1yGaxGa=yGa

这说明 xxxyyyGGG 关于 GaG^aGa 的陪集分解的同一个等价类中,当且仅当 x(a)=y(a)x(a)=y(a)x(a)=y(a)

也就是说 ∣G(a)∣|G(a)|G(a)GGG 关于 GaG^aGa 的陪集分解的等价类的个数。

由拉格朗日定理知,等价类的个数也就是 GGG 的阶是 GaG^aGa 的阶的倍数。

得证。

burnside 引理

A,BA,BA,B 为有限集合。

GGGAAA 上的置换群;ggg∈G\in GG 的一个置换。

X:X:X: 一些从 AAABBB 的映射集合,且 XXXGGG 下封闭。

X/G:GX/G:GX/G:G 作用在 XXX 上产生的所有等价类集合。

(若 XXX 的两个映射经过 GGG 的置换作用后相同,则在同一个等价类中)

C(g)C(g)C(g)ggg 作用在元素后不变的元素集合大小,即 C(g)=∣Xg∣,Xg={a∣g(a)=a}C(g)=|X^g|,X^g=\{a\mid g(a)=a\}C(g)=Xg,Xg={ag(a)=a}
∣X/G∣=1∣G∣∑g∈GC(g)=∑a∈A1∣G(a)∣|X/G|=\frac{1}{|G|}\sum_{g\in G}C(g)=\sum_{a\in A}\frac 1{|G(a)|} X/G=G1gGC(g)=aAG(a)1

证明:
∑g∈GC(g)=∑a∈A∣Ga∣=∑a∈A∣G∣∣G(a)∣=∣G∣∑a∈A1∣G(a)∣⇒1∣G∣∑g∈GC(g)=∑a∈A1∣G(a)∣=∣X/G∣\sum_{g\in G}C(g)=\sum_{a\in A} |G^a|=\sum_{a\in A}\frac{|G|}{|G(a)|}=|G|\sum_{a\in A}\frac{1}{|G(a)|}\Rightarrow \frac{1}{|G|}\sum_{g\in G}C(g)=\sum_{a\in A}\frac{1}{|G(a)|}=|X/G| gGC(g)=aAGa=aAG(a)G=GaAG(a)1G1gGC(g)=aAG(a)1=X/G
∑g∈GC(g):\sum_{g\in G}C(g):gGC(g): 枚举置换,然后累和每个置换中不动点的个数。

∑a∣Ga∣:\sum_a|G^a|:aGa: 枚举数,然后累和满足 aaa 为不动点的置换个数。

二者只是枚举出发方向不同,但结果是相同的。

∑a1∣G(a)∣:\sum_a\frac 1{|G(a)|}:aG(a)1: 由轨道-稳定子集定理,我们知道以 aaa 为分解参照, G(a)G(a)G(a) 内的所有元素构成一个等价类。

由陪集分解知,GGG 是一个群,无论 aaa 是什么,所有等价类都是大小一样的。

那么假设 ∣G(a)∣=x|G(a)|=xG(a)=x,即所有等价类的大小均为 xxx,每个数都会贡献 1x\frac{1}{x}x1∣G∣∗1x|G|*\frac{1}{x}Gx1 得到的就是等价类的个数,即 ∣X/G∣|X/G|X/G

polya 定理

定义加强 X:X:X: 所有 AAABBB 的映射;定义 c(g):c(g):c(g): 置换 ggg 能拆分成的不相交的循环置换的个数。即环的个数。
∣X/G∣=1∣G∣∑g∈G∣B∣c(g)|X/G|=\frac{1}{|G|}\sum_{g\in G}|B|^{c(g)} X/G=G1gGBc(g)
例如:对于有 nnn 个点形成的环 mmm 种颜色的染色问题,A={1,2,...,n},B={1,2,...,m}A=\{1,2,...,n\},B=\{1,2,...,m\}A={1,2,...,n},B={1,2,...,m}∣Xg∣=mc(g)|X^g|=m^{c(g)}Xg=mc(g)

将置换看作图上的一条有向边,若置换后 u→vu\rightarrow vuv,就连一条有向边。那么就形成若干个环,环中元素的颜色一定相同。


OIOIOI 中一般求本质不同的方案数,本质不同就是不再同一个等价类,换言之一般考察的问题答案就是等价类个数 ∣X/G∣|X/G|X/G

经典例题:poj2154

∣X/G∣=1∣G∣∑g∈Gmc(g)⇒ans=1n∑i=1nn(n,i)|X/G|=\frac{1}{|G|}\sum_{g\in G}m^{c(g)}\Rightarrow ans=\frac{1}{n}\sum_{i=1}^nn^{(n,i)}X/G=G1gGmc(g)ans=n1i=1nn(n,i)

iii 种置换的循环节个数为 gcd⁡(n,i)\gcd(n,i)gcd(n,i)

这个环只能顺时针/逆时针转动,不妨考虑顺时针,那么转 0∼n−10\sim n-10n1 个元素就对应不同的置换,共 nnn 种。

假设当前环的开头为 xxx,在第 iii 种置换下有 x→x+i→x+2i→⋯→xx\rightarrow x+i\rightarrow x+2i\rightarrow\dots\rightarrow xxx+ix+2ix
在这里插入图片描述

假设在 x+kix+kix+ki 回到开头,则 x≡x+ki(modn)⇒ki≡0(modn)⇒k=ngcd⁡(n,i)x\equiv x+ki\pmod n\Rightarrow ki\equiv 0\pmod n\Rightarrow k=\frac{n}{\gcd(n,i)}xx+ki(modn)ki0(modn)k=gcd(n,i)n

这个 kkk 恰好就是环长度,所以个数为 n/k=gcd⁡(i,n)n/k=\gcd(i,n)n/k=gcd(i,n)
1n∑i=1nn(n,i)=1n∑d=1n∑i=1nnd[(n,i)=d]=∑d∣n∑i=1nnd−1φ(nd)\frac{1}{n}\sum_{i=1}^nn^{(n,i)}=\frac{1}{n}\sum_{d=1}^n\sum_{i=1}^nn^{d}[(n,i)=d]=\sum_{d\mid n}\sum_{i=1}^nn^{d-1}\varphi(\frac nd) n1i=1nn(n,i)=n1d=1ni=1nnd[(n,i)=d]=dni=1nnd1φ(dn)
可以在 O(n)O(\sqrt n)O(n) 时间内枚举所有因数 ddd

预处理 1e61e61e6 以内的 φ\varphiφ,后面的就 n\sqrt{n}n 暴力算。

#include <cstdio>
#define maxn 1000005
int mod, cnt;
bool vis[maxn];
int prime[maxn], phi[maxn];void sieve( int n = 1e6 ) {phi[1] = 1;for( int i = 2;i <= n;i ++ ) {if( ! vis[i] ) prime[++ cnt] = i, phi[i] = ( i - 1 );for( int j = 1;j <= cnt and 1ll * i * prime[j] <= n;j ++ ) {vis[i * prime[j]] = 1;if( i % prime[j] == 0 ) {phi[i * prime[j]] = phi[i] * prime[j];break;}else phi[i * prime[j]] = phi[i] * phi[prime[j]];}}
}int qkpow( int x, int y ) {x %= mod;int ans = 1;while( y ) {if( y & 1 ) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}int PHI( int x ) {if( x <= 1e6 ) return phi[x] % mod;int ans = x;for( int i = 2;i * i <= x;i ++ )if( x % i == 0 ) {ans = ans / i * ( i - 1 );while( x % i == 0 ) x /= i;}if( x ^ 1 ) ans = ans / x * ( x - 1 );return ans % mod;
}int main() {sieve();int T, n;scanf( "%d", &T );while( T -- ) {scanf( "%d %d", &n, &mod );long long ans = 0;for( int i = 1;i * i <= n;i ++ ) {if( n % i ) continue;if( i * i == n ) (ans += qkpow(n, i - 1) * PHI(n / i) % mod) %= mod;else(ans += qkpow(n, i - 1) * PHI(n / i) % mod + qkpow(n, n / i - 1) * PHI(i) % mod) %= mod;}printf( "%lld\n", ans );}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么从前那些.NET开发者都不写单元测试呢?

楔子四年前我虽然也写了很多年代码&#xff0c;由于公司虽然规模不小&#xff0c;却并非一家规范化的软件公司&#xff0c;因此在项目中严格意义上来说并没有架构设计、也不写单元测试&#xff0c;后来有幸加入了一家公司&#xff0c;这家公司虽然也是一家小公司&#xff0c;但…

使用 xUnit 编写 ASP.NET Core 单元测试

还记得 .NET Framework 的 ASP.NET WebForm 吗&#xff1f;那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训&#xff0c;在设计上考虑到了可测试性&#xff0c;就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的。其中面向接口和依赖注入…

记录使用 Cake 进行构建并制作 nuget 包

前段时间折腾了一下&#xff0c;总算是把我自己的图片缓存控件&#xff08;https://github.com/h82258652/HN.Controls.ImageEx&#xff09;发布到了 nuget 上&#xff0c;目前已经进入一个比较稳定的版本了&#xff0c;基本没有很严重的 bug 了。其实核心代码早就写完了&#…

DDD领域驱动设计理论篇 - 学习笔记

一、Why DDD?在加入X公司后&#xff0c;开始了ASP.NET CoreDockerLinux的技术实践&#xff0c;也开始了微服务架构的实践。在微服务的学习中&#xff0c;有一本微软官方出品的《.NET微服务&#xff1a;容器化.NET应用架构指南》是我们学习的葵花宝典&#xff0c;纵观微软官方放…

.NetCore使用skywalking实现实时性能监控

一、简介很久之前写了一篇 《.Net Core 2.0 InfluxDBGrafanaApp Metrics 实现跨平台的实时性能监控》关于NetCore性能监控的文章&#xff0c;使用InfluxdbAppMetrics进行项目性能监控&#xff0c;由于技术有限&#xff0c;在正式环境使用一段时间后&#xff0c;莫名的AppMetric…

netcore开发windows普通服务(非Web)并一键发布到服务器

netcore下开发windows服务如果是web项目的话&#xff0c;由于aspnetcore本身是支持的&#xff0c;把默认的host.Run改为host.RunAsService就可以了。但是普通的netcore的控制台项目我终于找到了如下方式来实现&#xff1a;Microsoft.Extensions.HostingSystem.ServiceProcess.S…

Hopping Rabbit

Hopping Rabbit 题意&#xff1a; 给你n个矩阵&#xff0c;每个矩阵(给出左上标和右下标)&#xff0c;现在让你给出一个点的位置&#xff0c;这个点每次只能上下左右四个方向移动&#xff0c;且移动距离为d&#xff0c;是否存在一个这样的点&#xff0c;其所有落点都不在矩阵…

直播预告 - 微软MVP为你揭秘Visual Studio 2019新特性

作为"宇宙第一IDE“的Visual Studio集成开发环境&#xff0c;已经经历了超过十几年的迭代成为一款功能丰富且高效的开发工具&#xff0c;微软自己给Visual Studio 的定位是 “更快、更可靠&#xff0c;对个人和团队更具生产力&#xff0c;更易于使用&#xff0c;并且更容易…

.NET 机器学习生态调查

机器学习是一种允许计算机使用现有数据预测未来行为、结果和趋势的数据科学方法。 使用机器学习&#xff0c;计算机可以在未显式编程的情况下进行学习。机器学习的预测可以使得应用和设备更智能。 在线购物时&#xff0c;机器学习基于历史购买推荐你可能喜欢的其他产品。 刷信用…

图中异色点对最短距离(最小生成树+线段树)

problem 给定一个 nnn 个点&#xff0c;mmm 条边的无向连通图&#xff0c;图有边权&#xff0c;每个点有一个颜色。 有 qqq 次操作&#xff0c;每次操作可更改某一个点颜色。 求每次操作后图中不同颜色点之间的最短距离。 若图中点颜色全相同&#xff0c;输出 000。 一行给…

Defend Your Country

Defend Your Country 题意&#xff1a; n个点&#xff0c;m条边的简单无向连通图&#xff0c;每个点一个权值ai,一个连通块的贡献&#xff1a;(−1)块内点数∗∑ai[点i在该连通块内](-1)^{块内点数}*\sum a_{i}[点i在该连通块内](−1)块内点数∗∑ai​[点i在该连通块内] 可以…

SkyWalking Liunx 环境搭建NetCore接入

背景前两天看见有小哥介绍windows下安装skywalking的介绍地址。正好最近也在搭建linux环境的SkyWalking&#xff0c;顺便把linux环境搭建的经验分享下&#xff0c;帮助下使用linux部署DotNetCore项目的同学。介绍SkyWalking是开源的apm工具&#xff0c;服务器端使用java编写&am…

.NET 基金会完成第一次全面改选

.NET基金会是一个独立的组织&#xff0c;支持.NET社区和开源&#xff0c;旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成&#xff0c;包括项目指导&#xff0c;指导&#xff0c;法律和营销帮助&#xff0c;技术和财务支持设置等&#xff0c;2014年微软组织成立.NET…

xay loves trees

xay loves trees 题意&#xff1a; 有两棵树&#xff0c;现在让你找到一个最大的点集合S&#xff0c;要求S中的点在第一棵树中任意两点存在祖先儿子关系且所有点是连接的&#xff0c;在第二棵树中任意两点都不存在祖先儿子关系&#xff0c;问S集合的最大是多少&#xff1f; …

特来电混沌工程实践

一、导语随着大型分布式系统架构的演进和广泛应用&#xff0c;软件工程的最佳实践也随之改变。我们通过分布式、服务化、DevOps、敏捷开发&#xff0c;快速响应业务的需求变化&#xff0c;支持大规模分布式应用。但这些做法带来效益的同时&#xff0c;也带来了另一个紧迫问题&a…

[ZJOI2007] 棋盘制作(单调栈 / DP悬线法)

problem 洛谷链接 solution1-单调栈 很容易想到&#xff0c;预处理出每个点向上最大能延伸的长度&#xff0c;然后对每个点求一个矩阵面积。 然后思考优化&#xff0c;不难想到每次对一行进行求解。 每一行的所有列一起构成了一个直方图。 直方图直接经典笛卡尔树。笛卡尔…

构建现代Web应用时究竟是选择传统web应用还是SPA

在大前端盛行的今天&#xff0c;似乎前后端分离的开发模式才是大势所趋&#xff0c;而SPA的概念更是应运而生。现在随便构建一个web应用程序如果你不是使用SPA的话&#xff0c;就会感觉有点low&#xff0c;但是真的是这样吗&#xff1f;今天这篇文章我们就来一起探讨下&#xf…

你所不知道的ASP.NET Core MVC/WebApi基础系列(二)

冒个泡&#xff0c;算起来估计有很长时间没更新公众号了&#xff0c;估计是我第一次停更如此之久&#xff0c;人总有懒惰的时候&#xff0c;时间越长越懒惰&#xff0c;但是呢&#xff0c;不学又不行&#xff0c;持续的惰性是不行dei&#xff0c;要不然会被时光所抛弃&#xff…

POJ-2069 Super Star(最小球覆盖)

POJ-2069 Super Star 题意&#xff1a; 给你n个点&#xff0c;求覆盖所有点的最小球的半径 4<n<30 题解&#xff1a; 求最小球覆盖的步骤&#xff1a; &#xff08;1&#xff09;对于一个点&#xff1a;球心就是这个点&#xff0c;且半径无穷小。 &#xff08;2&…

ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

早就听说ASP.NET Core 3.0中引入了gRPC的服务模板&#xff0c;正好趁着家里电脑刚做了新系统&#xff0c;然后装了VS2019的功夫来体验一把。同时记录体验的过程。如果你也想按照本文的步骤体验的话&#xff0c;那你得先安装.NET Core3.0预览版的SDK。至于开发工具我用的时VS201…