摘要:
http://poj.org/problem?id=3026 题意:给你一个迷宫,里面有 ‘S’起点,‘A’标记,‘#’墙壁,‘ ’空地。求从S出发,经过所有A所需要的最短路。你有一个特殊能力,当走到S或A时可以分身出任意多个人一起走。计算路程时就是所有人的总路程之和。 题解:想一下,是裸的最短路套 阅读全文
摘要:
题意:求一个无向图的最小生成树,如果有多个最优解,输出"Not Unique!" 题解: 考虑kruskal碰到权值相同的边: 假设点3通过边(1,3)连入当前所维护的并查集s。 然后有一条边(下图蓝色的边)满足: 1.长度等于(1,3) 2.一端连到3,一端连入S。 那么该边可以替换掉(1,3)。 阅读全文
摘要:
题意:找串的最长回文字串(连续) 题解:manacher版题 一些理解:首位加上任意两个字符是为了判断边界。 本算法主要是为了 1.省去奇偶分类讨论。 2.防止形如aaaaaaa的串使得暴力算法蜕化为n^2; 阅读全文
摘要:
两个模板: kruskal prim 阅读全文
摘要:
题意:中文版https://vjudge.net/problem/UVA-400#author=Zsc1615925460 题解:首先读取字符,维护一个最长字符串长度M,再排序。 对于输出,写一个print(string s,int len,char c) 函数,用来输出s,不足len的用c补齐。 阅读全文
摘要:
http://bailian.openjudge.cn/practice/4152?lang=en_US 题解 :dp[i][j]代表前i个字符加j个加号可以得到的最小值,于是dp[i+k[j+1]可以由dp[i][j]得到。具体转移方程看代码。 然后数字是50位所以要用高精度类。自己写了一个 坑: 阅读全文
摘要:
http://bailian.openjudge.cn/practice/1088?lang=en_US 题解: 阅读全文
摘要:
题意:模拟栈,正常pop,push,多一个merge A B 形象地说就是就是将栈B堆到栈A上。 题解:直接用list 的pop_back,push_back,splice 模拟, 坑:用splice,第一次超时,正要大改 发现是cin超时。。。 阅读全文
摘要:
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5738 题意 给你一个map 每个格子里有一个红绿灯,用0,1表示状态。当所在格子为0时只能上下移动,为1时左右移动。人一秒动一次,并且每一秒必须移动,灯每秒改变依次 阅读全文
摘要:
存个代码 阅读全文