- 博客(160)
- 收藏
- 关注
原创 python学习篇(一)1~5章节
python基础语法和c有相似之处,但是仍存在一些易错的地方,这篇主要是找出一些易错的地方print输出类型混杂时候age = 23message = "Happy " + age +"rd Birthday"print (message)上述写法会报错,这里需要显示的指出是数值23还是字符2和3需要显示的指出该处使用的是字符age = 23message = "Happy " + str(age) +"rd Birthday"print (message)比较值可以直接输出age
2021-09-18 16:36:28 208
原创 A1151 LCA in a Binary Tree (30)
map很容易超时,找到一个位置之后把它记录下来再进行比较。本题思路,用pos表示各数在中序排列中的位置。如果一左一右,则当前根节点就是lca。#include<cstdio>#include<iostream>#include<map>using namespace std;const int maxn=10010;int in[maxn],pre[maxn];map<int,int> pos;void Lca(int inl,int inr
2020-07-25 11:51:49 122
原创 A1150 Travelling Salesman Problem (25)
写的有些复杂,后续会修改#include<cstdio>#include<iostream>using namespace std;const int maxn=210;const int inf=0x3fffffff;int G[maxn][maxn],a[maxn];bool vis[maxn]={false};int main(){ int N,m; cin>>N>>m; fill(G[0],G[0]+maxn*maxn,inf)
2020-07-24 23:02:08 109
原创 A1149 Dangerous Goods Packaging (25)
写题的时候有点着急了,其实对于fill这个数组可以有更好的处理#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=1001000;bool vis[maxn]={false};vector<int>G[maxn];int main(){ int n,m; cin>>n>>m; for(int i=
2020-07-24 22:07:43 128
原创 A1147 Heaps (30) 堆
本题思路:层序遍历建树;建树的同时通过两个flag的值,flag1为大顶堆成立,flag2为小顶堆成立,判断的时候如果既是大顶堆又是小顶堆,说明不是堆;后序遍历节点;#include<iostream>#include<cstdio>using namespace std;const int maxn=1010;int a[maxn],num,n,m;bool flag,flag1,flag2;struct node{ int data; node *lc,
2020-07-24 15:48:11 128
原创 A1146 Topological Order (25) 拓扑排序,vector用法
本题刚开始在做的时候也考虑到了这种方法,但是不知道vector的这种用法,之后参考了柳婼前辈的做法,就做出来了,本题难点在怎么保存入度,以及入度是怎么赋值到临时变量中去的。#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=1010;int in[maxn];vector<int> v[maxn];vector<int&g
2020-07-24 15:14:14 191
原创 A1144 The Missing Number (20) map
#include<cstdio>#include<iostream>#include<map>using namespace std;map<int,int> mp;int main(){ int n,num; cin>>n; for(int i=0;i<n;i++) { scanf("%d",&num); if(num>0) mp[num]=1; } for(int i=1;i<=n+
2020-07-22 23:01:20 124
原创 A1129 Recommendation System (25) 逻辑///排序
本题刚开始采用的结构体的方式处理这个问题,但是最后导致了3、4两例出现了超时错误,在看了一些同学的分享之后,得出了如下的解法,解法有点类似于缩减样本空间,本来每次都需要排序的,缩减之后变成了每次只有排前面的四个就好,第四个即为当前的输入数据。#include<cstdio>#include<algorithm>using namespace std;const int maxn=50010;bool hashtable[maxn]={false};int value[ma
2020-07-19 16:22:10 142
原创 A1128 N Queens Puzzle (20) n皇后
#include<cstdio>#include<iostream>using namespace std;int a[1001];int main(){ int n,m; bool flag; cin>>n; for(int i=0;i<n;i++) { scanf("%d",&m); flag=true; for(int j=1;j<=m;j++) { scanf("%d",&a[j]); f
2020-07-18 19:22:06 106
原创 A1127 ZigZagging on a Tree (30分) 中序后序建树(***)
本题涉及到层序遍历和中序后序建树的问题;关于z型输出,可以先存在vector中,利用层数的奇偶性来判断是正向输出还是逆向输出;#include<cstdio>#include<iostream>#include<vector>#include<queue>using namespace std;const int maxn=40;int n,in[maxn],post[maxn],maxl=-1,num=0;struct node{ in
2020-07-16 19:53:37 176 1
原创 A1126 Eulerian Path (25) 图的连通性的判断(**)
本题要注意判断图是否是连通图,图是否为连通图的办法要掌握;#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=520;vector<int> a[maxn];int degree[maxn]={0},cnt=0;bool vis[maxn]={false};void DFS(int x){ vis[x]=true; cn
2020-07-16 18:39:13 114
原创 A1125 Chain the Ropes (25) 贪心
注意题目要求这些片段都要用上,因为刚开始的时候折叠的次数多,所以采用贪心策略,先排序,再得出结果。#include<cstdio>#include<algorithm>using namespace std;const int maxn=10100;int a[maxn];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]);
2020-07-16 17:49:37 133
原创 A1124 Raffle for Weibo Followers (20) map的一般用法(**)
map一般不怎么用到,但是典型例题的典型写法一定要掌握到,避免考试的时候蒙圈#include<cstdio>#include<map>#include<iostream>#include<string>using namespace std;const int maxn=1010;string str[maxn];map<string,int> mp;int main(){ int m,n,s; bool flag=fals
2020-07-16 17:30:05 135
原创 A1123 Is It a Complete AVL Tree (30) AVL完全二叉树
#include<cstdio>#include<iostream>#include<queue>using namespace std;int k=0,n,num;;struct node{ int id,height; node *lchild,*rchild;};int getheight(node *root){ if(root==NULL) return 0; else return root->height;}int
2020-07-16 11:54:37 165
原创 A1122 Hamiltonian Cycle (25) 图?
#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=220;bool hash1[maxn]={false};int hashtable[maxn][maxn]={0};int iq[maxn];int main(){ int n,m,k,num; bool flag; cin>>n>>m; for(int
2020-07-15 22:40:35 119
原创 A1121 Damn Single (25) Map的常见用法(原理相同)
#include<cstdio>#include<iostream>#include<vector>#include<algorithm>using namespace std;const int maxn=100010;vector<int> ans;int a[maxn],b[maxn];bool hashtable[maxn]={false};int main(){ int n,m,c1,c2,c; cin>&g
2020-07-15 21:38:58 141
原创 A1120 Friend Numbers (20) 简单题
#include<cstdio>#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<int> ans;bool hashtable[40]={false};int change(int x){ int i=0; while(x>0) { i+=(x%10); x/
2020-07-15 19:27:43 125
原创 A1119 Pre- and Post-order Traversals (30) 前序后序转中序
本题前导:https://blog.csdn.net/destiny_balabala/article/details/99352715;本题假设是如果判断不了,设该结点为右边的结点。#include<cstdio>#include<iostream>#include<vector>using namespace std;const int maxn=30;bool flag=false;int post[maxn],pre[maxn];vector&l
2020-07-15 19:15:02 129
原创 A1118 Birds in Forest (25) 并查集
#include<cstdio>#include<iostream>using namespace std;const int maxn=10010;int father[maxn],isroot[maxn]={0};bool hashtable[maxn]={false};void init(){ for(int i=0;i<maxn;i++) { father[i]=i; }}int findfather(int x){ int a=x;
2020-07-15 16:21:41 102
原创 A1117 Eddington Number (25) 逻辑题
#include<cstdio>#include<iostream>using namespace std;const int maxn=100010;int hashtable[maxn]={0};int main(){ int n,r; cin>>n; for(int i=1;i<=n;i++) { scanf("%d",&r); if(r>n) { hashtable[n]++; } else
2020-07-15 13:18:21 129
原创 A1116 Come on! Let‘s C (20) 逻辑题
#include<cstdio>#include<iostream>#include<cmath>using namespace std;const int maxn=100001;bool vis[maxn]={false},is[maxn]={false};int a[maxn],Id[maxn];bool isprime(int x){ for(int i=2;i<=sqrt(x);i++) { if(x%i==0)
2020-07-15 12:28:13 187
原创 A1111 Online Map (30) 图的遍历dijkstra+DFS
三个注意点:1、本题没有采用vector的形式做前导的赋值,vector不能直接赋值,而要采用pushback()的方式赋值;2、本题题目,第三个数为0的时候代表有两条路,而不是不通;3、本题第三个测试点错误的话,再读一遍题目关于时间相同的话的做法,是结点数目最小,而不是距离最小,一定要认真读题。#include<cstdio>#include<iostream>#include<vector>using namespace std;const int m
2020-07-13 19:24:12 204
原创 A1110 Complete Binary Tree (25) DFS,逻辑题,完全二叉树的一般判别方法
做本题的时候先考虑用层序,但是没有思绪,又转为考虑DFS的解法,pat的很多解法是双重标注的方法,在做题的时候需要认真想明白index和root分别指向的是当前的位置和当前的元素,两者通过元素访问,index通过访问变化。本题是DFS解法,但是和前面的逻辑题本质无差别。本题的另外一个需要注意的事项是,因为访问元素可能超过10,这时不能再用char来接受了。DFS解法#include<cstdio>#include<iostream>using namespace std;
2020-07-13 12:23:52 146
原创 A1109 Group Photo (25) 拍照(逻辑题)
观察本题的队伍的排列,应该从中间分为左右两侧进行计算,先左后右进行填充。需要注意一点:题目中给出的ans要加上规模大小,不加的话本题会出现段错误;#include<cstdio>#include<string>#include<iostream>#include<algorithm>#include<vector>using namespace std;const int maxn=10010;struct node{ str
2020-07-13 11:14:54 255
原创 A1108 Finding Average (20) sscanf和sprintf
本题需要掌握sscanf和sprintf的用法;此外注意ansnum为0,1时的特殊输出#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int maxn=50;char a[maxn],b[maxn];int main(){ int n,ansnum; double num,sum=0; cin>>n; ansnum=n; fo
2020-07-12 17:31:55 130
原创 A1107 Social Clusters (30) 并查集(本题有一个易错点)
合并完成之后,也有可能出现当前节点的父节点没有及时变化的情况,所以isroot里面的是findfather,而不是father数组的形式#include<cstdio>#include<iostream>#include<vector>#include<algorithm>using namespace std;const int maxn=1010;int course[maxn]={0};int father[maxn];int isro
2020-07-12 17:05:08 163
原创 A1106 Lowest Price in Supply Chain (25) 树的遍历
#include<cstdio>#include<iostream>#include<vector>const int maxn=100100;using namespace std;int n,num,mindepth=maxn;double p,r,ans=1;struct node{ int id; vector<int>child;}a[maxn];void DFS(int depth,int index,double nowr
2020-07-12 11:23:29 105
原创 A1105 Spiral Matrix (25) 快乐模拟
本题注释部分需要好好注意,处理的时候避免相互覆盖#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=10010;int a[maxn][maxn],origin[maxn];bool cmp(int b,int c){ return b>c;}int main(){ int
2020-07-12 11:01:34 105
原创 1104 Sum of Number Segments (20) 数学问题(找规律)(代码数据更新后)
#include<cstdio>int main(){ int n; scanf("%d",&n); long double ans=0,v; for(int i=1;i<=n;i++) { scanf("%llf",&v); ans+=v*i*(n-i+1); } printf("%.2llf",ans);}
2020-07-12 10:20:14 140
原创 A1103 Integer Factorization (30) DFS (X)
因为本题有一个index变成index-1的过程,所以这个index一定要大于0,而index内容最小的值为1,所以要注意v的取值#include<cstdio>#include<iostream>#include<vector>#include<cmath>using namespace std;int n,k,p,maxF=-1;vector<int> v,ans,temp;void init(){ int t=0,cnt=
2020-07-11 21:14:57 121
原创 A1102 Invert a Binary Tree (25) 树的遍历
1、涉及字符的时候输入需要注意;2、本题因为有队列,所以要设置一个node里面要设置一个id,如果只涉及中序遍历的话,可以不用这个参数。#include<cstdio>#include<queue>#include<iostream>using namespace std;const int maxn=20;bool hashtable[maxn]={false};int n,cnt1=0,cnt2=0;struct node{ int lchild
2020-07-11 18:44:10 87
原创 A1101 Quick Sort (25) 快速排序 (4.7节内容)
#include<cstdio>#include<vector>#include<iostream>#include<algorithm>using namespace std;const int maxn=100010;int origin[maxn],a[maxn];vector<int> ans;int main(){ int n; cin>>n; for(int i=0;i<n;i++) {
2020-07-11 12:07:00 105
原创 A1100 Mars Numbers (20) Map的用法(两种解法)
先给出第一种解法:#include<cstdio>#include<string>#include<iostream>using namespace std;string str1[13] = {"tret","jan", "feb","mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};string str2[13] = {"tret","tam", "hel", "maa
2020-07-11 11:53:44 208
原创 A1082 Read Number in Chinese (25) 字符串处理
本题是字符串转换问题,在设计计算的时候很明显是以四个数字为一节进行计算,所以可以每次分成四个数字一组进行判断,用left和right来表示边界,设计千百十计算,最后利用len和right来设计万和亿的计算就好了。#include<cstdio>#include<cstring>char num[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};char wei[5][5]={"Shi","Bai",
2020-07-11 10:47:40 122
原创 A1040 Longest Symmetric String (25) 动态规划
一个注意点,本题的动态规划内容是在长度大于等于3的时候展开的,那么在此之前处理1,2长度的时候,记得不要忘记ans的值的变化#include<cstdio>#include<iostream>#include<string>using namespace std;const int maxn=1010;int d[maxn][maxn]={0};int main(){ string str; getline(cin,str); int len=st
2020-07-11 09:13:36 135
原创 A1045 Favorite Color Stripe (30) 动态规划
本题注意的点是可能出现不需要的颜色,提前就应该剔去这个点,也可以使这个点的值最大,这样也能将它并入其中。#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn=10010;int d[maxn]={0},a[maxn],index[maxn]={0};int main(){ int n,m,k,ans=-1,temp,num=1; c
2020-07-10 14:47:31 103
原创 A1007 Maximum Subsequence Sum (25) 动态规划
注意输出的是对应的数值,而不是下标#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int maxn=100010;struct node{ int st; int ed; int data;}a[maxn];int d[maxn]={0};bool cmp(node b,node c){ if(b.data!=c.data)re
2020-07-10 12:04:25 114
原创 A1087 All Roads Lead to Rome (30) 最短路径 dikstra+DFS算法
设计多重复杂判断,最好还是用dijkstra+DFS的写法,比较容易理解且设置的变量也不是很多,刚开始只想用dijkstra写,结果在判断的时候被绕进去了,多一个DFS就比较好写了,另外遇到字符串转换成数字的时候是要用到map的。本题是较为常见的写法,所以要牢牢掌握住#include<cstdio>#include<iostream>#include<map>#include<vector>using namespace std;const int
2020-07-04 17:57:25 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人