517算法汇总
4段高精度算法排序算法
人文学本笔记汇总
7上人文学本话题1:《语言》话题2:《中国古代经济重心南移》话题3:《改革如何推动社会发展?》话题4:《中国那么大,我们去看看》话题5:《元明清的统治》
我与iSchool
我来iSchool已经有一年多了,现在,wo
线段树
线段树($\tt Segment\ Tree$)最好用的数据结构,没有之一。
可以以 $\log_2{n}$ 的复杂度处理区间和,区间最值,单点修改,区间修改等操作,也是非常的好用,有一些题目你可以直接上一个线段树,然后以比正解略劣的解法过掉。
建树
从上图,我们可以看出,其实就是一个二叉搜索树。叶子节点都是原序列,父亲会综合儿子的信息。
这时当一个数组长度是 $2$ 的不知多少次方的时候。他是一个完全树。如果他不是 $2$ 的整数次方,那么其实就是比那个完全树再多上一层,树的深度是 $\log N$ 的。我们可以使用父子两倍的方法建树(设父亲是 $p$ ,则左儿子是 $p2$ ,右儿子是 $p2+1$)。
1234567891011void Bulid(int p, int l, int r, int *val){ node[p].l=l, node[p].r=r; //区间赋值 if(l==r){ //确定了一个叶子 node[p].mi=val[l];//赋值 return ; } int mid= ...
517编程7段第五课T2
大秦为您打开题目传送门(3/1 题目大意题目的表述十分清楚,他就是让你求字典序最小的最长上升子序列,如果不存在输出 orz 。
注:在某人jdt1010的提示下发现不存在的情况是当 $n=0$ 的时候分值为两分多一点。
3/2 解题思路方法1:$dp[i]$ 表示以 $i$ 结尾的最长上升子序列长度我们阅读题目发现,这道题 $n$ 的数据范围非常大,传统的 $O(n^2)$ 算法肯定是用不了。所以开始思考换一种思路。由于题目数据范围是 $n\le 10^5$ ,所以不难想到使用 $O(n)$ 或者 $O(n\log n)$ 的算法。
我们开始思考:对于一个上升子序列,显然其结尾元素越小,越有利于在后面接其他的元素,也就越可能变得更长。所以,我们新建立一个 $st$ 数组,表示以 $i$ 结尾的最长上升子序列的结尾最小值,显然 $st$ 数组严格单调递增。那么我们实际上就只需要维护这个 $st$ 数组,从而去求出 $dp$ 值。
那么问题就变成了:如何维护这个 $st$ 数组呢?
如果这个 $a[i]$ 直接可以接到我们的LIS后面,那么就直接放到 $st ...
洛谷P1990
大秦为您打开题目传送门(3/1 题目大意题目的表述十分清楚,他就是让你用竖着两个方块和 L 形的方块填满一个长 $n$,宽 $2$ 的长方形。方块可以旋转,如下图
1234 ___ ___ 方块2(反)* ______ /__/\ 方块1(横)* ______ /__/__ /__/__/\/__/\/ /__/__/\ /__/__/\ \_/__/\/\__\/ *方块1(竖) \__\__\/ \__\__\/ *方块2(正) \__\/ *此图大大滴形象
3/2 解题思路我们一拿到这道题,读完以后,显而易见的,这是一个编程题递推题。那么一开始我们大都会像下面这样推
设 $dp[i]$ 表示铺满前 $i$ 列的方案数。然后,自己枚举出 $dp[1]=1, dp[2]=2, dp[3]=5,dp[4]=11$ 。之后呢,又推出 $\tt DP$ 方程 ...
人文学本《改革如何推动社会发展》
商鞅变法关于商鞅姓名:公孙鞅别名:商鞅,卫鞅
性别:男名族:汉血型:?
学历:年少时接触各种学说,对法家思想最感兴趣职业:秦国大良造,后受封于商於十五邑家境:卫国贵族家庭
生卒:约公元前390一公元前338年主要经历:
出生于卫国贵族家庭
学习
离开卫国,投入魏国公孙座门下
离开卫国,到秦国向秦孝公献策
公元前356年,在秦国实行第一次变法
公元前352年,在秦国实行第二次变法
公元前338年,秦孝公去世,商鞅被杀
关于那时的秦国那时的秦国十分落后,西边会有少数名族骚扰,东边会有中原列国的欺凌,中原列国把秦国看成未开化的人,看不起秦国。于是秦孝公决定通过改革的方式让秦国变强。
商鞅变法的大致措施&成效
措施
成效
颁布法律,编订户籍,指定连坐法,轻罪用重刑
使人民不敢轻易犯罪,加强社会治安
奖励军功,禁止私斗
士兵作战勇猛,秦国军事实力加强
重农抑商,奖励耕织,特别奖励垦荒
提高人民劳动积极性,国家财富增加
废井田,开阡陌,承认土地私有
提高人民劳动积极性,国家财富增加
普遍推行县制,设置县一级的官僚机构
加强中央对地方的管理
统一度量衡制
遍 ...