- 博客(160)
- 收藏
- 关注
原创 python学习篇(一)1~5章节
python基础语法和c有相似之处,但是仍存在一些易错的地方,这篇主要是找出一些易错的地方 print输出类型混杂时候 age = 23 message = "Happy " + age +"rd Birthday" print (message) 上述写法会报错,这里需要显示的指出是数值23还是字符2和3 需要显示的指出该处使用的是字符 age = 23 message = "Happy " + str(age) +"rd Birthday" print (message) 比较值可以直接输出 age
2021-09-18 16:36:28
244
原创 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
142
原创 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
136
原创 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
149
原创 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
143
原创 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
216
原创 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
141
原创 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
163
原创 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
133
原创 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
201
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
138
原创 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
154
原创 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
153
原创 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
193
原创 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
140
原创 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
165
原创 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
142
原创 A1119 Pre- and Post-order Traversals (30) 前序后序转中序
本题前导:https://blog.youkuaiyun.com/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
152
原创 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
122
原创 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
162
原创 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
216
原创 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
229
原创 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
171
原创 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
286
原创 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
151
原创 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
190
原创 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
120
原创 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
122
原创 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
160
原创 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
139
原创 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
108
原创 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
123
原创 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
244
原创 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
133
原创 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
153
原创 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
124
原创 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
132
原创 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
172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人