首页 > 其他分享 >七中英才集训游记

七中英才集训游记

时间:2024-04-12 15:58:44浏览次数:13  
标签:frac 七中 int 离线 逆元 now 英才 集训 dis

Day 1

noip模拟赛。

T1:

给出一个n,将其分解为\(\frac{a!}{b!}\)的方案。

由于阶乘的数值巨大,13的阶乘就已经爆int了,所以二分 + 枚举解决。

T2:

蜜汁构造题,思考10分钟后直接跳过。

T3:

数据结构题,考场想到86分的\(O(nlog^2)\)超劣解法,需要在线段树的每一个节点上开\(vector\),查找时再在\(vector\)上二分。但是考场一直因为\(vector\)的边界与lower_bound的返回值疯狂Re。没调出来悲……

正解:对序列离散化+离线,重点是顺序遍历1~n,再用树状数组维护操作的时间编号

下午数据结构。

写P7880 [Ynoi2006] rldcot,发现set的时间波动极抽象(可能是因为红黑树的原因),所以记得常数优化。

Day 2

noip模拟赛。

T1:

矩阵求(1,1)到(n,m)的回文路径数。

第一题就是DP,直接去世。

暴力枚举左上角和右下角 DP,复杂度 \(O(n^4)\)。 观察到只有\(x1 + y1 + x2 + y2 = n + m + 2\)的状态才有用,因此我们枚举 \(x1\), \(y1\), \(x2\) 即可得知 \(y2\),复杂度降为 \(O(n^3 )\)。

由于在考场上直接去想\(O(n^3 )\)导致dp状态有问题,最后只拿到暴力分。

T2:

完全可做,但考场经验不足,开题顺序有问题,没时间写正解了……

T3:

又又又又是构造题……

下午扫描线。

主要思想:离线 + 数据结构

一维
(1)区间查包含点数:

离线,枚举每个位置对应的询问端点,树状数组+差分

(2)区间查包含子区间:

离线,将子区间\([l, r]\)看作二维中\((l,r)\)的点,当\([L,R]\)包含\([l,r]\)当且仅当\(L \leq l \leq r \leq R\)。在二维中表现为点\((L,R)\)在\((l,r)\)的左上方,所以从右往左遍历x轴,树状数组维护。

(3)维护与查询区间:

暴力:\(n^2\)枚举。
线段树:\(nlogn\),离线,从左往右遍历R,对于当前R线段树的节点x,表示\([x,R]\)的信息,线段树的区间\([l,r]\)表示$[l,R],[l+1,R]……[r,R] $的信息,R++,思考转移。

网络流

可解决图论中多重贡献不完全贡献的问题。

Dinic

注意事项:

1.建反边

bk[u].push_back(V[v].size());
bk[v].push_back(V[u].size());

2.dis,now数组清空

memset(dis, 0, sizeof(dis));
memset(now, 0, sizeof(now));

3.dis[S]赋值为1不为0

if(!dis[v] && flw[u][i])

如果赋值为0这会出大问题

4.1次bfs应跑完dinic

while(bfs()){
	while(f = dinic(S, INF)) 
		res += f;
}

5.关于当前弧优化
错误:

    for(int i = now[u]; i < V[u].size(); i = now[u])
        now[u]++;

正确:

    for(; now[u] < V[u].size(); )
        now[u]++;

因为当u的儿子v重新遍历到u且更新now[u]时, u这一层的i并未改变。(GGGG)

优化:

if(u == T || !flow){return flow;}

2.当前弧优化与判断res

for(int i = now[u], v; i < V[u].size() && res; i++)
if(!k) dis[v] = 0;

关于输出最大流方案:

图中bfs+dinic后的所有dis大于0的点。

对于净值的计算,即最小割,对于每个点计算min(入度权值和,出度权值和)。

二分图

trick:
(1)处于同一集合的点可以随意交换位置,所以A[i]——B[j]交换为A[j]——B[i]不影响最大匹配。

逆元

(1)递推题注意别在循环中求逆元\(O(nlogn)\)。
(2)关于逆元,\(\frac{1}{n} = \frac{1}{nm} *m\), 所以\(n^{-1}=m^{-1}n^{-1} * m\)。于是先求右端点逆元再从右往左推。

y[n] = mpow(mpow(a + b, n), mod - 2);
for(int i = n; i > 0; i--) 
    y[i - 1] = mul(y[i], a + b);

线性求逆元。

inv[0] = inv[1] = 1;
for(int i = 2; i <= n; i++)
    inv[i] = mul(mod - mod / i, inv[mod % i]);

(3)也就是说逆元满足乘法的但部分性质,可像乘法一样使用。
(注)inv(n) 是 \(\frac{1}{n}\),而不是\(n\)。

小细节

1

(1)滚动数组清空
(2)手动O(2)

#pragma GCC optimize(2)

2

(1)子树合并时先全部计算再全部合并
(2)\(l < i,j<r\) 时 \(i, j\) 可以相等
(3)在for中定义变量时注意类型(\(longlong\))
(4)set不稳定注意卡常

3

(1)递推题注意别在循环中求逆元\(O(nlogn)\)。
(2)关于逆元,\(\frac{1}{n} = \frac{1}{nm} *m\), 所以\(n^{-1}=m^{-1}n^{-1} * m\)。于是先求右端点逆元再从右往左推。

y[n] = mpow(mpow(a + b, n), mod - 2);
for(int i = n; i > 0; i--) 
    y[i - 1] = mul(y[i], a + b);

线性求逆元。

inv[0] = inv[1] = 1;
for(int i = 2; i <= n; i++)
    inv[i] = mul(mod - mod / i, inv[mod % i]);

(3)\(t = m / 2, m \neq 2 * t\)(当m为奇数时)。

4

栈:
可以用来解决类似消消乐的问题。
栈满足许多美妙的性质。
可维护一些等价元素间的删除、合并、顺序。
消消乐:

标签:frac,七中,int,离线,逆元,now,英才,集训,dis
From: https://www.cnblogs.com/Peng1984729/p/18131472

相关文章

  • 2024 4月成七集训总结
    这次集训有收获也有不足收获1.学会了广义扫描线,反演,对数据结构,扫描线的理解进一步加深2.学会了Dinic最大流,Dinic最小费用最大流,对网络流模板,网络流建模了解的更深刻3.学会了新算法:线性基,并且这几天做了一些位运算的题目,对位运算的性质有了更深刻,全面的了解4.学会了DP的slope......
  • 2024/04/12 多校集训总结
    总结知识点线段树,平衡树,块状数据结构,字符串,网络流,DP,DP优化,数学。数据结构听懂得比较多,但是\(LCT\)还是没会,知道了扫描线的广泛应用,码力有小小的提升。字符串对于算法讲的很简略,主要就是讲一些题目,所以没学到啥,题目也没咋做。网络流的话,做了很多题,过程中自己......
  • 八下下午集训
    任务(优先级自上而下完成当天所有练习题写总结练习:https://vjudge.net/contest/618888学习Splayhttps://vjudge.net/contest/612337其他习题任务,具体如下。具体习题任务:矩阵乘法:https://www.luogu.com.cn/problem/CF593Ehttps://atcoder.jp/contests/abc348/tasks/ab......
  • 2024 1/2 成都七中训练
    道路(road)竞赛图三元环计数,答案为\(C(n,3)-\sum_{i=1}^{n}C(du(i),2)\)。扫描线维护出度就好了。图(graph)考虑最优解是一个森林。我们想到转到网络流维护。尝试将图上点随机染色,白点连\(S\),黑点连\(T\),之间的边互连,这样网络流就能找到最优解。正确率为\(1-(1-\frac{1}{......
  • UOJ #710. 【北大集训2021】魔塔 OL
    Description[北大集训2021]魔塔OL题目背景CTT2021D1T2题目描述比特游戏公司最近发布了一款新游戏《魔塔Online》,玩家可以操控勇士在游戏世界中与怪物进行搏斗。在游戏发布之初,魔塔里没有任何怪物,接下来将依次发生\(q\)个事件,每个事件是以下三种之一:+xyzab:表示......
  • C113 带修莫队 P1903 [国家集训队] 数颜色/维护队列
    视频链接:   LuoguP1903[国家集训队]数颜色/维护队列//带修莫队O(n^(5/3))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=1000005;intn,m,B,mq,mr,a[N];intsum,cnt[N],ans[N];st......
  • 成都集训的若干件小事
    扑克死了,这没准挺坏的。其实我一直有一个想喝劲凉冰红茶的愿望。这个愿望只在4.3被满足了。找到了戴上和摘下牙套的最佳时间。开心开心。晨练到4.2,然后就一直在下雨了。对某天晚上的自己感到很力不从心,觉得自己没准改变不了什么过去。颈椎会很痛的说。不知道接下来的几天......
  • 2024 成都七中集训的 50 件小事
    https://weibo.com/ttarticle/p/show?id=2309404965130831265859&luicode=10000011&lfid=1005056790194958在想到写游记的时候一下子就想到了这个,虽然无关,但是还是很遗憾2023世界杯的亚军。2024成都七中集训的50件小事学校里的超市没有可乐卖,我觉得应该不止我一个人想喝......
  • C112 莫队算法 P1494 [国家集训队] 小 Z 的袜子
    视频链接:  LuoguP1494[国家集训队]小Z的袜子//普通莫队O(n*sqrt(n))#include<iostream>#include<cstring>#include<algorithm>#include<cmath>usingnamespacestd;constintN=50005;intn,m,B,a[N];intsum,cnt[N],ans1[N],ans2[N];str......
  • NOI2024 山东一轮省队集训
    Day1A.fibonacci题目描述令\(S_0=\tta\),\(S_1=\ttb\),定义斐波那契串\(S_i=S_{i-1}+S_{i-2}\),加号表示拼接。给定一个字符串\(t\),仅由字母\(\ttab\)构成,求\(S_{\infty}\)最短的一个子串满足\(t\)是该子串的子序列,输出该子串长度。\(1\le|t|\le1.5\times10^5\)。......