基础技巧
技巧
Are_you_ready
这个作者很懒,什么都没留下…
展开
-
高精度除法
题目:PTA#include<iostream>#include<bits/stdc++.h>using namespace std;const int N = 200010;const int INF = 0x3f3f3f3f;typedef long long ll;vector<int> div(vector<int>&A, int b, int &r){ vector<int>C; r = 0原创 2021-03-18 20:10:17 · 104 阅读 · 0 评论 -
全排列函数next_permutation()
全排列函数next_permutation(start,end),start和end是要求的序列的范围,左闭右开,这个函数是直接运行它的“下一个序列”(即字典序递增),所以最好用do–while来运行如:用while来运行,原本1,2,3这个序列没有输出,这个代码看着有输出1,2,3,是因为前面有个printf单独输出了。如果用do–while来运行:注意:使用这个函数,原数组内的东西不会更改注:其他一个博主讲解1 2...原创 2021-01-27 11:13:39 · 157 阅读 · 0 评论 -
Hankson的趣味题--acwing(快速求一个数的所有约数)
题目:https://www.acwing.com/problem/content/202/可能需要报名课程才能做。题意:给a,b,c,d四个数,范围是1–2e9,求x和a的最大公约数是b,x和c的最小公倍数是d,满足条件的x有多少个。首先输入一个n,代表n组数据,n的范围是1-2000题解:这个题其实就找d的所有约数,然后枚举每一个约数就行,int范围内数量最大的约数是1600,所以枚举不多,难的是求d的所有约数,因为有2000的输入,如果直接暴力求根下n的复杂度,如果给1s时间复杂度是可以过的,但题原创 2020-12-30 18:49:46 · 252 阅读 · 0 评论 -
越狱(俩个快速幂相减如果为负数就加上mod)
题目:https://www.acwing.com/problem/content/1292/监狱有连续编号为 11 到 nn 的 nn 个房间,每个房间关押一个犯人。有 mm 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。求有多少种状态可能发生越狱。输入格式:共一行,包含两个整数 mm 和 nn。输出格式:可能越狱的状态数,对 100003100003 取余。数据范围1≤m≤108 //10的8次方1≤n≤1012//10的12次方输入样例:原创 2020-12-28 21:45:11 · 187 阅读 · 0 评论 -
Gym-102878L(枚举时间点+二分查找+O(1)找从某个位置到最后的中最大的)
题意:要组装一台电脑,需要n个配件,每个配件有m 种,每种给出一个使用寿命和价格,只要有一个配件到寿命电脑就不能使用,求最大的组成电脑总花费/电脑寿命,多个最大情况下输出最小的费用。题目:https://vjudge.net/problem/Gym-102878L题解:给的寿命是有序的,那么找一个数组存下每种配件,从这种配件的第i个配件到最后一个配件里面价格最小的那个,然后枚举寿命,二分查找到第一个大于等于这个寿命的那个配件,提取出从这个配件往后里面的价格最小的价格(预处理后O1出答案),每次取最小的单原创 2020-12-26 19:14:05 · 172 阅读 · 0 评论 -
十日游戏(排序/优先队列)
题意:给你俩个数列,求出能够俩个数列中某俩数+和的最大的n个数,数列中的数可以用多次。题目:https://acm.sdut.edu.cn/onlinejudge3/contests/3481/problems/K题解:用优先队列实现一个大根堆,先让一个序列中的所用数分别和另一个数列中的最大的数相加,然后加入优先队列,再分别取出队列的头,然后让这个a序列中的这个数加上b数列中的下一个大的值,然后加入队列,总共循环输出n次#include <iostream>#include<cs翻译 2020-12-23 11:04:25 · 208 阅读 · 0 评论 -
D - Walker Gym - 102900D(二分(枚举 “相遇点”))
题目:https://vjudge.z180.cn/contest/413427#problem/D在一个长为n的线段,左端点为0,右端点为n有两个端点分别位于p1,p2,它们的速度分别为v1,v2问最少需要多少时间,可以使得p1,p2的路程覆盖整条线段思路:分类讨论:先令p1<p2①p1走完全程②p2走完全程③p1向右走完全部,p2向左走完全部④p1走完左边的全部,p2走完右边的全部,剩余中间的部分p1与p2共同走完,二分路程或时间即可#include<bits/stdc翻译 2020-12-19 21:22:41 · 237 阅读 · 1 评论 -
B. Find the Spruce(dfs+记忆化)
题目题意:*是一棵树以及类似图片那里的树有多少个从上往下搜索每一个点,看从这个点往下能够构成树的深度,加起来就是答案#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5;string s[600];int dp[600][600];//储存dfs的值int sum=0,n,m;int dfs(int x,int y){//dfs求树的深度 if(dp[x][y]) return dp[x][转载 2020-12-18 21:32:04 · 204 阅读 · 1 评论 -
Gym-102888C 数码管(快速幂( 次方很大是个字符串级别,要对次方分割 ))
题意:本题其实就是要求6的n/2次方,n如果是个奇数再乘以4,仔细分析分析就可以得出。题目#include <iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=998244353;char ch[1000000];ll flag;void chu() //模拟大数除法{ char c=ch[strlen(ch)原创 2020-12-18 20:15:19 · 103 阅读 · 1 评论 -
Problem J. 屠龙勇者 ErvinXie(队列移动----在某个数组上走最小步数拿到满足要求的东西)
题意:有k种金属,需要用s个金属构造一个阵法(金属可能重复),然后一条河,每一米都有一种且一个金属,问从任意一个点开始能否找到满足阵法要求的金属,如果能够满足,输出走的最少步数,否则输出DragonXie题目解决:其实就是从某个点出发,往后走,走最短步数,拿到满足题目要求的金属数量和种类(可能拿的多,如你需要1,2,3金属,河上面是1,2,4,3,你就需要走4步,因为从1开始走,想拿3必须走4;如果你需要1,2,3金属,河上是1,1,2,4,3那么你是从第二个1开始走。)拿一个队列放在这条河上移动原创 2020-12-14 21:41:09 · 90 阅读 · 0 评论 -
PTA---7-4 词频统计 (利用vector和pair 对map中内容进行排序
参考自这里#include <iostream>#include <string>#include <vector>#include<cstdio>#include <map>#include <algorithm>using namespace std;bool cmp(pair<string,int>a,pair<string,int>b) //排序{ if(a.second==b翻译 2020-11-26 13:37:42 · 657 阅读 · 0 评论