随笔分类 - 算法练习C++
做过的一些题目,使用C++的写程序
摘要:PAT顶级 1002. Business (35) As the manager of your company, you have to carefully consider, for each project, the time taken to finish it, the deadline,
阅读全文
摘要:传送门 由于n只有15,因此可以枚举每一层是从左走还是从右走,而这一层是一直走到尽头还是走到最后一个再返回取决于上一层,预处理出每一层左右走到尽头的值,再根据枚举出的状态计算即可。总的时间复杂度是O(nn^15)
阅读全文
摘要:C. Sagheer and Nubian Market 传送门 二分k,首先O(n)得到改变后的数组,用优先队列得到前k各最小值,总的时间复杂度是O(nlogn) include include include include include include include include def
阅读全文
摘要:资料1:http://blog.csdn.net/regina8023/article/details/41910615 资料2:模板来源:http://www.cnblogs.com/lidaxin/category/794693.html 主席树主要是维护区间在第i个数插入之后,每个区间内的数出
阅读全文
摘要:priority_queue默认是大根堆,如果需要使用小根堆,如下 int main(){ priority_queue,greater que; while(1){ int x=read(); que.push(x); if(x== 1){ while(!que.empty()) { cout
阅读全文
摘要:单链表 基本结构 快慢指针及其应用 (1) 判断链表中是否有圈(亦称floyed判圈法) ACM例题: Uva 11549 原理:两个人跑步,A的速度大于B,如果跑道没有环,那么A永远是领先于B,如果有环,那么A必然会追上B. (2)寻找循环链表的入口 设环周期为r,相遇点为x,起点到入口长度为a,
阅读全文
摘要:题链:https://nanti.jisuanke.com/t/15499 这题观察图纸可知成三线段上的相邻点之间的距离有1,2,3三种情况的,同时要成线段必然是同横坐标或者纵坐标,然后我们排除掉穿过0的特殊案例(例如: 1,1,3)就可以啦。 include include include inc
阅读全文
摘要:题链:“https://nanti.jisuanke.com/t/15500” 本来希望通过找循环节然后套KMP来通过后面题的,可是只过了B题,可能循环节不一定是存在的。
阅读全文
摘要:poj 2559(单调栈) 对于此题,我们需要找到每个点分别向左右能够扩展到的连续长度,能够扩展的条件为:这些区间的元素值都都大于等于当前点的值。 使用单调栈维护从起点到当前点的递增序列,如果栈顶元素大于当前点,我们就一直将栈中元素弹出,直到遇到小于当前点的元素,以此来维护栈的递增性,显然此时的点最
阅读全文
摘要:Hdu 5274 Dylans loves tree (树链剖分模板) 题目传送门 include include include include include include include include define ll long long define inf 1000000000LL
阅读全文
摘要:Poj 3683 Priest John's Busiest Day(2 SAT) [传送门][1] 2 SAT的重点就在于建图,对于此题,显然每个时间段我们只能选择前D[i]时间或者后D[i]段时间,我们根据每两队时间限制进行连边,例如 min(S[i]+D[i],S[j]+D[j]) max(S
阅读全文
摘要:poj 2186 强连通分量 [传送门][1] include include include include include include include include define ll long long define inf 1000000000LL define mod 1000000
阅读全文
摘要:hihocoder 1515 分数调查 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校总共有N名学生,编号1 N。学校刚刚进行了一场全校的古诗文水平测验。 学校没有公布测验的成绩,所以小Hi只能得到一些小道消息,例如X号同学的分数比Y号同学的分数高S分。
阅读全文
摘要:Zoj 3781(构造) Zoj 3781 As we all know, Coach Gao is a talented chef, because he is able to cook M dishes in the same time. Tonight he is going to have
阅读全文
摘要:ACdream 1063 字典树 平衡树 神奇的cxlove有一颗平衡树,其树之神奇无法用语言来描述 OrzOrz。 这棵树支持3种操作: 1、加入一个数到树中,维护平衡树的合法性; 2、给一个数X,用O(1)的时间求出来树中的数Y使得 Y ^ X 最大(异或操作, Pascal 写作 xor ,
阅读全文
摘要:Poj 2187 旋转卡壳求解 [传送门][1] 旋转卡壳,是利用凸包性质来求解凸包最长点对的线性算法,我们逐渐改变每一次方向,然后枚举出这个方向上的踵点对(最远点对),类似于用游标卡尺卡着凸包旋转一周,答案就在这其中的某个方向上。 直接暴力和旋转卡壳速度对比(仅此题) C++ include in
阅读全文
摘要:Poj 2187 凸包模板求解 [传送门][1] 由于整个点数是50000,而求凸包后的点也不会很多,因此直接套凸包之后两重循环即可求解 C++ include include include include include include include define ll long long d
阅读全文
摘要:Atcoder regular Contest 073(C Sentou) 传送门 每个人对开关的影响区间为a[i] a[i]+t,因此此题即为将所有区间离散化后求所有独立区间的长度和 include include include include include include include d
阅读全文
摘要:Atcoder regular Contest 073(D Simple Knapsack) 传送门 因为 w1≤wi≤w1+3 这个特殊条件,我们可以将每个重量离散化一下,同时多开一维记录选择的物品数量,因此可以由状态得到此时的实际背包重量. dp[i][j][k]为考虑前i个物品,背包剩余容量,
阅读全文
摘要:传送门 对于错想成lis的解法,提供一组反例 1 3 4 2 5同时对于这次案例也可以观察出解法:对于每一个数,如果存在比它小的数在它后面,它势必需要移动,因为只能小的数无法向右移动,而且每一次移动都必然可以使得这个数到达正确位置,这是根据题意而得的
阅读全文