Welcome to my blog. The English verison of posts are in En page.

软件设计模式 — 适配器模式

4该模式的目标是,通过一个代理(Adapter),在原来的类(Adaptee)和客户(Client)之间进行协调,从而达到兼容的目的。

例如:我的项目中Davinci中使用的模式,将整体的游戏类作为Adapter,把用于通讯的Server类作为成员变量(也就是ObjectAdapter)。

示意代码

山东省第五届省赛 Circle

首先一点什么是高斯消元?

高斯消元其实就是一种求行列式的值的方法。

例如

|a[0][0]_x1 + a[0][1]_x2+ … a[0][n-1]_xn = a[0][n]|

|a[1][0]_x1 + a[1][1]_x2+ … a[1][n-1]_xn = a[1][n]|

|a[2][0]_x1 + a[2][1]_x2+ … a[2][n-1]_xn = a[2][n]|

|a[3][0]_x1 + a[3][1]_x2+ … a[3][n-1]_xn = a[3][n]|

|a[n-1][0]_x1 + a[n-1][1]_x2+ … a[n-1][n-1]*xn = a[n-1][n]|

已知a[x][y],求x1, x2 .. xn的值。这个时候就可以使用高斯消元。

本题目就是高斯消元求解的一道题目。

依据题意,可以列出方程:

$$E[x] = 0.5_(E[x-1]+1) + 0.5_(E[x+1]+1)$$

其中E代表期望,利用高斯消元我们可以得到x1-xn的值,输出我们需要的E[x]即可。

高斯消元其实就是我们所说的消元,但是针对于大型的矩阵。

倒是很简单的题目。

山东省第五届省赛 Hearthstone II

斯特林数stirling

  • 第一类 stirling数 s(n, k)

n个人分成k组,组内再按特定顺序围圈

也就是分成了k组,组内就像是项链颜色一样,

  1. ( {A, B}, {C, D} )
  2. ( {B, A}, {C, D} )

属于一组

  1. ({A}, {B, C, D})
  2. ({A}, {B, D, C})

不属于一组

给定 $s(n,0)=0,s(1,1)=1$,有递归关系$s(n,k)=s(n-1,k-1) + (n-1) s(n-1,k)$

  • 第二类 stirling数

S(n, k) 是把p元素集合划分到k个不可区分的盒子里且没有空盒的划分个数。

公式:

$$ S(n, n) = 1 (n >= 0) $$

$$ S(n, 0) = 0 (n >= 1) $$

$$ S(n,k)=k*S(n-1,k)+S(n-1,k-1),\text (1<=k<=n-1) $$

这样题目就好解决了。第五届省赛题目神经病。

因为每个桌子是不同的,所以还要利用乘法原理,$ans*m!$

蓝桥杯基础练习

数列排序

十六进制转八进制

转换的时候,先转换成二进制,再转换成十六进制。

这道题目还是比较有意思的,使用string只需要78ms,使用char*则超时。可能strcat每次都需要从头遍历数组,但是string则不需要。

当然,如果是数字没有这么大,完全可以这样处理

是不是很精髓= =

十六进制转十进制

十进制转十六进制

由此也可以想到,如果是二进制的相关转换(数值范围允许的情况),我们可以写一个简单二进制转十六进制,然后利用sscanf来做进一步转换。

当然,正规的做法还是除二取余,逆序排列。

特殊回文数

回文数

特殊的数字


只要读题不出问题就没有问题了。。。不刷了

蓝桥杯入门训练题目

蓝桥的系统需要I64d这种输入格式。无力吐槽。

Fibonacci数列

圆的面积

序列求和

A+B

正方形是否是长方形的子类?

依据里氏代换原则,子类型必须能够替换掉它们的父类型,子类继承了父类,那么子类可以以父类的身份出现 — 在软件中,把父类都替换成它的子类,程序的行为没有变化。

所以从这个角度而言,正方形并非是长方形的子类。

举个例子,如果长方形中存在一个方法,目的是改变长宽的值,但是正方形只有一个边长,那么就可能出现问题。例如如下代码。

上面是椭圆形的代码。可以改写成矩形来解释这个问题,不过太麻烦我还是先做后面的题目了。

ACM – 快速生成测试数据

比赛的时候出现了100 * 100组数据的情况,但是当时使用freopen忘记了具体的步骤,特意重新写一下,也是属于基础的内容。

生成一百行数据,每行100个数据,每个数据为100。

运行过后生成的数据(本来应该输出在屏幕上,此时不会输出到屏幕,而是输出到文件)会保存到output文件中。如果需要使用直接更改output的文件名,再使用一次freopen('r')即可。

ACM – 三道统计题目

基本上就是按照大白学习的,基本上都是计数方法的运用。

这是的大体的对组合数学的学习导图。

指导

enter image description here