PAT
文章平均质量分 54
X丶
这个作者很懒,什么都没留下…
展开
-
离散化--个人总结
使用离散化的一般情况:1⃣️ 数据的值的范围太大,但数据的量并不多2⃣️ 值的大小不重要,重要的是值之间的大小关系离散化一般方法:1⃣️ 排序2⃣️ 去重3⃣️ 形成新的映射例子:https://www.cnblogs.com/farewell-farewell/p/5330429.html常用到的STL库函数:unique(start,end...原创 2019-11-16 20:48:15 · 168 阅读 · 0 评论 -
在线查询第K个元素
分块思想(参考算法笔记):假设数组大小为N,那么我们把数组分成 block_num = sqrt(N)个块【向上取整】,每个块的范围是block_size= sqrt(N)【向下取整】,用block[i]记录第 i 块的元素个数,然后再开一个数组 table[i] 记录数值为 i 的元素个数添加元素 x 的时候,计算元素对应的块号为idx =x / block_size ,然后令 block[idx]+=1 , table[x] +=1删除元素 x 的时候,计算元素对应的块号为...原创 2021-03-07 10:50:23 · 132 阅读 · 0 评论 -
Find More Coins(记录背包的选择)
1068 Find More Coins (30 point(s))Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special原创 2021-03-05 13:45:08 · 189 阅读 · 0 评论 -
最大子矩阵(降维处理)
题目描述已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。比如,如下4 * 4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8这个子矩阵的大小是15。输入输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵..原创 2021-03-04 15:32:22 · 214 阅读 · 1 评论 -
毕业BG(01背包问题)
题目描述每 年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”。参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个 bg定义一个“快乐度”。现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最 大的快乐度。例如有4场bg:第1场快乐度为5,持续1小时,发起人必须在1小时后离开;第2场快乐度为10,持续2小时,发起人必须在3小时后离开;第3场快乐度为6,持续1小时,发起人必须在2小时后离开;原创 2021-03-04 14:38:34 · 221 阅读 · 1 评论 -
放苹果(求组合数)
问题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:假如有3个盘子,那么 5,1,1 和 1,5,1 与 1,1,5 都是同一种分法。这种求放物品的组合数问题,可以通过这样的完备思路来构造递归公式:假设有n个盘子 ,那么1、至少有一个盘子不放苹果2、n个盘子都放苹果,这两种放法是完备的。所以求出两种放法的方案数,加起来就能得出结果接下来详细利用这个思路:假设 DP(M,N)记录M个苹果放在N个的盘子的总方案数苹果数M<盘子数N,那..原创 2021-03-04 14:28:00 · 547 阅读 · 0 评论 -
多阶段DP问题
多阶段DP问题的定义:一个问题可以分成多个阶段,每个阶段有多个状态,且每个阶段的状态只与上一阶段的状态有关。这类问题,题目一般会给出多个对象各自的属性和一个限制的条件,然后计算如何操作这些对象获得最优值我们可以用 dp[阶段][限制条件(状态)] 来记录某个阶段中某个状态的最优解然后找到dp[i][cur]与上一阶段的状态有什么联系,从有联系的状态中找出最优解例如01背包问题对象:物品;属性:重量、价值限制条件:背包容量vdp[i][v] 记录前i个物品(阶段i),剩下容原创 2021-03-01 15:01:00 · 229 阅读 · 0 评论 -
最长不下降子序列(推广问题)
最长不下降子序列问题的定义:在一个序列中,找到一个最长的子序列,其中这个序列是非递减的我们可以把这个非递减推广,其实非递减就是一种顺序,那么我们可以把定义推广到:给出一个顺序序列、目标序列中,在目标序列中找到一个最长的子序列,其中这个子序列是符合给出顺序的子序列解决这个推广的问题,我们可以把这个顺序序列的每一个元素映射到一个递增序列假设顺序序列为X、Y、Z,那么我们可以把它映射到 0、1、2(用Hash表实现)然后目标序列为 XYXXZXYZ,我们从上面的Hash表中找到它对应的序列为.原创 2021-03-01 11:24:11 · 149 阅读 · 0 评论 -
Jugs (BFS解决方法)
JugsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1449Accepted Submission(s): 480Problem DescriptionIn the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the ...原创 2021-02-19 10:25:16 · 329 阅读 · 0 评论 -
codeup:问题 D: 最短路径
题目描述有n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离和经过的城市名。输入输入包含多组测试数据。每组第一行输入四个数,分别为n,m,s,t。接下来m行,每行三个数,分别为两个城市名和距离。输出每组输出占两行。第一行输出起点到终点的最短距离。第二行输出最短路径上经过的城市名,如果有多条最短路径,输出字典序最小的那条。若不存在从起点到终点的路径,则输出“can't arrive”。样例输入3 3原创 2021-02-19 10:18:59 · 352 阅读 · 0 评论 -
PAT 1074 Reversing Linked List
1074Reversing Linked List(25point(s))Given a constantKand a singly linked listL, you are supposed to reverse the links of everyKelements onL. For example, givenLbeing 1→2→3→4→5→6, ifK=3, then you must output 3→2→1→6→5→4; ifK=4, you must outpu...原创 2021-01-28 21:23:46 · 89 阅读 · 0 评论 -
PAT 1056 Mice and Rice (25point(s))(队列的使用)
1056Mice and Rice(25point(s))Mice and Riceis the name of a programming contest in which each programmer must write a piece of code to control the movements of a mouse in a given map. The goal of each mouse is to eat as much rice as possible in order t...原创 2021-01-28 17:47:41 · 98 阅读 · 0 评论 -
C++字符串数组排序技巧
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<vector>#include<map>#include<unordered_map>#include<string>#include<unordered_set>#include<iterator>#include<sstream&g.原创 2021-01-25 11:11:07 · 5747 阅读 · 1 评论 -
把浮点型数值用科学计数法输出
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<string>using namespace std;struct SCINUM { // 科学计数法结构体 string valid_num; //有效位 int pow;//指数 SCINUM() { pow = 0; }};SCINUM str2Sci(string num,int .原创 2021-01-21 13:37:52 · 1770 阅读 · 0 评论 -
求n!中含有质因子p的个数
定理:中含有质因子p的个数为,其中int cal(int n, int p) { int ans = 0; while (n != 0) { ans += n / p; n /= p; //相当与分母多乘一个p } return ans;}原创 2021-01-19 13:58:13 · 903 阅读 · 0 评论 -
大整数运算(必记)
大整数运算结构体struct bign { int d[maxn];//d的低位就是数值N的低位 int len;//大整数长度 //int symbol; bign() { memset(d, 0, sizeof(d)); len = 0; //symbol = 1; }};字符串转化为大整数型bign str2bign(char str[]) { bign num; int len = strlen(str); if (str[0] == '-')num.s原创 2021-01-19 13:24:47 · 220 阅读 · 0 评论 -
因子(约数)的个数
假设N = p * q ,那么p与q都是N的约数显然有,在1,2,... k ()中,如果N%k==0 ,那么就能找到N的一个或者两个约数当时,找到N的两个约数,k与n/k当时,找到N的一个约数,k#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio>#include<algorithm>#include<string.h>#include<...原创 2021-01-18 22:09:24 · 114 阅读 · 0 评论 -
质因子分解
以下思路参考《算法笔记》质因子分解:把一个正整数n写成一个或多个质数相乘的形式例如 6=2✖️3 ,180=2✖️2✖️3✖️3✖️5先说如何判断一个数n,是否在[2,n) 中存在它的因子:假设这个n存在因子为k[2,n),那么nmod k=0假设这个n存在因子为 k [2,n) ,那么n\mod k=0假设这个n存在因子为k[2,n),那么nmodk=0由于n×nk=n,所以nmod nk=0,所以k与nk都是n的因子,且min(k,nk)<n由于 n\times\frac{n}{k}原创 2021-01-16 16:51:39 · 377 阅读 · 0 评论 -
PAT计算出2~N所有素数
#define maxn 405000int prime[maxn]; //保存素数的数组bool flag[maxn]; //记录是否为素数int cnt;void getPrime(int n) { memset(flag, 0, sizeof(bool)*maxn); cnt = 0; for (int num = 2; num <= n; num++){ if (flag[num] == false) { //如果num是素数 prime[++cnt] = num;/.原创 2021-01-15 19:53:06 · 109 阅读 · 0 评论 -
1049 Counting Ones
1049Counting Ones(30point(s))The task is simple: given any positive integerN, you are supposed to count the total number of 1's in the decimal form of the integers from 1 toN. For example, givenNbeing 12, there are five 1's in 1, 10, 11, and 12.I...原创 2021-01-13 20:19:31 · 96 阅读 · 0 评论 -
1003 我要通过! (20point(s))
1003我要通过!(20point(s))“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; 如果aPbTc是正确的,那么aPbATca也是正确的,其中a...原创 2021-01-13 14:24:24 · 217 阅读 · 0 评论