11 2020 档案
摘要:题意: 给出长度为 n 的数组 a 和 q 个操作。 询问区间 [l, r] 内的元素之和 将 [l, r] 内的元素变为原来的三次方 对于第一个操作输出一行一个整数。 题解: 打表发现循环节是48,可以维护48个线段树,记录偏移量。 1 #include <bits/stdc++.h> 2 usi
阅读全文
摘要:题意: 定义一条路径的权值为路径上所有边的编号直接相连所得到的十进制数字的大小求1到每个点的最短路mod 1e9+7n,m<=100000。 题解: 对于一个点来说,他肯定跑位数最少,其次就是字典序最小,可以把边权拆开,然后跑bfs就会满足位数最少,那么字典序最小,就在bfs的过程中满足,然后利用分
阅读全文
摘要:题目描述: 给出n个点,要求构造合法的完全图,已经给出了一些边。 边有爱边和恨边,其中任意三个点,连成的边合法的组合有爱爱爱,爱恨恨。 题解: 根据朋友的朋友是朋友,敌人的敌人是朋友这个道理,是构造合法二分图,二分图可以用染色法和并查集判。然后会有k个联通块,把联通快想成点以后,又需要成为二分图,每
阅读全文
摘要:题目描述 给定一些字符串,其中字母用数字表示,并且初始是小写的。你可以把一些小写字母改成大写,但同时你要把所有同种字母全部改成大写。问是否能经过一些操作使得最终的字符串序列满足按字典序升序排列。如果能,则需要输出方案。 题解 可以把每个字母看成点,有大写和小写俩种情况。若对于俩个相邻的字符串来说,字
阅读全文
摘要:题目描述 有n个人分为好人和坏人,说了m句话。好人不会说假话,坏人至多说一句谎话。求出一组解,满足要求。 题解 利用2-SAT拆点,一个人拆成两个点,表示他是好人和坏人。然而这样的话边数是m^2的,所以用前/后缀和优化构图即可。 1 #include <bits/stdc++.h> 2 using
阅读全文

浙公网安备 33010602011771号