2021寒假
记录2021年寒假的所有刷题
云算法
CS硕士在读
展开
-
快速求整个数组最大公约数
试题链接:2021年牛客寒假集训营第四场–J题如果我们要求一堆数的最大公约数,我们只要对每一个质数求出在这些数的最大次数中的最小值,最后把这些幂次累乘起来,就是这些数的最大公约数。#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N=1e4+5;const int mod=1e9+7;int x[N],p[N];int main(){ int原创 2021-02-20 15:50:14 · 2049 阅读 · 0 评论 -
D. Journey(1月29日晚div2 D题)
题目链接D. Journey有n+1个城市。n条有向边,连接 i -> i+1。然后现在商人以一个点为起点开始遍历。每移动一次,所有的边就会调转方向。问以所有i为起点。能访问到的城市的数量。分析:从一个点往左走的最远距离,是LR字母交替的数量,同理向右走的最远距离一样。我们可以开两个数组sum1,sum2,分别记录从当前点向左,向右最远能走多少,res数组记录每个点的最终答案用递推的方式可以求出sum1,sum2数组,再根据这两个数组更新res数组#include<bits/std原创 2021-02-01 10:45:57 · 162 阅读 · 0 评论 -
求二维子矩阵中最大的和
二维子矩阵中最大的和题目链接:Acwing 126.最大的和给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为1 * 1或更大的连续子阵列。矩形的总和是该矩形中所有元素的总和。在这个问题中,具有最大和的子矩形被称为最大子矩形。例如,下列数组:0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其最大子矩形为:9 2 -4 1 -1 8 它拥有最大和15。分析:对列求前缀和,枚举上下界,在上下界包围的区域中,按一维求连续子序列和的方法求原创 2021-01-31 22:47:14 · 482 阅读 · 1 评论 -
1月30日刷题总结(第八届“图灵杯”)
1月30日刷题总结(第八届“图灵杯”)T1:求数组中最长的能整除k的子数组用前缀和a[]预处理数组,则从第i位到第j位的子串和为a[j]-a[i-1],又(a-b)%k=a%k-b%k,所以a[j]-a[i-1]整除k等价于a[j]和a[i-1]对k取模的结果相等,然后只需要贪心的寻找距离最远的相同取模结果即可。#include<bits/stdc++.h>using namespace std;const int N=1e5+5;typedef long long ll;ll a原创 2021-01-30 20:38:21 · 215 阅读 · 1 评论 -
【Acwing.420】手写next_permutation函数,求一个整数序列的下一个全排列
题目链接:Acwing 420.火星人算法思路:从右往左扫描数组,找到第一个a[k-1]<a[k]的位置k,然后在k到n的范围内找到比a[k-1]大的最小的数,记为a[t],将a[k-1]和a[t]交换,最后将数组的k到n的一段逆序#include<bits/stdc++.h>using namespace std;int a[10005];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++原创 2021-01-29 19:55:12 · 200 阅读 · 0 评论 -
1月28日刷题总结
1月28日刷题总结https://codeforces.com/problemset/problem/1469/Bhttps://codeforces.com/problemset/problem/1455/Chttps://codeforces.com/problemset/problem/1454/Dhttps://codeforces.com/problemset/problem/1454/Chttps://codeforces.com/problemset/problem/1437/B原创 2021-01-28 22:16:45 · 113 阅读 · 0 评论 -
C. Nezzar and Symmetric Array(1月28日晚div2,一道1700分的题目)
题目链接:[C. Nezzar and Symmetric Array](C. Nezzar and Symmetric Array)#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;ll d[N];bool cmp(ll a,ll b){ return a>b;}int main(){ int t; cin>>t; while(t--){原创 2021-01-29 20:25:45 · 140 阅读 · 0 评论 -
1月27日刷题总结 (rating=1400,1500)
文章目录下午比赛题:T1:[937B.Vile Grasshoppers(素数判断)](https://codeforces.com/problemset/problem/937/B)T2:[930A.Peculiar apple-tree(树的宽度) ](https://vjudge.net/problem/CodeForces-930A)T3:[1385D.a-Good String(dfs)](https://codeforces.com/problemset/problem/1385/D)T4:[3原创 2021-01-27 22:08:21 · 351 阅读 · 0 评论 -
Java刷题应用实例总结
Java刷题应用实例总结:T1:ArrayListArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。例题:Acwing 791. 高精度加法import java.util.Scanner;import java.util.ArrayList;public class Acwing791 { static ArrayList<Integer> add(ArrayList<Integer> a,ArrayL原创 2021-01-02 23:21:40 · 173 阅读 · 0 评论