- 博客(40)
- 资源 (2)
- 收藏
- 关注
原创 Acwing 每日一题 3715.最少交换次数
学习了y神的讲解,但是对树状数组还不理解,写下博客为了方便后面学习,下面代码为Acwing题解里Jackle的代码。归并排序为先查找l到mid的逆序对并排序,再查找mid+1到r的逆序对排序,算法内是双指针进行操作。二、树状数组O(n*logn)三、归并排序O(n*logn)一、暴力枚举O(n*n)...
2022-07-15 16:02:09
216
原创 y神动态规划第四课背包问题
一、多重背包问题#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=20010;int n,m;int f[N],g[N],q[N];int main(){ cin>>n>>m; for(int i=0;i<n;i++){ int v,w,s; cin>>v>>w&
2021-09-01 10:48:30
164
原创 y神动态规划第二课、第三课代码
一、最长上升子序列问题#include<iostream>#include<algorithm>using namespace std;const int N=1010;int n;int a[N],f[N];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++){ f[i]=1; for(i
2021-08-27 22:37:41
115
原创 y神动态规划第一课
一、摘花生问题#include<iostream>#include<algorithm>using namespace std;const int N = 110;int n,m;int w[N][N];int f[N][N];int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) sca
2021-08-23 10:49:19
126
原创 逆序对的数量(归并排序模板y神)
#include<iostream>using namespace std;typedef long long LL;const int N = 100010;int n;int q[N],tmp[N];LL merge_sort(int l, int r){ if(l>=r)return 0; int mid = (l+r)/2;//l+r >> 1;等价 LL res = merge_sort(l,mid)+merge_sort(mid+1,r); /
2021-05-30 20:51:10
88
原创 在n个数中找第k小的数(快选算法模板y神学习)
#include<iostream>using namespace std;const int N = 100010;int n,k;int q[N];int quick_sort(int l,int r,int k){ if(l == r) return q[l]; int x = q[l],i=l-1,j=r+1; while(i<j) { while(q[++i]<x); while(q[--j]>x); if(i<j)swa
2021-05-30 17:39:57
349
原创 PAT (Basic Level) Practice (中文)1022 D进制的A+B (20 分)
本题就是考怎么换算10进制到d进制,就是对和不断相除d取余数,然后反着输出就可以,本题得考虑到a和b都是0的情况,
2021-04-19 20:41:45
74
原创 PAT (Basic Level) Practice (中文)1020 月饼 (25 分)
做的时候想到了是贪心的思想,但是对于排序以及如何满足条件退出还是不熟练,代码是理解思想照着别人打的,希望下一次可以自己做出来,下面是完整的代码#include<iostream>#include<algorithm>using namespace std;struct mooncake { float ku; float money; float average;}cake[1000];int cmp(struct mooncake a, struct moonc.
2021-04-19 20:11:55
90
原创 PAT (Basic Level) Practice (中文)1019 数字黑洞 (20 分)
本题是对四个数字进行数组转整型,整型转数组是个难点,还有排序(本题用的冒泡)也是个难点,下面先展示一下冒泡//升序排列void dasort(int a[]) { int i, j, temp; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3 - i; j++) { if (a[j] < a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] ..
2021-04-17 21:30:39
81
原创 PAT (Basic Level) Practice (中文)1018 锤子剪刀布 (20 分)
本题最开始是对怎么存储数据进行疑惑,在搜别人代码后,对进行设置a,b数组进行存储(现在想想发现不用数组也可以,单纯的用a,b)。然后记录甲赢输平的次数即可,然后每一次都记录获胜的是那个手势,最后按照输出规则进行输出即可。别人的思路:完整的代码如下:#include<iostream>#include<map>using namespace std;int main() { int n, win = 0, lose = 0, ping = 0; int c1 = ..
2021-04-16 23:55:36
92
原创 PAT (Basic Level) Practice (中文)1015 德才论 (25 分)
本题是进行分类排序,但是开始确实是不会,所以是参考别人的代码抄下来的。本题重点是对每组数据进行分类,将说明好的进行分类,然后未说明的,其他的情况直接else;还有一个难点是分类排序,要自己写cmp函数,下面会有对sort排序的讲解和对strcmp的讲解:sort函数需要头文件#include,strcmp需要头文件#include<string.h>(在pta需要加上.h,VS2012不需要),下面是完整的源码:#include<iostream>#include<..
2021-04-16 22:39:09
70
原创 PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)
本题是对字符串的匹配,然后感觉有些繁琐,所以直接找的代码跟着打了一遍,感觉别人的思路很清晰,一步一步的,值得学习#include<iostream>#include<string>using namespace std;int main() { string a, b, c, d; int flag = 0; string week[7] = { "MON","TUE","WED","THU","FRI","SAT","SUN" }; cin >> a .
2021-04-13 11:07:31
97
原创 PAT (Basic Level) Practice (中文)1023 组个最小数 (20 分)
本题木有难度,下面是完整代码#include<iostream>using namespace std;int main() { int a[10], j = 0; for (int i = 0; i < 10; i++) { cin >> a[i]; } for (int i = 1; i < 10; i++) { if (a[i] != 0) { j = i; a[i]--; break; } } cout <&.
2021-04-11 17:05:12
75
原创 PAT (Basic Level) Practice (中文)1017 A除以B (20 分)
这个是模仿大数相除,开始有些蒙,就参照着别人的代码打了一遍,后面理解原理还是很简单的,就是按手写除法来计算,除最高位外,等需要借上一位来计算,这样就能保证每次除法都是一个两位数或者一位数来算除法,下面是完整的代码#include<iostream>#include<string>using namespace std;int main() { string a; int b; cin >> a >> b; int t, temp; int .
2021-04-11 16:42:58
85
原创 PAT (Basic Level) Practice (中文)1013 数素数 (20 分)
最开始以为控制换行和空格是难点,结果自己在输入m=1时就错了,想着素数只能是奇数,除2以外,导致2就被排除了,另外本题无法判断i最大取到多少,所以让i为1000000(100000还会有一个测试数据错误),下面是完整的代码#include<iostream>#include<math.h>using namespace std;int issushu(int n) { int a = 1; for (int i = 2; i <= sqrt(n); i++) {.
2021-04-11 16:20:21
79
原创 PAT (Basic Level) Practice (中文)1012 数字分类 (20 分)
这个题有个坑,可能导致最后一个测试不通过:a2可能因为加减变成了0,但并不是没有满足a2要求的数字,所以当a2为0有两种情况,一直是没有数字,一直是加减正好为0,所以加一个计数器flag1,下面是完整的代码#include<iostream>using namespace std;int main() { int n, a[1000], a1 = 0, a2 = 0, a3 = 0, a5 = 0, k = 1, flag1 = 0, flag2 = 0; double a4 = 0.
2021-04-11 15:23:57
116
1
原创 PAT (Basic Level) Practice (中文)1010 一元多项式求导 (25 分)
不难,看懂题找到规律就行了,下面是完整的代码#include<iostream>using namespace std;int main() { int a, b, flag = 0; cin >> a >> b; if (b == 0) cout << "0 0" ; else cout << a * b << " " << b - 1; while(cin >> a >>.
2021-04-11 11:37:03
53
原创 PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
这个题是感觉用数组数组也是可以做的,但是我觉得有更好的就去网上找了找,在一篇文章中看到了栈的使用,简单不少,便打了一样的代码,其中C++如何退出while(cin>>s)循环,可以加一个判断,但是本题没有最后的判断单词,所就是用VS的时候可以输入结束后按回车,然后按Ctrl+z,再按回车就可以了,这是可以作为流结束的标志(缓冲区是没有^z字符的),下面是完整的代码#include<iostream>#include<string>#include<stack.
2021-04-11 11:14:30
130
原创 PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
本题是正好学到了数据结构中倒置右移的方法,就是倒置右边,再倒置左边,最后整个数组倒置,右移和左移的区别是倒置的分界点,然后本题还有一个坑的地方是,m有可能比n大,需要m=m%n,否则会出现答案错误,下面是完整的代码#include<iostream>using namespace std;void reverse(int a[],int left,int right,int k ) { int temp; for (int i = left, j = right; j < le.
2021-04-11 10:57:02
71
原创 PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
本题难点是最后一个输入用例,估计a是个很大的值,会造成超时,所以需要对判断素数进行简化,首先是只需判断a的平方根范围内判断即可,第二个是除2以外,偶数绝对不会是素数,所以从3开始,步长调为i=i+2。下面是完整代码在这里插入代码片...
2021-04-09 20:52:34
61
原创 PAT (Basic Level) Practice (中文)1005 继续(3n+1)猜想 (25 分)
主要是对过程的记录,感觉是用动态数组做的,但是太菜了不会就自己用一个数组来时时记录,不过时间复杂度就大了很多,还是就是控制从大到小的输出,也是一个考验,可以看一下引用,显示怎么让结尾的空格去掉。这里是引用另外就是快速排序,正好算法课用到了,就直接引用的函数,因为需要同时排序两个数组,但是是同一个下标,就稍微更改了下。下面是完整的代码...
2021-04-09 13:20:05
99
原创 PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
就是对string的记录,事先对第一组数据进行记录,然后比较
2021-04-08 17:38:11
45
原创 PAT (Basic Level) Practice (中文)1003 我要通过! (20 分)
首先本题对于理解题意上是难点,我也是看了他人的讲解,代码是跟着打理解的,先说明一下map关联器的使用map 是一种关联容器, 提供一对一的关联, 关联的形式为: KEY----VALUE(键值对),另外关键字不能重复。 map 也可看做是 关键字映射的集合, 即,map中不可出现重复的关键字,每条映射的关键字都是不同的。 1.map基本用法#include#includeusing namespace std;int main(){map<string,int> myma..
2021-04-08 17:23:42
122
原创 PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
终于步入20分的题啦,本题在最后输出无法回退掉那个空格, 试过cout<<’\b’<<endl;但是不行,如果有大佬看见了给讲讲怎么不区分最后一个,直接回退掉那个空格。下面是完整的代码#include<iostream>#include<string>#include<math.h>using namespace std;int main() { int sum = 0; string s; cin >> s; fo.
2021-04-06 10:36:08
75
原创 PAT (Basic Level) Practice (中文)1091 N-自守数 (15 分)
下面是完整的代码#include<iostream>#include<math.h>using namespace std;int main() { int m, a,x=0,temp,flag; cin >> m; for (int i = 0; i < m; i++) { cin >> a; flag = 0; for (int j = 1; j < 10; j++) { x = 0; temp = a;.
2021-04-06 10:18:07
56
原创 PAT (Basic Level) Practice (中文)1086 就不告诉你 (15 分)
本题有将int型转换为string,利用函数to_string()。另外就是输出开始不能是0,做除直到余数不为0就可以了,下面是完整的代码#include<iostream>#include<string>using namespace std;int main() { int a, b, c; string s; cin >> a >> b; c = a * b; while (c % 10 == 0) { c = c / 10; .
2021-04-05 21:09:57
87
原创 PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
本题不难,下面是完整的代码#include<iostream>using namespace std;int main() { int n; char a[100][4],b[100][4],c; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < 4; j++) { cin >> a[i][j] >> c >> b[i][j]; } }.
2021-04-05 12:29:50
110
原创 PAT (Basic Level) Practice (中文)1071 小赌怡情 (15 分)
本题还是对输出格式有着要求,空格是两个需要注意,其他就是对情况的分类,没有太大难度,下面是完整的代码#include<iostream>using namespace std;int main() { int T, K, n1, b, t, n2; cin >> T >> K; for (int i = 0; i < K; i++) { cin >> n1 >> b >> t >> n2; if..
2021-04-05 11:55:59
89
原创 PAT (Basic Level) Practice (中文)1066 图像过滤 (15 分)
本踢本题也不难,是对数组的应用,但是对于格式输出,输出三位,不足用0补齐,需要用到printf函数,如下printf(“%03d”,x),下面是完整的代码#include<iostream>using namespace std;int main() { int m, n, a, b, ab, juzhen[500][500]; cin >> m >> n >> a >> b >> ab; for (int i = 0;
2021-04-05 11:31:33
124
原创 PAT (Basic Level) Practice (中文)1061 判断题 (15 分)
不难,但是运用了很多数组,还是比较繁琐的,只不过逻辑简单,下面是完整代码#include<iostream>#include<math.h>using namespace std;int main() { int n, m,sc[100],ans[100],st[100][100],sum=0; cin >> n >> m; for (int i = 0; i < m; i++) { cin >> sc[i]; } f.
2021-04-04 18:55:40
63
原创 PAT (Basic Level) Practice (中文)1056 组合数的和 (15 分)
本题不难,下面是完整的代码#include<iostream>#include<math.h>using namespace std;int main() { int n,a[10],sum=0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j+.
2021-04-04 18:04:21
58
原创 PAT (Basic Level) Practice (中文)1051 复数乘法 (15 分)
每日一题,练题第三天此题难点是输出格式问题,printf函数输出两位小数是四舍五入,所以需要对最后的x,y进行0的判断,所以有下面的if语句,下面是完整的代码#include<iostream>#include<math.h>using namespace std;int main() { double r1, p1, r2, p2, r, p,x,y; cin >> r1 >> p1 >> r2 >> p2; r =
2021-04-04 17:57:14
62
原创 PAT (Basic Level) Practice (中文)1046 划拳 (15 分)
每日第三题,做题第二天题目:本题也不难,还是对数组的应用,下面是完整的代码。#include<iostream>using namespace std;int main() { int n,a[100][4],x=0,y=0; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < 4; j++) { cin >> a[i][j]; } } for (int i
2021-04-03 20:02:43
75
原创 PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
每日第二题,练题第二天本题也是挺简单的,可以用穷举遍历来做,结果也没有超时,下面是完整的代码:#include<iostream>#include<math.h>#include<string>using namespace std;int main() { int n,a[1000],b[1000],m,a1[1000]; cin >> n; string s[1000]; for (int i = 0; i < n; i++)
2021-04-03 17:34:59
66
原创 PAT (Basic Level) Practice (中文)1036 跟奥巴马一起编程 (15 分)
每日一题,刷题第二天这题也不难,下面是完整的代码#include<iostream>#include<math.h>using namespace std;int main() { int n; char a; cin >> n >> a; for (int i = 0; i < round(n/2.0); i++) { if (i != 0 && i != round(n / 2.0) - 1) { cou
2021-04-03 17:22:18
513
原创 PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
每日第二题,刷题第一天题目:在做本体时,没有太大难度,下面是完整的代码:#include<iostream>#include<string>int qz[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char m[11]={'1','0','X','9','8','7','6','5','4','3','2'};using namespace std;int main() { int n,sum,flag = 0; cin
2021-04-02 23:35:41
58
原创 #PAT Basic Level) Practice (中文) 1026 程序运行时间 (15 分)
每日一题,练题第一天题目:首先在做本题时,有两个难点,四舍五入与格式输出。四舍五入有两个方法:一是应用头文件math.h的函数round(),确实#include<math.h>PTA会报错。二是自己手写int n = ((b - a) + 50) / 100。第二个就是格式的输入,因为没察觉到需要两位数输出时分秒,所以一直有输出错误。查看他人代码发现是格式输出错误,所以应用c的输出printf来进行格式输出(printf("%02d:%02d:%02d", x, y, z))。
2021-04-02 22:52:58
99
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人