复变函数与拉普拉斯变换复习要点记录

  1. 表示方法

    1. $$x + i y$$
    2. $$rcos\theta + risin\theta$$
    3. $$r^{i\theta}$$
  2. 运算

    1. $$|z_1z_2| = |z_1||z_2|$$, $$Arg(z_1z_2) = Argz_1 + Argz_2$$
    2. $$z^n = r^n(cos\theta + i sin \theta)^n = r^n(cosn\theta + isinn\theta) = r^ne^{in\theta}$$
  3. f(z)可导(解析)的充分必要条件为
    u(x, y), v(x, y)在在(x, y)处可微,且满足C-R条件
    $$\frac{\partial u}{\partial x} = \frac{\partial v}{\partial y}$$ 且 $$\frac{\partial v}{\partial x} = – \frac{\partial u}{\partial y}$$
    此时$$f'(z) = \frac{\partial u}{\partial x} + i \frac{\partial v}{\partial x}$$ 或 $$f'(z) = \frac{\partial v}{\partial y} – i \frac{\partial u}{\partial y}$$
  4. 初等解析函数

    1. $$e^z = e^x(cosy + isiny)$$ 周期为$$2n\pi i$$
    2. $$ln z = ln|z| + iargz$$, $$Ln z = ln z + i2k\pi$$, $$ln z$$称为对数主支
    3. $$z^u = e^{uLnz}$$
    4. $$sin z = \frac{e^{iz} – e^{-iz}}{2i}$$, $$cos z = \frac{e^{iz} + e^{-iz}}{2}$$
    5. $$sh z = \frac{e^z – e^{-z}}{2}$$, $$ch z = \frac{e^z + e^{-z}}{2}$$
  5. 若函数在C上连续,则f(z)在C上可积,且有
    $$\int_Cf(z)dz = \int_Cudx – vdy + i\int_Cvdx + udy$$
    该公式可以看成
    $$f = u + iv$$与$$dz = dx + idy$$相乘,得$$f(z)dz = (u + iv)(dx + idy) = udx – vdy + i(vdx + udy)$$在C上的积分
  6. 上面的积分方法略复杂,于是一般使用参数方程积分。
    $$\int_Cf(z)dz = \int_\alpha^\beta = f(z(t))z'(t)dt$$
  7. 柯西积分定理
    若f(z)在封闭曲线C及其包围的单连通区域D内解析,则$$\oint_Cf(z)dz = 0$$
    推论:解析函数的路径无关性
    在多连通区域则要求其在边界C(这个C包括内边界)以及D上解析
    所以对于解析函数有形变公式
    $$\oint_{C_0} f(z)dz = \oint_{C_1}f(z)dz$$
  8. 若函数解析,则无限阶解析,并可积
  9. 原函数定理
    上面已经提到解析函数积分的路径无关性,所以起点和终点即可定下积分值,固定起点$$z_0$$则可定义积分上限相关函数,记为$$F(z) = \int_{z_0}^z f(\zeta)d\zeta$$
    则$$F'(z) = f(z)$$
    推论1:因为起点$$z_0$$不同所得到的原函数至多差一个常数C。
    推论2:设G(z)为f(z)其中一个原函数,\int_Cf(z)dz = G(z1) – G(z0)
  10. 柯西积分公式(用边界的积分确定内部单点的值)
    若f(z)在有界闭区域D+C上解析,(C为D的边界),则$$f(z_0) = \frac{1}{2\pi i}\int_C\frac{f(z)}{z – z_0}dz$$
  11. 积分平均值定理
    如果曲线C是以$$z_0$$为中心,R为半径的圆周$$C_R$$,函数f(z)在$$|z-z_0| \leq R$$上解析,则$$f(z_0) = \frac{1}{2\pi}\int_0^{2\pi}f(z_0+Re^{i\theta})d\theta$$
    亦即,函数f(z)在圆心处的值等于它在圆周上的积分平均值。
    此式可以由柯西积分公式推得。
  12. 高阶导数的柯西积分公式
    若f(z)在有界闭区域D+C上解析,则$$f^n(z_0) = \frac{n!}{2\pi i}\oint_C\frac{f(z)}{(z-z_0)^{n+1}}dz$$
    可看成柯西积分公式两端对$$z_0$$求导
  13. 柯西不等式
    f(z)在闭圆盘上解析,则有$$|f^n(z_0)| \leq \frac{n!}{R^n}M$$
    $$M = \max_{|z-z_0|=R} |f(z)|$$
    柳维尔定理
    有界整函数f(z)必为常数
    代数学基本定理
    n次多项式必有n个零点(可能重合)
  14. 泰勒展开系数$$C_n = \frac{f^n(z_0)}{n!} = \frac{1}{2\pi i}\int_{C_r}\frac{f(s)}{(s-z_0)^{n+1}}ds$$
    其中$$C_r$$为一个半径为r的圆,$$R_1 \leq r \leq R_2$$
  15. m级极点的充分必要条件
    f(z)可表示为$$f(z) = \frac{g(z)}{(z-z_0)^m}$$
    g(z)在$$z_0$$解析,且$$g(z_0) \neq 0$$
  16. 留数,设$$z_0$$为孤立奇点
    泰勒展开系数中的$$C_{-1}$$,即$$\frac{1}{2\pi i}\oint_{C_p}f(z)dz$$
    当$$z_0$$为单极点的时候,$$Res[f(z);z_0] = \lim_{z\rightarrow z_0} (z – z_0)f(z)$$
  17. 留数定理
    设D-{z1,z2,z3…}为多连通区域,则
    $$\oint_C f(z)dz = 2\pi i \sum_{k=1}^n Res[f(z);z_k]$$
  18. $$\int_0^{2\pi}R(cos\theta, sin\theta)d\theta = 2\pi i \sum (Res[f(z),z_i]))$$
    其中$$z_i$$为单位圆内极点,$$f(z) = \frac{1}{iz} R(\frac{z^2+1}{2z}, \frac{z^2-1}{2zi})$$
  19. f(z)是D到G的保角映射当且仅当f(z)是D到G的解析双射.
  20. 黎曼映射定理
    设D和G是两个单连通区域,任取点$$z_0 \in D, w_0 \in G, \alpha$$则存在唯一的D到G的保角映射$$w=f(z)$$使得$$w_0 = f(z_0), arg f'(z_0) = \alpha$$
    也就是说,一个点的映射,以及这个点导数的arg,即可确定整个单连通区域的映射。

待续…

未闻花名ED中文歌词

与你的 那一个 夏天 已经到了终点
你和我的 心愿 已经实现
虽然说 还有一些不舍依恋
但我们一定还会 再相见
别再流眼泪 你的笑更美

我们大家不再像 从前般
都已经朝着不同方向 渐行渐远
似乎我们之间谁都已忘记 曾经那些年

为何只有我能看见 你笑颜
你或许 只是我在夏天 一缕思念
还是你也有个心愿未完成 需要我们实现

啊 我看见你的眼泪 总是会不断完成你的各种心愿
啊 多希望你也可以 为自己多想一点

大家为了你 不断在努力 可是总不能完成你的心愿
心 在靠近 都是为你 完成那心愿

与你的那一个 夏天 已经到了终点
你和我的心愿 已经实现
虽然说 还有一些不舍依恋
但我们一定还会 再相见

突然间 我竟发现对你依恋舍不得
你的心里无尽思念 并非 全为我念
我害怕实现愿望 那一瞬间
你随着烟花消失 再不见
请别离开我 我喜欢你呐

啊 我们将不再相见 但我一定会记得你的各种心愿
啊 多希望下个夏天 我们还会再见面

大家在帮你 完成那心愿 其实是你在 帮助我们重见
心 在靠近 都因为你 多谢那心愿

突然间 我竟发现对你依恋舍不得
你的心里无尽思念 并非 全为我念
我害怕实现愿望 那一瞬间
你随着烟花消失 再不见
请别离开我 我喜欢你呐

烟花在绽放 明明很美呐 为何好空虚
突然间 花在绽放 突然间 心复跳动
风在吹 花瓣在飞 我的泪 已成线
你还在这里 却只是因为我们自私

与你的 那一个 夏天 已经到了终点
看来我们 始终是要 说一声再见
我相信 我们一定会再相见
再一次 一起度过那夏天

在最后 我们实现了那祈愿
我相信会再见
相信我们友谊会到永远
让我们 带着你真挚的祝福
微笑着 不断前进 到永远

与你的那一个 夏天 已经到了终点
你和我的心愿 已经实现
虽然说 还有一些不舍依恋
但我们一定还会 再相见

突然间 我竟发现对你依恋舍不得
你的心里无尽思念 并非 全为我念
我害怕实现愿望 那一瞬间
你随着烟花消失 再不见
我们在一起 永远记得你
我们在一起 不会再别离

From:贴吧

[歌词]钟无艳

谢安琪 – 钟无艳
作曲:Christopher Chak 填词:林夕
其实我怕你总夸奖高估我坚忍
其实更怕你只懂得欣赏我品行
无人及我用字绝重拾了你信心
无人问我可甘心演这伟大 化身
其实我想间中崩溃脆弱如恋人
谁在你两臂中低得不需要身份
无奈被你识穿这个念头 得到好处的你
明示不想失去绝世好友
没有得你的允许 我都会爱下去
互相祝福心软之际或者准我吻下去
我痛恨成熟到 不要你望著我流泪
但漂亮笑下去 彷佛冬天饮雪水
被你一贯的赞许 却不配爱下去
在你悲伤一刻必须解慰找到我乐趣
我甘於当副车 也是快乐著唏嘘
彼此这麼了解*
难怪注定似兄妹一对
其实我怕你的好感基於我修养
其实最怕你的私心亏准我体谅
无人问我寂寞像投何处去养伤
原来是我的心境高到变为 偶像
谁情愿照耀著别人就如 月亮
为奴婢为你备饭奉茶是残忍真相
无奈被你识穿这个念头 得到好处的你
明示不想失去绝世好友
没有得你的允许 我都会爱下去
互相祝福心软之际或者准我吻下去
我痛恨成熟到 不要你望著我流泪
但漂亮笑下去 彷佛冬天饮雪水
被你一贯的赞许 却不配爱下去
在你悲伤一刻必须解慰找到我乐趣
我甘於当副车 也是快乐著唏嘘
彼此这麼了解*
让我决定我的快乐
那须得你的允许 我都会爱下去
互相祝福心软之际或者准我吻下去
我痛恨成熟到 不要你望著我流泪
但漂亮笑下去 彷佛冬天饮雪水
被你一贯的赞许 无须装说下去
在你悲伤一刻必须解慰找到我乐趣
我甘於当副车 却没法撞入堡垒
彼此这麼了解 难怪注定似兄妹一对
你的他怎允许 结伴观赏雪的泪
永不开封的汽水 让我抱在怀内吻下去

[HDOJ 4436 a.k.a 天津2012 F] 后缀自动机

【题意】

给定N个数字串,每个串的子串成一个数字,问这些数字放进一个set里面去重后和模2012是多少

【算法】
后缀数组也可以做,但是后缀自动机无疑简单一点。
类似于后缀数组,把所有串通过10这个不属于任意一个数字的元素串连在一起。
然后把结点按val直接sort一下,从前往后递推统计。
递推的时候记录两个值,到达这个结点的方案数way以及到达这个状态的数字之和sum。
每次接收一个c转移显然就应该是给下一个结点的sum加上$$\sum_{i = 1}^{way} (number_i * 10 + c)$$。
把这个式子的常数c拉出来就是$$way * c + 10 * \sum_{i = 1}^{way} number_i$$
亦即$$way * c + 10 * sum$$
就这样从前往后推一下就好了,最后把每个结点的sum值都加起来就是答案。
推的时候要注意的就只有两点

  1. 根节点不应该接收0开头的串,因为这会弄出有前导0的串从而导致重复,这个很显然吧。
  2. 所有的转移都无视10这个分支,因为那本身就是不应该走的…这个也很显然把。

【时间复杂度】
$$O(N * 11 + N \log N)$$
其中N为输入字符总数。后面的N lg N是因为我贪方便直接按val sort了,这一步用了链表跳一下很容易做到O(n)的。 11自然就是字符集大小了。
【空间复杂度】
$$O(N * 11)$$
【吐槽】
今天贴了后缀自动机的模板以后花了不到5分钟就过掉了…现场调了1小时没过是怎么回事,当时的做法是一模一样的 :Cry-Out: 难道又是模板敲错了?
好后悔没有把现场打印的代码拿回来。

#include 
#include 
#include 
#include 
#include 
using namespace std;

template  void checkmin(T &t,T x){if (x < t) t = x;}
template  void checkmax(T &t,T x){if (x > t) t = x;}
#define foreach(it,v) for (__typeof((v).begin()) it = (v).begin();it != (v).end();it++)
const int N = 250005;
const int Mod = 2012;

struct Node {
	Node *ch[11], *fa;
	int val;
	int way;
	int sum;
	Node(): 
		val(0), fa(NULL), way(0), sum(0) { 
		memset(ch, 0, sizeof(ch));
	}
}pool[N * 2 + 5], *last, *root;
vector  vec[N];

namespace SAM {
	int cnt;

	void init() {
		if (cnt)
			for (int i = 0; i < cnt; i++)
				pool[i] = Node();
		cnt = 1;
		root = &pool[0];
		last = root;
	}

	void add(int c) {
		Node *p = last, *np = &pool[cnt++];
		last = np;
		np->val = p->val + 1;
		for  (; p && !p->ch; p = p->fa)
			p->ch = np;
		if (!p) {
			np->fa = root;
		} else {
			Node *q = p->ch;
			if (p->val + 1 == q->val) {
				 np->fa = q;
			} else {
				Node *nq = &pool[cnt++];
				*nq = *q;
				nq->val = p->val + 1;
				q->fa = nq;
				np->fa = nq;
				for (; p && p->ch == q; p = p->fa)
					p->ch = nq;
			}
		}
	}
}

bool cmp(int i, int j) {
	return pool[i].val < pool[j].val;
}

int n, m;
char S[N], buf[N];

void calc() {
	int ans = 0;
	vector  vec;
	for (int i = 0; i < SAM::cnt; i++) {
		vec.push_back(i);
		pool[i].way = pool[i].sum = 0;
	}
	sort(vec.begin(), vec.end(), cmp);
	root->way = 1;
	root->sum = 0;
	foreach (it, vec) {
		int i = *it;
		Node *p = &pool[i];
		for (int c = i == 0 ? 1 : 0; c < 10; c++) {
			if (p->ch) {
				p->ch->way += p->way;
				p->ch->way %= Mod;
				p->ch->sum += p->sum * 10 + p->way * c;
				p->ch->sum %= Mod;
			}
		}
		ans += p->sum;
		ans %= Mod;
	}
	printf("%d\n", ans);
}

int main(){
	while (scanf("%d", &n) != EOF) {
		m = 0;
		SAM::init();
		for (int i = 0; i < n; i++) {
			scanf("%s", buf);
			int len = strlen(buf);
			for (int j = 0; j < len; j++) {
				SAM::add(buf[j] - '0');
			}
			SAM::add(10);
		}
		calc();
	}
}