随笔分类 - 题解
摘要:明显看到,题目时间限制 500ms500ms500ms,暴力肯定过不了。但是我们观察一下,需要 m<nm < nm<n 且 f(m)>f(n)f(m) > f(n)f(m)>f(n),我们先用暴力看一下规律: #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:看到大家都是暴力枚举,但是其实这道题有数学方法。 首先,很明显,第一次找到一个出现次数最大的字符后,每次都是加上这么多同样的字符,这样才能最快。 假设原串长度为 sss,原串中出现次数最大的字符出现过了 nnn 次,按照题意,最后需要长度 ≥l\ge l≥l。可以列出方程 s+∑i=0k2i×n≥l
阅读全文
摘要:模拟即可,但是一定要注意四舍五入的问题。第一次统计的平均值不用四舍五入,但是第二次去除掉不合法的后取的平均值要四舍五入,推荐用 round 函数,其他就是模拟即可。 #include <bits/stdc++.h> using namespace std; #define int long long
阅读全文
摘要:打表即可: #include <bits/stdc++.h> using namespace std; #define int long long int ans[25]; signed main() { ans[1] = 1; ans[2] = 0; ans[3] = 18; ans[4] = 0
阅读全文
摘要:每座城市 pi\large p_ipi 距离起点位置为 ∣pi−x∣ \lvert p_i-x \lvert∣pi−x∣,d dd 满足题意时当且仅当 d ∣ ∣pi−x∣(i=1,2,3,……,n) d \,\,|\,\, |p_i-x|(i=1,2,3,……,n)d∣∣pi−x∣(i=1,
阅读全文
摘要:既然标签是暴力,那就别加后面三个点啊!毕竟标签没有线段树。 传送门:P1186 不就是暴力吗?先跑一遍 Dijkstra,记录最短路的每一条边。然后删除每一条边再跑一次最短路并更新答案。但是这样会超时,最后三个点过不去。但是,不要忘了,我们有时在比赛时不会写 dp 的题目可以暴力 dfs,虽然会超时
阅读全文
摘要:传送门:SP11736 PTIME - Prime Time 额,这个题目跟我自己在某个团队出的题目类似,是我在某次数学课后想到的题目。我的想法是预处理所有 ≤n\le n≤n 的质数,然后每个质数处理一遍即可。 代码: #include <iostream> using namespace std
阅读全文
摘要:传送门:SP1163 JAVAC - Java vs C ++ 很明显一字符串模拟题,但是要考虑几个问题,这是翻译没有写的,首先如果 _ 后面还是 _,要输出 Error!;第二,如果字符串末尾或第一个是 _,也要输出 Error!;最后,如果字符串第一个是大写,也要输出 Error!。
阅读全文
摘要:提供三种做法: 1、Floyd 由于 n≤200n \le 200n≤200,而弗洛伊德的复杂度是 O(n3)O(n^3)O(n3),这道题需要全源最短路,而弗洛伊德是最好写的,也是最能令人理解的。还不会弗洛伊德的看这里。 代码:这里。 2、关于SPFA,它复活了! 众所周知,一遍全源最短路其实就相
阅读全文
摘要:本题不难,用 map 模拟即可。注意要倒序模拟,代码: #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; map<string, bool> mp; string s[N]; int main() { int n
阅读全文
摘要:动态规划,与这题基本相同,只不过有多组测试。压行即可: #include<bits/stdc++.h> using namespace std; #define R(a,b) for(a=1;a<=b;a++) const int N=1e3+5;int a[N][N],i,j,n,T,g;main
阅读全文
摘要:话说为啥你们都用快读快写,我用 cout 和 cin 也过了?(其实我是懒)。 很简单的模拟,每次交换时判断当前位置是否在交换的位置 x,yx,yx,y 中,在的话就交换,不在啥都不用做,中途如果进坑就直接退出。 代码: #include <iostream> #include <algorithm
阅读全文
摘要:一道贪心题目,设定 mpij{mp_i}_ jmpij 表示第 iii 道题目选 jjj 的人数,jjj 为字符类型,枚举每一个 mpij(1≤i≤m, j=A,B,C,D,E){mp_i}_ j(1 \le i \le m, \,\,j = A,B,C,D,E)mpij(1≤i≤m,j=A
阅读全文
摘要:水题,众所周知,两点之间直线距离: (x2−x1)2+(y2−y1)2\Large \sqrt{(x2 - x1)^2+(y2-y1)^2}(x2−x1)2+(y2−y1)2。 然后就能过了: #include <iostream> #include <iomanip> #include <alg
阅读全文
摘要:传送门:P7158 本题考虑动态规划,很明显我们需要一个 O(n)O(n)O(n) 左右的动态规划。 首先我们可以对数进行分析,假设有 abcd‾\overline{abcd}abcd,那么对于第 555 位,有 999 种方法,就是 000 到 999 中少去掉一个 kkk,假设 abcd‾\ov
阅读全文
摘要:传送门:P7381 [COCI2018-2019#6] Sličice 其实是一道类似多重背包的题目,定义 dpij{dp_i}_ jdpij 表示代表前 iii 个球队共收集 jjj 张时最大分数。可以求出状态转移方程 dpij=max{dpij,dpi−1j−g+bpi+g}{dp_i}_
阅读全文
摘要:传送门:AT685 準急 动态规划,fi0{f_i}_0fi0 表示第 iii 个点不停靠方案数,fi1{f_i}_1fi1 表示第 iii 个点停靠方案数。 代码: #include <iostream> using namespace std; #define int long long
阅读全文
摘要:传送门:P2719 搞笑世界杯 这道题赤裸裸的动态规划,我们设 dpij{dp_i}_jdpij 表示 i 张 A 类和 j 张 B 类的可能性。可以用 dpnn{dp_n}_ndpnn 表示答案。初始值:dpi0=dp0i=1(i=2,3,4,5,……,n){dp_i}_0 = {dp_0
阅读全文
摘要:题目传送门:CF295B 这道题是练习 floydfloydfloyd 的好题。 首先我们来思考一下,删除 nnn 次点,每次删点求一次最短路,用 floydfloydfloyd 做则是 O(n3×n)\text O(n^3 \times n)O(n3×n) 也就是 O(n4)\text O(n^4
阅读全文
摘要:传送门:CF1066C Books Queries 这个题目是蓝的? 首先这个题目暴力模拟肯定不行,我们考虑一个数组 aia_iai 代表值为 iii 的元素的位置在哪里,然后有两个指针 lll,rrr 表示当前左端点和右端点的值。 考虑每一个操作: L idL\,\, idLid:在现在序列的左
阅读全文

浙公网安备 33010602011771号