自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 【PAT-A】1044. Shopping in Mars 写题记录

这题写了好几版,都说超时,看了看书才想到用二分查找。思路:1:边输入边累加,得出Sum[i](Sum[0]=0不能忘记),这样Sum[i]-Sum[j]即为i-j数列之和。2:得出Sum[i]的连续递增的数列之后,遍历Sum[i],对每个Sum[i],用二分法找到>=M的Sum[r],两者相减得i-r数列,用min记录最小值,以及ans记录i,r,最后遍历完以后ans就行二分...

2019-02-13 21:17:36 165

原创 【PAT-A】1067. Sort with Swap(0, i) 写题记录

思路就是每次都将 0 与 0 所在位次的数交换,若0在0号位,则先与另一不在本位的数(k)交换。第一次写用数组直接存数列,发现得遍历一遍才能找到,可能会超时。故后来直接用数组来存数列每个数的位次。如 2 3 8 9 0 1 4 5 6 7 ,0 在4号位,找 4 的话需要遍历一遍才能找到。注意用k存不在本位的数,而不能遍历再去找不在本位的数(会超时)#include <cstd...

2019-02-11 22:18:40 198

原创 【PAT-A】1037. Magic Coupon 写题记录

读懂题目就能写#include <cstdio>#include <algorithm>using namespace std;bool cmp1(int a,int b){ return a>b; }bool cmp2(int a,int b){ return a<b;}int main(){ int n,m; int p1[10...

2019-02-11 19:08:48 213

原创 【PAT-B】1048. Find Coins 写题记录

用的散列,注意1:hashtable大小,如果取510,m-coins[i]可能超过5002:m和m-i可能相等,可以先hashtable[m]-- 就不会有问题了3:循环里是 for (int i=0;i<m/2+1;i++) 第一次我写的是max/2+1#include <cstdio> const int max=1005;int main(){ i...

2019-02-10 22:49:41 174

原创 【PAT-B】1005. 继续(3n+1)猜想 写题记录

几个点1:题目的意思,关键在于弄清楚什么是“关键数”,不被别人覆盖的是“关键数”;2:hashtable不能设成hashtable[110],因为有的数中途会出现如224这样的大数,会越界。加判断 if (numx<100) 即可;3:bool hashtable[110]  要写成bool hashtable[110] = {0},否则hashtable[0]会是true。...

2019-02-10 01:27:04 105

原创 【PAT-A】1050. String Subtraction 写题记录

水题,不过注意不要用i<strlen()#include <cstdio>#include <cstring>int main(){ char s1[10005],s2[10005]; bool hashtable[128] ; fgets(s1,10005,stdin); fgets(s2,10005,stdin); int len1 = st...

2019-02-10 00:22:34 103

原创 【PAT-A】1041. Be Unique 写题记录

大水题,不多说#include <cstdio>int main(){ int n; scanf("%d",&n); int number[n]={0}; int number_times[10010]={0}; for (int i=0;i<n;i++){ int num; scanf("%d",&num); number_tim...

2019-02-09 23:55:37 89

原创 【PAT-A】1092. To Buy or Not to Buy 写题记录

思路很直接,input1用hashtable记录次数,Input2中的颜色遇到就减1。注意:char shop[1005] 的1005题目中说不超过1000,我设成1001一个点会过不去,所以这种题边界最好设大一些。#include <cstdio>#include <algorithm>;#include <cstring>using name...

2019-01-29 00:45:38 123

原创 【PAT-B】1033. 旧键盘打字 写题记录

思路很清晰,建立hashtable,记录坏的键,遍历要input2,没坏则输出。有些小细节需要注意:1、遍历输入的字符串时,如果事先没有 len1 = strlen(input1); 而直接  for (int i=0;i<strlen(input1);i++) 会超时2、input1可能是空,如果用scanf会报错,应该使用gets(),然而PAT不能使用get(),可用fge...

2019-01-28 17:09:04 115

原创 【PAT-A】1084. Broken Keyboard 写题记录

这题我直接用map写的。思路是遍历一遍input1,把出现的字符(遇到小写的转成大写)设置成false。再遍历一遍input2,把之前false的字符(遇到小写的转成大写)设成true。之后就再遍历一遍input1,把还是false的(input2中不出现的)输出。#include <cstdio>#include <cstring>#include <st...

2019-01-28 14:39:25 90

原创 【PAT-A】1095. Cars on Campus 写题记录

这题倒数第二个点一直过不去,加上期末考了,也就没有管他。放假重新看代码,一下就看出哪里错了。。主要思路就是先把所有的信息录入,然后遍历一遍,把符合规则的记录valid值设成true。之后就检查valid==true的记录。符合规则:in和out先后成对,若有多个In,取离out最近的in。注意最后的查询时间是增序,只用一次遍历,不然会超时。#include <cstdio&...

2019-01-27 21:24:18 367

原创 【PAT-A】1080. Graduate Admission 写题记录

主要是模拟,创建两个结构体保存学生、学校数据。理清思路就好了这次的bug在于 cmp函数中,if 以后必须出现else而不是else if,否则会导致没有return还有如果数组过于复杂,将其赋值给一个临时变量,便于理解和书写,比如代码中的 prefer = stu[i].choice[j]#include <cstdio> #include <cstring&g...

2018-12-29 00:32:20 353

原创 【PAT-A】1083. List Grades 写题记录

水题,测了下读题+写题用了8min。#include <cstdio>#include <cstring>#include <algorithm> using namespace std;struct student{ char name[13]; char ID[13]; int grade;}stu[100020];bool cmp...

2018-12-28 15:48:44 102

原创 【PAT-A】1075. PAT Judge 写题记录

主要是用结构体来做,注意统计规则,有0分及0分以上的提交,总的算有效提交,其余的算无效提交(编译错误题目算提交过)①提交得0分,题目得0分,算有效提交②提交得-1分,题目算0分,但只算无效提交③没有提交过,题目算“-”其他方面就是准考证从0开始,因而sort(user,user+10000,cmp)是不对的,最后一个测试点通不过改成sort(user,user+10001,cm...

2018-12-28 15:28:58 218

原创 【PAT-A】1055. The World's Richest 写题记录

我的看到题目的直接思路是先按年龄排序,挑选出年龄在区间内的,再按正常排序,有M个输出M个,没M个全部输出。这样因为排了2次序,有个大数据量的测试点会过不去。sort排序的时候,注意&a,&a[0],&a[0]+1,&a+1的区别#include <cstdio>#include <cstring>#include <alg...

2018-12-26 17:58:51 236

原创 【PAT-A】1016. Phone Bills 写题记录

这道题比较烦人,关键是逻辑弄通。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct users{ char ID[24]; int mon; int dd; int hh; int mm; int state = 0; //...

2018-12-25 23:50:20 141

原创 【PAT-A】1012. The Best Rank 写题记录

这道题写好交上去报段错误,看了很久,数组什么的都是不越界的,非常得奇怪。后面自己造了几百个数据每一步print出来,发现用sort排序完以后,有丢数据的现象。上网查了一下查到了以下一句话cmp必须写<或>,不能写成<=或>=。否则,可能出现段错误!!!bug整整找了2天,心态崩了。这道题的关键是根据A,C,M,E的优先顺序分别排序,然后输出名次最高的,因此r...

2018-12-22 16:06:33 191

原创 【PAT-A】1082. Read Number in Chinese 写题记录

这一题写了很久,主要是细节问题。①格式错误了很多次,主要是printf("%s %s")这里出问题②思路主要是对于0怎么处理    1、如果是9位数,万位一旦出现0,就要输出Wan    2、如果是5位数到8位数,一定会输出Wan    3、出现0后,遇到非0的数时,只输出1个ling其他的就是,输出那个数,再输出它的单位即可#include <cstdio&g...

2018-12-19 16:48:43 139

原创 【PAT-A】1077. Kuchiguse 写题记录

这一题碰到最麻烦的一点是无法用gets()直接读取一整行,使用fget()怕出问题,所以想着如何用scanf()解决。scanf(%s) 无法读入空格,但是可以利用正则来解决,scanf(%[^\n])可以读入非换行符的所有字符,但如果不加getchar(),则缓冲区里一直有 \n,接下来的字符就不会被读入,因此每输入一次就要getchar() 清一次换行符。#include <s...

2018-12-19 12:39:09 230

原创 【PAT-A】1073. Scientific Notation 写题记录

写题的时候没看见整数部分从1-9,考虑了0的情况,写了很多版本,选了个最精简的。#include <cstdio>#include <cstring>int main(){ char input[10010]; scanf("%s",&input); input[strlen(input)]='\0'; int locE=1; while(inp...

2018-12-18 17:36:25 108

原创 【PAT-B】1009 说反话 写题记录

注意字符串后面要加'\0'#include <stdio.h>#include <string.h>int main(){ char input[85]; char output[50][20]; gets(input); int len = strlen(input); int num=0,j=0; for (int i=0;i<len;i++...

2018-12-17 20:10:24 103

原创 【PAT-A】1058. A+B in Hogwarts 写题记录

#include <cstdio>struct man{ int G; //[0,10^7] int S; //[0,17) int K; //[0,29)}A,B;int main(){ int count=0; scanf("%d.%d.%d",&A.G,&A.S,&A.K); scanf("%d.%d.%d",&B.G,&am...

2018-12-16 18:06:58 78

原创 【PAT-A】1027. Colors in Mars 写题记录

进制转换问题,多了个数字转英文#include <cstdio>const int radix = 13;const char radixchart[13]={'0','1','2','3','4','5','6','7','8','9','A','B','C'};void change(int x){ int outa[10]={0} ,i = 0; while (x...

2018-12-16 17:47:23 93

原创 【PAT-A】1046. Shortest Distance 写题记录

思路:输入时计算dis与sum,dis[i]表示 Vi到V1的距离,此时会有dis[N+1]出现,不去理他,1到N的距离不被保存,但无所谓,因为sum-dis[N]即是。计算a、b距离时,dis[a]-dis[b]即可。注意不能记录各相邻点的距离,来相加临时算a、b的距离,会超时。#include <cstdio>int main(){ int n,m; scan...

2018-10-24 21:23:52 197

原创 【PAT-A】1042. Shuffling Machine 写题记录

思路:设置start[55],end[55]两个数组,每一变化以后,end 覆盖start 然后循环。Sx,Dx、Hx、Cx、Jx等等可以依照次序来获得,没必要原样创建55个,直接改变,这样需要用到strcpy。注意次序和编码的关系。#include <cstdio> #include <cstring>int main(){ char mp[5] = {'...

2018-10-24 20:35:45 97

原创 【PAT-A】1005. Spell It Right 写题记录

思路:每次读入一位数,计算sum,最后提取sum的每一位,转成英文输出。注意N<10^100,N不能是int、Long等类型,最好将其当做字符,用getchar(),每一位每一位地输入。可知9*100=900,sum最多3位。#include <cstdio>#include <cstdlib>void spell(int x){ switch(x...

2018-10-24 16:03:24 96

原创 【PAT-A】1004. Counting Leaves 写题记录

思路:一看题我想到的就是想构树,然后层序遍历,每层遍历完输出一次。但题目给的例子非常简单,有疑问的是,输入的时候不知道结点是否是按ID的次序输入的,若是按照次序输入,一路构建下来就很容易了,若不是按照次序,我的思路是等所有M个子树都构建完毕,记录子树根结点的地址、ID,然后从ID为1的根节点开始依次连接各个子树。事实上若是按照次序输入的情况写只能拿到部分正确,有几个测试点是过不去的,改...

2018-10-23 16:55:22 219

原创 【PAT-A】1002. A+B for Polynomials 写题记录

思路:第一次输入原样输入,第二次输入时,直接将相同指数的系数相加,并查找有没有已存在的指数,统计系数为0的个数。因为队列无法直接删除系数为0的项,故0项最后输出的时候再处理。注意最后的格式PS.题目有个瑕疵,未说明指数是否按降序输入与输出,因此最开始构思时想的是用优先队列。#include <cstdio>#include <vector>#inc...

2018-10-22 14:36:16 109

原创 【PAT-A】1001. A+B Format 写题记录

思路:结果c预先判断,等于零则直接输出,小于零则先输出“-”,再按大于零处理。之后用栈来处理,以3位数为一组入栈,注意比如10008 %1000,得8,不是008,因此输出的时候除了最高位次的一组,其他组要注意用0填充。输出时以“逗号+数字”为一组较好,这样特殊情况只有最高位次的一组。#include <cstdio>#include <stack>usi...

2018-10-18 16:15:15 123

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除