ACM算法学习
文章平均质量分 66
学习笔记整理
铁鸦
111
展开
-
Matrix HDU - 7113 “红旗杯”第十五届东北地区大学生程序设计竞赛
Matrix HDU - 7113题目链接公式推导:考虑i这个数对答案的贡献。首先,先在n2−in^2-in2−i中比i大的数当中选择n−1n-1n−1个数,和它放在同一行,就是Cn2−in−1C_{n^2-i}^{n-1}Cn2−in−1。这个数可以的行有个n行可以选择。然后这个数所在的这一行全排列就是n!n!n!,最后剩下的所有数全排列就是(n2−n)!(n^2-n)!(n2−n)!所以最后答案等于:∑i=1i=nCn2−in−1∗n∗n!∗(n2−n)!\sum_{i=1}^{i=n}原创 2021-09-05 15:22:18 · 443 阅读 · 0 评论 -
Maximum width CodeForces - 1492C 总结
文章目录Maximum width CodeForces - 1492C题目大意:分析AC代码:Maximum width CodeForces - 1492C题目链接题目大意: 就是要求一个递增的序列,满足S[p[i]]=t[i]。然后使得p[i]-p[i-1]最大。分析 可以发现对于t字符串中的每个字符,在算与前一个字符所映射的值的差时,映射到后面要越靠后的位置越好。在算与后一个字符所映射的值得差时,映射到后面要越靠前的位置越好。 所以我们可以尝试去算出t中每个字符合法的最小的位置与原创 2021-03-07 11:59:43 · 295 阅读 · 3 评论 -
AcWing156 矩阵 求大矩阵中小矩阵存在性问题 二维哈希 详解、推导
AcWing156 矩阵 二维哈希 详解题目链接讲解 实际上就是把一维Hash推广到二维矩阵上的Hash。 我们知道一维的Hash过程即把一段字符串Hash为一个p进制的数。比如字符串101110111011,那么Hash出来就是1∗p3+0∗p2+1∗p1+1∗p01*p^3+0*p^2+1*p^1+1*p^01∗p3+0∗p2+1∗p1+1∗p0,用s=s∗p+s[i]s=s*p+s[i]s=s∗p+s[i],从小到大乘就可以了。 讨论完了一维的情况,二维矩阵的Hash,比如一个 3*2原创 2021-01-06 22:22:59 · 333 阅读 · 1 评论 -
Codeforces Round #694 (Div. 2) A,B,C 总结&题解
A题 Strange Partition 仔细思考可以发现其实最大的策略就是每个都去向上整除,最小的策略就是先求和再向上整除,因为你一旦能够凑成倍数,那么对你来说是亏的。代码#include <ctime>#include <cstdlib>#include<iostream>#include<algorithm>#include<math.h>#include<cstdio>#include<string&g原创 2021-01-06 11:14:40 · 340 阅读 · 2 评论 -
2020牛客多校9 Groundhog Looking Dowdy (尺取)
Groundhog Looking Dowdy题目链接分析: 要选出来dowdiness的极值最小,可以先对所有的衣服的dowdiness值从小到大排序,然后用m作为标准尺取,每次保证尺取到的m件衣服保证来自不同的天里,用一个vis数组标记这天是不是已经被选过了。在尺取右移过程中,如果某天被选过了,那么这天就不选(因为数据从小到大排序,如果把这天替换到更小的那天,那么极值不可能变小)。具体实现见下面代码。ac代码#include <ctime>#include <cstdli原创 2020-08-10 23:13:25 · 113 阅读 · 0 评论 -
Lost Cows POJ - 2182 树状数组讲解&学习(附模板例题讲解)
题目链接原创 2020-05-07 22:55:08 · 343 阅读 · 0 评论 -
c++ unique 函数的用法 (模板)
stl c++ unique 函数实例:头文件:#include <algorithm> 该函数是把相邻重复的元素中的一个扔到后面。返回值为“去重之后”最后一个不重复元素的下一个位置的迭代器。#include <iostream>#include <algorithm>using namespace std;int main(){ in...原创 2020-05-04 18:44:34 · 575 阅读 · 0 评论