- 博客(9)
- 收藏
- 关注
原创 个人ACM入门每周小总结③(最短路,KMP)
Dijkstra O(N^2) O(N^2) O(N) 单源。若 i % ( i - next [ i -1] ) == 0( next [ i -1]!SPFA(不稳定) O(KM) O(NM) O(N) 单源。]可整除i,则s[1~i ]具有长度为 i - next[?..
2022-08-15 08:53:00
137
原创 个人ACM入门每周小总结②(并查集,最小生成树,拓扑排序)
拓展域(种类)并查集:将数组+n,+2n...区域作为不同种类,每个个体在不同域内创建“分身”,根据关系合并分身之间的并查集。初始化pre是为了防止出现闭环无限递归,不初始化就要在并集时加入额外判断(注意模板每一部分的必要性)并查集主要由一个数组pre[ ]和两个函数find( )、merge( )构成。带权并查集:(带权标记merge函数):标记每个节点的深度,取深度较大的当主树。用于处理一些不相交集合的合并及查询问题。时间复杂度:O (N^2)是否为0,并不断更新状态。prim算法(稠密图)......
2022-08-09 15:53:40
142
原创 个人ACM入门总结
大约时间) cin = getline(cin) = 13 scanf = 30 fgets。会读取并保存换行符,结束时返回空指针(0)关同步流:std::ios::sync_with_stdio(false);改为左对齐: printf("%-N.Ms", str);N,M可以动态指定,用*代替M或者N,然后在参数列表里加上一个数字参数。例子:printf("%-*.*s", 5,2,"123");解除绑定:cin.tie(0),cout.tie(0);注意,关闭同步后,不能再使用。........
2022-07-30 21:29:23
99
原创 个人ACM入门每周小总结①(STL,二叉树,字典树)
运算符++,--,+=,-=,iter'=(iter+n),n=iter-iter'*iter为迭代器的值,可输入输出。a为父节点(每个节点唯一),b为子节点(利用字符串中各字符的相对大小(经典s[i]-'a')),c为当前节点编号(保证不重复)name.end()函数返回最后一个元素后面的迭代器[name.begin(),name.end())i.sort(greater());i.insert(i.begin(),m,n);...............
2022-07-30 20:06:25
414
原创 洛谷 P1160 队列安排
若pp为00,则表示将ii号同学插入到kk号同学的左边,pp为11则表示插入到右边。2-N2−N号同学依次入列,编号为ii的同学入列方式为老师指定编号为ii的同学站在编号为1\sim(i-1)1∼(i−1)中某位同学(即之前已经入列的同学)的左边或右边;接下来MM行,每行一个正整数xx,表示将xx号同学从队列中移去,如果xx号同学已经不在队列中则忽略这一条指令。11行,包含最多NN个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。...
2022-07-25 22:27:14
102
原创 三步必杀(P4231)
NN个柱子排成一排,一开始每个柱子损伤度为0。接下来勇仪会进行MM次攻击,每次攻击可以用4个参数ll,rr,ss,ee来描述表示这次攻击作用范围为第ll个到第rr个之间所有的柱子(包含ll,rr),对第一个柱子的伤害为ss,对最后一个柱子的伤害为ee。攻击产生的伤害值是一个等差数列。若l=1l=1,r=5r=5,s=2s=2,e=10e=10,则对第1~5个柱子分别产生2,4,6,8,10的伤害。鬼族们需要的是所有攻击完成之后每个柱子的损伤度。InputInputOutput52。...
2022-07-20 11:09:43
332
原创 最少01翻转次数(前缀和)
第一行输入一个数n,其中1≤n≤20000;第二行输入一个由‘0’和‘1’组成的字符串。小b有一个01序列,她每次可以翻转一个元素,即将该元素从0变1或者从1变0。现在她希望序列不降,求最少翻转次数。输出一个非负整数,表示翻转次数。AC代码,难得写了个精简些的。...
2022-07-19 10:56:13
346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人