[题目]D. Flights for Regular Customers [题意]给定n个点m条边的有向图,每条边有di表示在经过该边前必须先经过di条边,边可重复经过,求1到n的最小经过边数.n,m<=150,di<=10^9,time=4s. [算法]floyd+矩阵快速幂 [题解]需要计算步数,很容易联想到将floyd中每一步拆成矩阵乘法的经典做法. 令a[d][i][j]表示恰好d步能否从 i 走到 j(邻接矩阵) ,令b[d][i][j]表示当前已走d步时允许通过的边(连边矩阵).…
[题目]B. Invariance of Tree [题意]给定n个数的置换,要求使n个点连成1棵树,满足u,v有边当且仅当a[u],a[v]有边,求一种方案或无解.n<=10^5. [算法]数学 置换 [题解]置换可以分解成若干循环,那么两个点的连边本质上是两个循环之间的连边. 因为要求无环(树),易知所有循环长度必须为偶数(这里不包括最后的情况1). 那么循环之间通过连边形成一棵树后,最后的问题是必须至少存在一个循环内部相互连边.(不可能通过循环之间的连边使得循环内部连边,否则循环之间的连边…
[题目]C. Points on Plane [题意]给定坐标系中n个点的坐标(范围[0,10^6]),求一种 [ 连边形成链后总长度<=2.5*10^9 ] 的方案.n<=10^6. [算法]思维题(分块思想) [题解]将这个10^6*10^6的矩阵划分为1000个10^3*10^6的矩阵,第奇数个矩阵内部按y升序连边,第偶数个矩阵内部按y降序连边,两个矩阵之间就直接连边. 1.到达每个点横坐标要移动10^3,总距离10^9. 2.每个矩阵内部纵坐标要移动10^6,总距离10^9. 3.矩阵…
题目 传送门:QWQ 分析 洛谷题解里有一位大佬讲的很好. 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量. 代码 #include <bits/stdc++.h> using namespace std; ; char s[maxn]; int vis[maxn], Stack[maxn], top; int main(){ scanf(); ); ;i<=n;i++){ if(s[i]=='('){ Stack[++top]=i; } els…
[Codeforces]Round #491 (Div. 2) 总结 这次尴尬了,D题fst,E没有做出来.... 不过还好,rating只掉了30,总体来说比较不稳,下次加油 A:If at first you don't succeed- SB题,就是注意一下特判就好了,然后我一开始wa了三次... #include<bits/stdc++.h> using namespace std; int read(){ int ans=0,w=1;char c=getchar(); while(!…
[Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rating两百 A:Fingerprints A题,就在第一个串中查找第二个串中的数字,最气的是一开始没编译直接交CE了,噗 #include<iostream> #include<cstdio> using namespace std; int read(){ int ans=0,w=1…
题目链接  Flights for Regular Customers 首先按照$d$的大小升序排序 然后分成$m$个时刻,每条路径一次处理过来. $can[i][j]$表示当前时刻$i$能否走到$j$ $can$通过上一条路径后的$can$和当前的可行路径矩阵的$d$次幂得到. 这由$floyd$求解即可.考虑到$d$很大,用矩阵快速幂加速. TLE on test 10 矩阵乘法的时候用$bitset$优化. 更新答案的时候,我们枚举每个点. 若第$1$个点可以走到第$i$个点,则更新答案.…
%%%cxhscst2's blog Codeforces 576D Flights for Regular Customers(矩阵加速DP) 代码非常优美 + 简洁,学习到了 Code: #include <bits/stdc++.h> #define N 160 #define inf 0x3f3f3f3f #define maxn 1000000 #define setIO(s) freopen(s".in","r",stdin) using n…
「CF576D」 Flights for Regular Customers 对不起我又想网络流去了 你看这长得多像啊,走过至少多少条边就是流量下界,然后没上界 但是这个题求的最少走多少条边啊...完全不一样好吧... 然后又开始想最短路相关算法,然后觉得分层图可以直接跑,然后发现 \(d_i\le 10^9\),直接爆炸. 然后就不会了. 注意到恰好走过 \(k\) 条边的最短路是可以通过 \(\texttt{Floyd}\) 求得的.那如果我走 \(k\) 条边能够到达某个点,那么我从这个点…
[题目]D. Acyclic Organic Compounds [题意]给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n<=300000,time=3s. [算法]trie合并||hash+线段树合并||dsu on tree [题解]维护每个节点的Trie,那么每个节点的不重复字符串数是Trie的节点数. 每个节点Tire的根设为这个节点的字符(不是空字符). 这样Trie的合并就很方便了,merge(a,b)表示将b…