市赛回顾

关键词:市赛回顾
B
题意:给定一个矩阵A,每个元素都非负。定义B= i=1Ai ,若 Bij>0 ,则i和j之间的道路将被破坏。判断是否任意两点之间的道路都被破坏。
解法:令 Bk=Ak ,则矩阵 Bkij 大于0,代表i能通过k步到达j点。因此 Bij>0 代表i能够到达j。因此题目即要求判断图是否为强连通!
缩点后,判断连通分量个数是否为1即可,复杂度O(m)

C
题意:计算 ab %c。其中a和b都是高精度,c是质数
解法:1.欧拉定理简化:a对c取模,b对c-1取模
2.快速幂

D
最短路
题意:给出任意两点之间的火车路径和飞机路径长度,-1为没有直达路径。限制如下:只有i能够通过坐火车到达j时,才能通过坐飞机从i->j。求从1到n的最短路径。
解法:1.建立火车图。判断任意点i能否到达j
当u作为起点时,判断u能够到达哪些点,直接dfs所有边即可,复杂度为O(m)。枚举所有点作为起点,总复杂度为O(n*m)
2.若i能够到达j,添加i到j的飞机边,对新图dij一遍即可。

E
求DAG图的拓扑排序个数(共20个点)
解法:dp[s]:DAG图中点集状态为s时的拓扑排序个数
dp[s]+=sp[s^(1< < i)],i点在s状态子图中入度为0

F
题意:判断某个字符串是否为另一个旋转得到
解法:KMP???

G
题意:统计n个不同元素的子集排列个数和
解法:公式为 Cknk! ,化简可到达fn,进而得到fn的递推式,O(n)复杂度预处理,多组询问直接输出即可。

H
题意:统计n表达成3的幂次的和(每个幂次最多出现3次)的不同表达式个数
解法:1.先将n化成3进制
2.f[k]:第k位变化时,0-k位的统计值。从n的第k位往前数,直到非0位j,若第j位是2,那么f[k]=(f[j]+1)*(k-j);若第j位是1,那么f[k]=
(f[j]+1)*(k-j)+f[j]
答案是dp[k]+dp[k-1]+…+dp[0]

I
题意:求由向图中满足“边值不断增大”条件的边数最多的路径中边的条数
解法:dp[u]:当前状态下以u结尾的满足条件的边数最多路径
按边从小到大排序,添边后,dp[v]=dp[u]+1。添边完成后,ans=max{dp[i]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值