#15天信息集训前半期总结

//( ̄(工) ̄)您受到了比利一击,HP--,XW++,爽脆极了~
#15天信息集训前半期总结

#接下来一段用来刷长度:
#include<bits.stdc++.h>
#define C getchar()
#define ll long long
#define mmm 168430090
#define mem(a,b) memset(a,b,sizeof(a))
#pragma GCC optimize(2)
#pragma GCC optimize(1)
#pragma GCC optimize(2.5)
#ifdef __GNUG__
    #pragma g++ optimize("O3");
    #pragma g++ optimize("O2");
    #pragma g++ optimize("O1");
    #pragma g++ optimize("O1.5");
#endif

#ifdef __GNUC__
    #pragma gcc optimize("O3");
    #pragma gcc optimize("O2");
    #pragma gcc optimize("O1");
    #pragma gcc optimize("O1.5");
#endif

#ifdef  __linux
    #define getchar getchar_unlocked
    #define putchar putchar_unlocked
#endif

Day1:
{
day1进行了一次不算太难的考试,
在经历了一系列yy后搜索因为没设遍历顺序爆炸了,
线段树因为没用离散化,也被养死了= =
不过总的来说考得还可以..//被XWdalao吊打……
}

Day2:
{
开始讲一些奇奇怪怪的数论。。
费马小定理、解绑后的EX欧几里得……
还讲了一些快速幂、lcm、gcd……
威尔逊定理:若p为质数,则(p-1)!≡p-1 (mod p).
费马小定理:若p为质数,则a^p≡a (mod p).
欧拉定理:若gcd(a,p)=1,则a^φ(p)≡1 (mod p).

晚上dalao还讲了KMP之类的处理。

在KMP算法中,对于每一个模式串我们会事先计算出模式串的内部匹配信息,
在匹配失败时最大的移动模式串,以减少匹配次数。
}

Day3:
{    
就讲了一下定理证明。。
(小学数学题?)(⊙o⊙)…表示一个都不会推
晚上dalao讲了Manacher,差点睡着。。

这个东东充分利用了回文的性质,从而达到线性时间。
首先先加一个小优化,就是在每两个字符(包括头尾)之间加没出现的字符(如%),
这样所有字符串长度就都是奇数了,方便了很多。
such as:abcde->%a%b%c%d%e%
记录p[i]表示i能向两边推(包括i)的最大距离,如果能求出p,
则答案就是max(p)-1了(以i为中点的最长回文为2*p[i]-1,
但这是加过字符后的答案,把加进去的字符干掉,最长回文就是p[i]-1)。

我们假设p[1~i-1]已经求好了,现在要求p[i]:
假设当前能达到的最右边为R,对应的中点为pos,j是i的对称点。
1.当i<R时
由于L~R是回文,所以p[i]=p[j](i的最长回文和j的最长回文相同)。
这种情况是另一种:j的最长回文跳出L了。那么i的最长回文就不一定是j的最长回文了,但蓝色的肯定还是满足的。
综上所述,p[i]=min(p[2*pos-i],R-i)。
2.当i>=R时
由于后面是未知的,于是只能暴力处理了。

}

Day4:
{
5点被拉去上海交大纽大/*高级宾馆睡觉(划掉)*/教室听讲。
}

Day5:
{
讲了枚举子集、状态压缩等等,表示题目不难(我是不是装dalao了?)
举个栗子 i=100101101(2进制)
  则i的子集就是把i的一些1变成0
     {
         000101101/100100001/100000000/000000000
     }
枚举i的子集:for (int j=i;j;j=i&(j-1))
还有位运算的小技巧等等
}

Day6:
{
讲了树的dfs序
关于子树大小、深度、结点距离等等的知识

然后是lca(最小公共祖先)的求法:
tarjan、倍增
还有用RMQ的

tarjanLCA算法要用冰茶几呢
具体实现过程:
遍历到结点i,标记flag[i]=1;
对i的邻接链表中的点j进行处理:
如果flag[j]=1;
      lac<i,j>=getfather[j];
否则重复2直到处理完所有;
注意子节点j的father[j]在回溯时插入他baba

倍增求LCA的主要实现方式是用p[i][j]表示i结点,与i距离的2^j的父节点的编号;
很明显p[i][0]就是i的父节点,
具体步骤:
dfs求出每个点的父节点;
预处理出所有合法的p[i][j];
求LCA;
预处理十分jianjie,p[i][j]=p[p[i][j-1]][j-1];
自己的第2^j个父节点就是第2^(j-1)个父节点的第2^(j-1)个父节点;
因为是2的倍数,所以实现起来很好办,而且复杂度是O(nlogn)的;

下午讲了树上差分和差分
表示还蛮水的
距离公式:dis(x,y)=deep[x]+deep[y]-2*deep[lca(x,y)]

}

Day7:
{
又是数据结构。。
线段树、树状数组、左偏树。。
前两个还好(除了线段树的代码量值得吐槽)
左偏树因为没怎么听,不懂。
}

Day8:
{
打了ACM欢乐赛,成功坑到了气球5个^_^
感觉题目有点点水
但有一道大水题!!!!数据结构!!!树!!!没有看题目!!!
pugai…………= =#

晚上讲了差分约束,是一种通过条件组建不等式并建立关系式来求最长、短路得到答案的算法
在求最某路的同时还可判断条件是否可以成立
爽脆极了~~
}

原文地址:https://www.cnblogs.com/handsomeybc/p/9112703.html

时间: 2024-07-29 11:52:07

#15天信息集训前半期总结的相关文章

调整数组中数字的顺序,使得所有奇数位于数组的前半部分

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.要求时间复杂度为O(n),不要求保留数组元素的相对位置. 解析:可以维护两个指针:第一个指针初始化为数组的第一个数字,它只向后移动:第二个指针初始化为数组的最后一个数字,它只向前移动.在两个指针相遇之前,第一个指针总是位于第二个指针的前面.如果第一个指针指向的数字是偶数而第二个指针指向的数字是奇数,就交换这两个数字. 方法一: void patition(ref int[] arr, int n)

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理

3.30日第八次作业,第14章,采购管理,15章,信息文档和配置管理   第14章.采购管理1.采购管理包括哪些过程?(记)P382-383 答:1).编制采购计划.2).编制询价计划.3).询价.招投标.4).供方选择.5).合同管理.6).合同收尾. 2.编制采购计划过程的成果是什么?P386-387 答:1).采购管理计划.2).采购工作说明书. 3.判断:每个采购工作说明书都来自于项目范围基准.P387 答:是的. 4.结合P388页表14-1,工作说明书应该清楚地描述哪些内容?P388

[转帖]为微软效力15年的微软前员工解释Windows 10为什么问题这么多

为微软效力15年的微软前员工解释Windows 10为什么问题这么多 https://www.cnbeta.com/articles/tech/892109.htm 1. 测试团队已经被裁撤 2. 自动化测试和虚拟机测试还是有不充分的地方. 3. 微软能够获取win10的数据, 稍加改进应该就能获取关键个人资料. 众所周知Windows 10系统问题频发整体来说稳定性比较差,然而在此之前的版本其实相对来说稳定性还挺好的.自从Windows 10正式版推出之时该系统就开始频繁出现问题,乃至现在每个

也看《我的前半生》:一辈子太长,我们只谈前半生

一.关于此剧内容 最近开启了追剧模式,不知道什么时候开始追起家庭伦理类的电视剧,或许是年龄到了吧.这部剧仍然延续了近年来的趋势,以离婚为主旋律,讲述了一个做了10年全职太太,只知道买买买的上海小女人,从离婚后无依无靠无法生活到坚强独立重新做回自己的过程.虽然现在还未大结局,但是已经穿插了各种爱情故事,小的,老的,都有这么一段,仿佛近年来的电视剧不给老人找个老伴都不好意思拍出来播放似的. 其次,剧中讲述了各个阶层的人们在大城市的生活,特别是中产阶级(请原谅我把居中贺涵和唐晶归类为中产阶级),他们工

24、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

前半学期UA生活的总结

在UA的前半学期,我总是在惊慌.忙乱中.这主要是因为我没有合理地安排时间!!!以下是经验总结:1. 一定要根据schedule来计划自己的时间,尤其要看schedule上的分值分布2. 课前要预习.课后要复习,教材和ppt一定要买到或者打印出来3. 做事情要快,不要拖沓:做事情前要考虑周密4. 生活要有规律,早睡早起5. 开心也是一天,不开心也是一天,要珍惜每一天,充实度过每一天 加油!!! Vivian

【荐读】《我的前半生》:无论哪个阶层,这8条职场潜规则都终身受用

[荐读]<我的前半生>:无论哪个阶层,这8条职场潜规则都终身受用 2017-07-19人民日报 1 职场没有捷径 好走的路都不是坦途 剧: 做全职太太10年养尊处优的罗子君,早就和职场脱节,但为了与前夫争夺儿子的抚养权,罗子君咬牙开始找工作.然而作为一个30+的职场新人,子君自然到处碰壁,这让闺蜜唐晶十分担心,贺涵却如此安慰唐晶: "路要自己一步一步走,苦要自己一口一口吃,抽筋扒皮才能脱胎换骨.除此之外,没有捷径." 析: 很多人求之不得的捷径,其实不过是投机取巧,在苦难和

《我的前半生》观后感

女人千万不可以为了爱情,放弃事业,很简单,选择爱情,一旦爱情没有了,你就什么都没有了,选择事业,即使爱情没有了,可是你还有本事赚钱养活自己,还有属于自己的生活! 最近一部<我的前半生>让不少女人为此开始反思自己的人生,其实电视剧才是我们生活的最真写照,电视剧中的女主角罗子君一开始就以全职太太吸引人们的眼球,但是跟后来成为职场女强人的罗子君形成了很大的对比,也引起我们好多家庭主妇的关注. 自己一直是不相信爱情的那一族,明白幸福的生活是需要自己打拼与创造的,没有人可以依靠,纵使你的另一半,也会在某

集训前

今天,参加地大的邀请赛,本来是自己领队_Fffm战队出征的,但是队友略坑,此处就不说了.(话说,ACM想组一个好队,真的得志同道合的人啊).算是_Fffm战队,就正式解散了吧.但是自己在暑假集训期间,一定会把他建起来的,加油. 于是临时的,我和DB队拼成了一个队出战.这也算是自己的首战了,按照自己不爆0的初衷,算是这场比赛也可以无悔了.但是第一题,真的是大水哦.自己做了2个多小时,但是还是没有A掉,这就很大程度的影响了后面的题吧.这算是最大的遗憾吧.(今天跟其中一队友,虽然是首次合作,但是感觉还