07 2021 档案

摘要:https://acm.hdu.edu.cn/showproblem.php?pid=3579 一些坑点。首先是如果说最后求得到的结果为0,那么在数学意义上这是正确的,0对于任何的确是最小的整数解,但实际意义正整数就并非如此了,如果为0,那么下一个最小解为最小公倍数。 一个技巧,先除再乘防止爆炸。 阅读全文
posted @ 2021-07-31 13:47 mofan552 阅读(34) 评论(0) 推荐(0) 编辑
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=1573 n组线性同余方程求解,最后求出多少解。而最终的解的周期为最小公倍数,范围内的,需要这样算。如果最小超过,那么直接是0,如果无解为0,如果最小为0,那么直接为k个lcm,否则要加上自身的1,因为要求为正整数 阅读全文
posted @ 2021-07-31 13:16 mofan552 阅读(36) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2115 k位储存特点,一旦溢出,那么就到第二个循环开始返回0重新计数。问题实际转化成a+cx=b(mod 2^k)跑多少圈能够重合。因为是k位无符号,所以直接就是2^k次方,0~2^k-1。刚好覆盖模的范围 1 #include<iostream 阅读全文
posted @ 2021-07-31 12:17 mofan552 阅读(19) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2891 实际上就是一个一元线性同余方程组。按照合并的方式来解即可。 有一个注意点,调用函数是会慢的。 #include<iostream> #include<cstdio> #include<algorithm> using namespace 阅读全文
posted @ 2021-07-31 11:45 mofan552 阅读(25) 评论(0) 推荐(0) 编辑
摘要:#include<iostream> #include<cstdio> using namespace std; typedef long long ll; const int maxn = 63; ll multi(ll a,ll b,ll mod_val)//实现a * b % mod_val的 阅读全文
posted @ 2021-07-30 23:15 mofan552 阅读(28) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3090 对于此题,观测点的数目,从小规模开始观察,可以得到每一个点,由一根无限长的绳子,绕着原点旋转,得到的第一个点。换另外一个思路,每一个观察到的点,都是子矩阵的一个边界点,也就是说枚举每一个子矩阵的点即可,而对于重合的点,则是已经出现的点,也 阅读全文
posted @ 2021-07-30 22:24 mofan552 阅读(22) 评论(0) 推荐(0) 编辑
摘要:https://oj.shiyancang.cn/Problem/798.html #include<bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 21252; ll a[4],m[4]; ll M 阅读全文
posted @ 2021-07-29 01:40 mofan552 阅读(51) 评论(0) 推荐(0) 编辑
摘要:http://ybt.ssoier.cn:8088/problem_show.php?pid=1633 A^B 快速幂求结果,所有约数和,可以通过组合来进行得到。 技巧,通过递归得到1~n次的和.sum(n/2)*(1+?)这半,通过加自身和,调整后的自身以及补位,在log的时间内算出所有结果. 分 阅读全文
posted @ 2021-07-29 00:23 mofan552 阅读(84) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.com.cn/problem/P1290 博弈论游戏,用到mod。 辗转相除法的过程,会构成n种状态。 到达最后一个状态就赢了。 对于一次过程如果div>1那么只要把该状态下的最后一个留给对方,自己始终是占据状态的初始位,那么一定是赢的。 第二种情况,如果div= 阅读全文
posted @ 2021-07-28 22:39 mofan552 阅读(24) 评论(0) 推荐(0) 编辑
摘要:https://oj.shiyancang.cn/Problem/781.html 素数距离,数据范围21亿,如果用素数筛存,并且进行做的话,按照x/lnx计算会是一个非常恐怖的复杂度。确定要做什么,首先一定要筛选素数,然后一定要进行素数的比较。问题就在筛选素数这里,可以看到区间范围很小,可以从这里 阅读全文
posted @ 2021-07-27 12:14 mofan552 阅读(84) 评论(0) 推荐(0) 编辑
摘要:https://oj.shiyancang.cn/Problem/304.html 首先数据范围不可能算出来的,那么就要看数的性质。 0是怎么来的首先我们知道,有一个0,就必然会有一个5和2. n!在这里面,只要是偶数必然会有2,则2的次数一定大于5的次数。 则只需要统计5的次数即可。这就是n!里面 阅读全文
posted @ 2021-07-26 22:42 mofan552 阅读(56) 评论(0) 推荐(0) 编辑
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=2098 时间复杂度 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll N=2e4+520; bool st[N 阅读全文
posted @ 2021-07-26 20:47 mofan552 阅读(13) 评论(0) 推荐(0) 编辑
摘要:Problem - 1004 (hdu.edu.cn) 扩展欧几里得解决线性同余方程。先得到gcd的解,再恢复原解,因为知道通解的一般形式,所以通过模来得到最小正整数解。另一个可以通过相减,或者一样的操作。一个增加,另一个一定减少。 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2021-07-14 21:32 mofan552 阅读(42) 评论(0) 推荐(0) 编辑
摘要:Problem - 1003 (hdu.edu.cn) n次求逆元,线性求逆元 要用long long,不然很容易炸 每次叠加,不停的取模 必须互素,必须为质数。 不足的不会出现0,而后面的则满足取模的意义 #include<bits/stdc++.h> using namespace std; c 阅读全文
posted @ 2021-07-14 16:47 mofan552 阅读(50) 评论(0) 推荐(0) 编辑
摘要:同样求逆元的题目,费马的条件,首先要保证p为质数,然后保证a与p互素。 数据范围问题,要保证在数据范围内,所以要b先模上mod #include<bits/stdc++.h> using namespace std; const int mod=9973; int qmi(int a,int b) 阅读全文
posted @ 2021-07-14 00:19 mofan552 阅读(28) 评论(0) 推荐(0) 编辑
摘要:求逆元板子题,费马小定理求逆元,快速幂,维护前缀积。 #include<bits/stdc++.h> using namespace std; //bool isprime(int x) //{ // if(x==1) return false; // if(x==2) return true; / 阅读全文
posted @ 2021-07-14 00:11 mofan552 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目— 2的幂次方 (shiyancang.cn) 递归题 #include<bits/stdc++.h> using namespace std; int k; void f(int n,int step) { if(n==0) return; f(n/2,step+1); if(n%2==1) 阅读全文
posted @ 2021-07-13 23:40 mofan552 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题目—负二进制 (shiyancang.cn) 进制的实质在于对于进制数的选择,选择不满足的填入当前的位置,然后除掉,继续开始选择。但是对于本题,是负数,但是进制上的数字为正数,所以就要调整,借位,因为符号不同,所以借位就是增加,进位就是减去。还有循环进位 #include<bits/stdc++. 阅读全文
posted @ 2021-07-13 23:34 mofan552 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目—传纸条 (shiyancang.cn) 算法(线性DP) O(n3)O(n3)首先考虑路径有交集该如何处理。可以发现交集中的格子一定在每条路径的相同步数处。因此可以让两个人同时从起点出发,每次同时走一步,这样路径中相交的格子一定在同一步内。 状态表示:f[k, i, j] 表示两个人同时走了k 阅读全文
posted @ 2021-07-13 01:27 mofan552 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题目—递归函数 (shiyancang.cn) 记忆化dfs,注意dp的限制范围 #include<bits/stdc++.h> using namespace std; const int N=52; typedef long long ll; ll dp[N][N][N]; ll a,b,c; 阅读全文
posted @ 2021-07-13 01:19 mofan552 阅读(26) 评论(0) 推荐(0) 编辑
摘要:给定一个数组,将其所有子区间的和从小到大排序,求第k小的是多少。 输入第一行两个数n, k,表示数组的长度和k;第二行有n个数,第i个是a[i],表示给定的数组。 输出仅一个数,表示答案。 样例输入5 61 1 1 1 1 样例输出2 二分答案,逐一寻找即可,计算所有小于的,如果不行,那么就在另外一 阅读全文
posted @ 2021-07-13 01:16 mofan552 阅读(70) 评论(0) 推荐(0) 编辑
摘要:题目—猴子选大王 (shiyancang.cn) 一、出队顺序Description有M个人,其编号分别为1-M。这M个人按顺序排成一个圈。现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然后又从下一个人开始又从1开始依次报数,数到N的人又出列...如此循环,直到最后一个人出列为止。 In 阅读全文
posted @ 2021-07-13 01:11 mofan552 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题目—神奇的幻方 (shiyancang.cn) 模拟就对了 因为每一个状态由前一个状态决定,所以只需要记录即可 #include<bits/stdc++.h> using namespace std; const int N=52; int k[N][N],n,pre1,pre2; int mai 阅读全文
posted @ 2021-07-13 01:06 mofan552 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目—瑞士轮 (shiyancang.cn) 模拟题 #include<bits/stdc++.h> using namespace std; const int N=1e5+520; int n,r,q,res1=1,res2=1; struct grade { int total,num,abi 阅读全文
posted @ 2021-07-13 01:02 mofan552 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题目—螺旋矩阵 (shiyancang.cn) noip201403螺旋矩阵【普及组】数学算法 - 大本营 - 博客园 (cnblogs.com) 以下为搬运代码。一个为算圈数,另外一个是数学方法 思路如下: 1.输入n>>a>>b; 2.用一个循环缩小范围求出a,b所示的数所在的圈数q; 3.再一 阅读全文
posted @ 2021-07-13 00:55 mofan552 阅读(56) 评论(0) 推荐(0) 编辑
摘要:题目—乘二加一 (shiyancang.cn) 递归写法 #include <bits/stdc++.h> using namespace std; string f(int n) { if (n == 1) return "1"; return n & 1 ? "(" + f((n - 1) >> 阅读全文
posted @ 2021-07-13 00:45 mofan552 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题目—斜线输出(1) (shiyancang.cn) 在同一斜线上的满足方程。坐标关系计算即可。 #include<bits/stdc++.h> using namespace std; const int N=52; int n; int a[N][N]; int main() { scanf(" 阅读全文
posted @ 2021-07-13 00:38 mofan552 阅读(95) 评论(0) 推荐(0) 编辑
摘要:题目—摆动序列 (shiyancang.cn) 直接分成两部分,插入即可。只有一个地方不对,那就是符号。两个大的放一个小的,两个小的放一个大的。那么每次的大的放最大的,每次的小的放其次小的,用完就不用考虑了,直接考虑下一个即可,而对于后面的,前面的一个是满足最小的。 #include<bits/st 阅读全文
posted @ 2021-07-13 00:27 mofan552 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题目—图书管理员 (shiyancang.cn) 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。 如果一本书的图书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小LL刚刚当上图书馆的管理员, 阅读全文
posted @ 2021-07-13 00:18 mofan552 阅读(58) 评论(0) 推荐(0) 编辑
摘要:题目—超级百钱百鸡 (shiyancang.cn) 百钱百鸡的加强版 百钱百鸡的话,因为是有范围,所以挨个挨个尝试即可,确定两个,即可确定第三个。 超级百钱百鸡,通过题目的描述,最后可以得到一个二元的式子,然后就是求解。同样的枚举,对于每一个可能的系数 枚举,如果满足,那么即可成立。 #includ 阅读全文
posted @ 2021-07-13 00:11 mofan552 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目—三角形游戏 (shiyancang.cn) 对于任意的一个数字,把他拆分为n个数字,使得其逐层和为该数字. 首先n很小,所以很可能是搜索。DFS,n回选择。 #include<bits/stdc++.h> using namespace std; const int N=20; bool fl 阅读全文
posted @ 2021-07-13 00:02 mofan552 阅读(41) 评论(0) 推荐(0) 编辑