[CF461E]Appleman and a Game 题意:你有一个字符串t(由A,B,C,D组成),你还需要构造一个长度为n的字符串s.你的对手需要用t的子串来拼出s,具体来说就是每次找一个t的子串放在已经拼出来的串的后面.你想要最大化你的对手拼出s的所需次数,你的对手是绝顶聪明的.输出这个次数. $n\le 10^{18},|t|\le 10^5$ 题解:先从对手的角度考虑,每次它肯定是尽可能的延伸已有的字符串,一直延伸到t中不存在这个子串为止.所以我们可以每次向s中加入[a,b),使得t…
题目大意:给定一个 N 个顶点的邻接矩阵.起点顶点.终点顶点,求至少经过 K 条边(边可以重复)从起点到终点的最短路长度,若不能到达,输出 -1. 题解:至少经过 K 条边和恰好经过 K 条边的初始条件不同,因为至少经过 1 条边的任意两点最短路就是通过 Floyd 算法算出的矩阵,而恰好经过 K 条边的任意两点的最短路则是最初的邻接矩阵.不过两个算法的矩阵幂算法是相同的,可以用快速幂加速递推. 代码如下 #include <bits/stdc++.h> using namespace std…
卡了一上午常数,本地13s,可是bzoj 就是过不去~ #include <bits/stdc++.h> #define N 102 #define M 55 #define ll long long #define inf -1 #define setIO(s) freopen(s".in","r",stdin) , freopen("de.out","w",stdout) using namespace std…
题不难,但是一开始把读入看错了,调了半天qaq~ Code: #include <bits/stdc++.h> #define N 300 #define setIO(s) freopen(s".in","r",stdin) using namespace std; map<int,int>pp; int n,m,S,T,tot,dis[N][N][30],tmp[N][N],g[N][N]; int main() { int i,j,k,l…