区间修改区间查询 题目链接:YbtOJ 解题思路 区间操作,我们可以想到差分。 设差分数组为 d d d ,那么求 ∑ i = 1 n a i \sum\limits_{i=1}^na_i i=1∑nai 就可以转换为 ∑ i = 1 n ∑ j = 1 i d i \sum\limits_{i=1}^n\sum\limits_{j=1}^id_i i=1∑nj=1∑i
严格上升子序列数 题目链接:YbtOJ 解题思路 我们设 f i , j f_{i,j} fi,j 表示以 i i i 结尾,长度为 j j j 的序列数。 如果直接暴力做,那是 O ( n 3 ) O(n^3) O(n3) 的时间复杂度。 我们可以离散化,然后用树状数组维护每一种方案数的情况。 其实和逆序对挺像的说(无端感受) code #include<algori
最大半连通子图 题目链接:最大半连通子图 题目描述 解题思路 我们可以发现,任何一个半联通子图在缩点后都是一条链,所以我们可以先用 T a r j a n Tarjan Tarjan 缩点,然后用 d f s dfs dfs 找出最大的数量,再跑一边找一共有多少个。 code #include<algorithm>#include<iostream>#include<c
受欢迎的牛 题目链接:受欢迎的牛 题目描述 解题思路 我们先用 T a r j a n Tarjan Tarjan 缩点。 如果一个点没有出度,证明它是明星点。 但如果有两个点都没有出度的话,那么它们两个都无法指向,所以没有明星点。 输出找出的明星点所包括的奶牛数即可。 code #include<iostream>#include<cstdio>#include<que
有向图缩点 题目链接:有向图缩点 题目描述 解题思路 强连通分量模板,用 T a r j a n Tarjan Tarjan 算法。 code #include<iostream>#include<cstdio>#include<queue>using namespace std;queue<int> q;int n,m;int ans;int tm,tt;int