- 博客(40)
- 收藏
- 关注
原创 PTA刷题日记02
1020 Tree Traversals (25 分)给定二叉树中序和后序写出层序遍历结果对于二叉树遍历,中序,前序或者中序,后序或者中序,层序可以构建一个独一无二的二叉树,其他情况不行本题代码:#include<bits/stdc++.h> #include<iostream>#include<vector>#include<algorithm>#include<queue>using namespace std;typede
2021-10-11 22:29:02
205
原创 PTA刷题日记03
1022 Digital Library (30 分)map处理题,注意点一是读取方式的处理是getline,只有这样才能读到空格,对字符串的读取方式要熟;注意点二是无论何种查询方式都是只需要输出id号,那么只需要将书名,作者等信息和id号做一个映射即可啦#include<bits/stdc++.h> using namespace std;map<string, set<string> >mp1, mp2, mp3, mp4, mp5;void print(
2021-10-11 22:28:53
222
原创 PTA刷题日记14
1140 Look-and-say Sequence (20 分)说实话,我觉得这个题目解释着实说的不清不楚(我觉得很多题都说的不清不楚,这个特别)就是下一个序列是对前一个序列中每一个连续的数字a连续了b次就写作ab,1次也算,字符串处理题搞清楚题意以后可以看到n很小,所以直接暴力即可#include<bits/stdc++.h>using namespace std;int main() { int n; string a, b; cin >> a >&g
2021-10-11 22:28:44
252
原创 PTA刷题日记04
1035 Password (20 分)这辈子没这么无语过的一道题,我一直错一个点,看了半天才发现还有单复数,真的你搁这搁这呢#include<bits/stdc++.h>using namespace std;vector<int> ans;string id[1005], pwd[1005];int main() { int n; cin >> n; for(int i = 0; i < n; i++) { bool f = 0; c
2021-10-11 22:28:05
273
原创 PTA刷题日记16
1153 Decode Registration Card of PAT (25 分)注意结果集是空的就要输出NA,所以三种查询都有可能会出现NA强烈注意某些集合,例如ans使用前一定要重新声明,否则会有一个超时,一个错误简洁一点的代码#include<bits/stdc++.h>using namespace std;struct node{ string id; int score; friend bool operator<(node a, node b) {
2021-10-11 22:27:57
236
原创 PTA刷题日记11
1103 Integer Factorization (30 分)带有多重剪枝的dfs,这些剪枝要记熟,有点类似切蛋糕的题,我觉得从大到小找应该比较快(其实题目也提示了应该找从大到小的序列比较好)剪枝情况元素不足k个但是p次方和已经比n要大了,直接返回后面的k-num个元素(num为当前已有的元素个数)全部取最大值仍然比n小,直接结束提前算好结果序列最大值可能的范围#include<bits/stdc++.h>using namespace std;vector<int
2021-10-11 22:27:32
354
原创 PTA刷题日记06
1055 The World’s Richest (25 分)这题真的很无聊,就一个排序罢了,简单提一下,结构体数组排序会超时,但是vector就不会了,还有一个限制年龄处理的方法,第1组数据不会超时,第2组数据超时,真的奇怪。#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 5;struct node{ int age, w; string name; friend bool operator <
2021-10-11 22:27:03
167
原创 PTA刷题日记07
1062 Talent and Virtue (25 分)没啥难点的排序,理解提议即可,分成四组,两歌分数都没过最低线的不计入排序#include<bits/stdc++.h>using namespace std;//const int N = 1e5 + 5;struct node{ int id, vir, tal, total; friend bool operator<(node a, node b) { if(a.total == b.total) {
2021-10-11 22:26:52
226
原创 PTA刷题日记13
1121 Damn Single (25 分)毫无优化的处理方式,依旧没超时。。。#include<bits/stdc++.h>using namespace std;vector<pair<int, int> > pa;set<int> ans;bool f[100005];int main() { int n, m; scanf("%d",&n); for(int i = 0; i < n; i++) { int a,
2021-08-29 23:52:10
232
原创 PTA刷题日记15
1144 The Missing Number (20 分)用一个map或者unordered_map即可,要注意可能这n个数正好从1排到n,所以遍历范围要扩大到n+1,不扩大会出错的有2,3,5三个测试点。#include<bits/stdc++.h>using namespace std;unordered_map<int, int> mp;int main() { int n, a, cnt = 0, mi = n+1; scanf("%d",&n);
2021-08-29 22:15:25
208
原创 PTA刷题日记10
1092 To Buy or Not to Buy (20 分)记录第二个串中的字母是否都在第一个串中出现(数量需考虑)#include<bits/stdc++.h>using namespace std;int cnt[300];int main() { string a, b; cin >> a >> b; for(int i = 0; i < a.length(); i++) { cnt[a[i]]++; } int l = b.le
2021-08-29 22:15:15
401
原创 PTA刷题日记09
1082 Read Number in Chinese (25 分)字符串处理,要注意去除前置零和负号(虽然其实我没试不去除前置零会不会出错),但是去除前置零的过程中也可以顺便处理类似0000这样的字符串注意点:1.在万和亿单位间如果全是0,单位万就不用写了2.处理单位的方式0和其他数字要区分开,其判断数字非0再加入单位3.处理万和亿要单独处理4.连续的0只要放入第一个0,个位的0单独处理一些案例1010010 yi Bai ling yi Wan ling yi Shi100001
2021-08-29 22:14:54
248
原创 PTA刷题日记08
1075 PAT Judge (25 分)这题理解并不难,但是是一道很烦人的排序题,有很多需要注意的地方,稍有不慎就是错1.提交0分和提交-1不一样2.如果这个人被计入了ranklist那么提交-1显示就是0,只有没提交过的才是-3.拿了满分的题不要重复计算,否则排序出错4.如果你像我一样把初始设为-2,提交没成功设为-1,其他直接表示,注意计算total的时候如果去减-1或者-2都是错误的,必须减0垃圾代码如下#include<bits/stdc++.h>using names
2021-08-29 22:14:34
277
原创 PTA刷题日记05
1047 Student List for Course (25 分)没啥难的,就是一开始用map<int, set< string > >就超时了,如果set超时试试vector一般就行了,即vector< string > vec[N],而且string输入输出必须还成scanf,printf,不然也会超时。(一个很奇怪的点,一开始我用了一个map来进行映射,虽然后来发现完全是吃饱了撑的没事干,但是不知道为啥错了)#include<bits/stdc++.
2021-08-29 22:13:48
124
原创 PTA刷题日记01
1001 A+B Format (20 分)字符串处理,把整数转回字符串有简便方法需要记录,然后处理符号和逗号#include<bits/stdc++.h> using namespace std;void s2i(string s, int &n) { stringstream ss; ss<<s; ss>>n;}void i2s(string &s, int n) { stringstream ss; ss<<n;
2021-08-27 22:02:34
223
原创 Codeforces Round #696 (Div. 2)
Codeforces Round #696 (Div. 2)A. Puzzle From the Future题解题意为a和b相加得c,c消除所有相邻相同的数字即为d,给定b,求d最大的时候a的值,即让a和b每一位相加都和相邻位不同即可,从第0位递推到第n-1位即可。代码#include<bits/stdc++.h>using namespace std;int main() { int t, n, k; string a,b; cin >> t; while
2021-02-05 12:47:29
122
原创 hdu2083
杭电2083简易版之最短距离分析本题的意思就是你要在这一串坐标数组a[n]中找到一个点,从这个点到其他位置的绝对值之和最小,所以可以就是先将这一串数字进行排序,然后找到最中间的值a[n/2]作为出发地,即可得解。(对于n是奇数还是偶数,都是一样的。)代码#include<iostream>#include<math.h>using namespace std...
2020-11-14 14:02:52
205
原创 杭电2095
杭电2095find your present(2)分析题目大意为在一组数字中找出唯一一个出现奇数词的数字,并且输出。(题目输入可以满足)万事皆可暴力的我第一个想的就是暴力求解,但是很不幸的超时了,后来借鉴了大佬算法发现是异或运算,所以下面着重介绍关于异或运算我自己的一些理解。暴力方法(超时)#include<iostream>using namespace std;t...
2020-11-14 14:02:27
2048
5
原创 hdu2085
HDU2085核反应堆分析本题就是的意思就是把高能质点和低能质点分别用两个数组是 x[n] , y[n] 存储,然后输出结果,由题意可推出x[n+1] =3* x[n]+2* y[n] , y[n+1] = x[n] + y[n],然后就直接敲代码啦。代码#include<iostream>using namespace std;int main(){ long lo...
2020-11-14 14:02:21
205
原创 杭电1000-1001
1000 A + B Problem原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1000#include<iostream>using namespace std;int main(){ int a,b,sum; while(~scanf("%d%d",&a,&b)){ cout<<a+b...
2020-11-14 14:02:14
202
原创 杭电1089-1096A+B for Input-Output Practice
这八道题非常类似,代码也基本一致,只有一些地方需要注意一下1089 A+B for Input-Output Practice (I)原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1089#include<iostream>using namespace std;int main(){ int a,b,sum; while...
2020-11-14 14:02:01
308
原创 杭电1003
Max Sum原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003分析题目要求求出一段数列中和最大的一段,并输出最大和与开始,结束的位置
2020-11-14 14:01:55
305
1
原创 杭电1004
Let the Balloon Rise原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1004题目要求输入一个n,后面有n行,每一行都是一种气球的颜色,找出出现次数最多的颜色并输出。以n=0结束。分析...
2020-11-14 14:01:49
150
原创 杭电1005
Number Sequence原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005题目要求给一个数列满足 f ( n ) = ( a * f (n - 1 ) + b * f ( n - 2 ) ) mod 7 ,且f (1 ) =1,给定a,b,n,输出f(n)。分析首先确定...
2020-11-14 14:01:42
170
原创 vj #10期末考试
记录1.鸡兔同笼2.数字方格3.方程求解4.电池的寿命5.Charm Bracelet6.城堡问题7.取石子游戏8.Prime Ring Problem用goodnotes手写总结的,字很丑,就是为了以后想复习而保存的。
2020-11-14 14:01:34
209
原创 暑假选拔赛
以难度顺序排列摸鱼王的2468复读机分析有规律的,除去第一位2的0次方个位数为1,其余以2 , 4,8 , 6为循环代码#include<iostream>using namespace std;int main() { long long n; cin>>n; int ans; if(n==0) ans = 1; else { switch(n%4) { case 0: ans = 6; break; case 1: ans =
2020-11-14 14:01:28
195
原创 数据结构--线段树
线段树一.概念(构建)线段树是一种基于分治思想的完全二叉树,用于维护一段数据或数组。对于未安排数据的节点都选择默认为0,且每一个节点存储的值都是左右孩子进行一些操作的结果(叶节点除外)。1.代码实现其实可以直接以数组实现,但为了实现再存储原数组左右区间的值,就使用结构体实现线段树#include<iostream>using namespace std;const int N = 1e4 +5;int arr[N];struct segmentTree{ int l,
2020-11-14 14:01:13
1756
5
原创 杭电多校——第二场(题解)
太难的不会写,因为真的不会。。。1010 Lead of Wisdom现在在题目单中已经可以找到6772Lead of Wisdom题目大意有t个测试案例每个案例首先会有n,k,n代表接下来的n行会有n把武器,每个武器是不同的种类,并且均拥有a,b,c,d四种属性,k代表最多可以出现的武器种类最多有k种。每种武器最多只能拿一把,也就是说当每一种武器都有的时候最多可以拿k把武器,如果有的武器种类没有就不能拿这种,所以武器数一定 <= k需要求的值为分析这题解法很暴力,就是把每一种情况的
2020-11-14 14:01:07
4107
2
原创 牛客多校——第六场
B-Binary Vector题意及理解根据公式求解,还是一道逆元的问题,我也没看懂题目,直接跟着案例推的公式竟然猜对了,但是脑子比较笨不会优化,把分母和分子分开计算了,而且还每一次算都调用快速幂和逆元的函数,常数N=2E7,不可能不超时。吃一堑长一智吧,以后对连乘和逆元的使用应该更敏感代码(AC)#include<bits/stdc++.h> #include<stdio.h>#include<cmath>using namespace std;con
2020-11-14 14:01:02
183
原创 牛客多校第七场
B-Mask Allocation题意及分析分析#include<bits/stdc++.h> using namespace std;vector<int> q;void dfs(int n, int m) { if(m == 0) return; for(int i = 0; i < n/m*m; i ++) { q.push_back(m); } dfs(max(n%m, m), min(n%m, m));} int main() { io
2020-11-14 14:00:55
688
原创 牛客多校第八场
K-Kabaleo Lite题意及思路插一句,函数返回值一定不要写错,否则会段错误,int编译器会默认返回0,但是这些检测数据的不会。。。代码(wrong,只能过75%数据,有空再挣扎一下。。。)#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 5;const long long MOD = 1e14;long long a[N], p[N], b[N], num[N];int solve(int
2020-11-14 14:00:38
213
原创 杭电多校第6场
文章目录6835-Divisibility题意及分析代码(AC)6827-Road To The 3rd Building题意及分析代码(AC)6828-Little Rabbit's Equation题意及分析代码(AC)6835-Divisibility题目链接题意及分析题目的要求就是给定两个数b,x,b代表几进制,对于任意一个数y,用b进制表示,y的每一位数字相加直到小于b即为f(y)的值,要求y 和 f(y)对于 % x = 0要么都成立要么都不成立。代码(AC)#include<
2020-11-14 14:00:30
428
原创 杭电多校第十场
6879-Mine Sweeper题目链接题意与分析就是类似扫雷的一个游戏,一个大的矩形中每个方格有雷的位置用‘X’标记,没雷的位置用’.'标记,同时没雷的位置可以代表一个数字(0-8),数字大小满足扫雷的规则要求给定一个数字n,为每个方格中数字的和,如果能有一个满足要求的矩形图案则输出行列数和矩形图案,否则输出-1。要求行列数都小于等于25。代码(AC)#include<bits/stdc++.h>using namespace std;const int N = 5005;
2020-11-14 14:00:11
2076
2
原创 牛客多校第五场
D-Drop Voicing题意及分析代码(AC)#include<bits/stdc++.h>using namespace std;const int N = 505;int a[2*N],f[2*N];inline int inc_sub(int l, int r) { fill(f+l, f+r, 1); for(int i = l; i < r; i++) { for(int j = l; j < i; j++) { if(a[j] <
2020-11-14 14:00:05
1973
5
原创 POJ1003--Hangover
HangoverTime Limit: 1000MS Memory Limit: 10000KDescriptionHow far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We’re assuming that the cards must be perpendicular to the
2020-11-14 13:59:55
285
原创 杭电1002
A + B Problem II(大数加法)原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002分析题目的要求是两个非常大的数相加,最大可以达到1000位,我一开始没有理解题目的意思,直接把a,b定义成long long 类型,直接WA,然后看了别人代码才领悟的,应该用字符串存储,然后每一位依次相加,大于10则进位,然后相加时最重要的问题就...
2020-11-14 13:59:30
401
原创 杭电2089-不要62
原题链接分析就是一个区间内的数,有一定要求,去掉包含4和连续的62的数这个区间的数有多少个,按照正常方法应该是标准数位dp,另附一个投机取巧算法数位dp方法可看做数位dp模板//数位dp #include<bits/stdc++.h>using namespace std;#define ll long long#define endl "\n"const int maxn = 1e6 + 5;int a[20];//存下区间端点的每一位int dp[10][2] ;
2020-11-14 13:59:21
241
原创 POJ1664--放苹果
放苹果Time Limit: 1000MS Memory Limit: 10000KDescription把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。Output对输入的每组数据M和N,用一行输出相应的K。Sample Input17 3Samp
2020-06-30 21:37:21
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人