自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (3)
  • 收藏
  • 关注

原创 pat-a1110. Complete Binary Tree (25)

这个题西先是没好好读题,没注意到no后面要输出根节点。。 然后是写太快了没注意范围,以为节点编号都是个位数。这个点错了我好多。。 #include #include #include #include #include using namespace std; map >tree; int p[50]; int last; bool bfs(int root){ queue q; int

2017-08-04 23:45:25 234

原创 pat-aChain the Ropes (25)

每次选择两根绳子合在一起,每合一次总长度就是两端和的一半。只要让长的尽可能晚的合并就行了。实质就是一个哈夫曼树。 输出那里不是四舍五入,是向下取整,不然最后一个点过不了 #include #include #include using namespace std; struct node{ double d; node(double a=0):d(a){ } friend bool o

2017-08-04 23:41:47 221

原创 pat-a1105. Spiral Matrix (25)

水题。。还调了一段时间,惭愧。。刚开始在while循环里面多加了一个i++。。。 #include #include #include #include using namespace std; int num[1000000]; int ans[10000][10000]; int main(){ int n; scanf("%d",&n); for(int i=0;i<n;++i)

2017-07-27 11:18:56 225

原创 pat-a1018. Public Bike Management (30)

刚开始一直没有做出来,题意没有理解对。。是在去目标地点的路上顺便使路上的车数量达到完美。我以为回来的路上也能弄完美。举例来说。a点3车,b10车,经过a到b去,要send2,back5而不是send0,back3。这样的话就比较容易做了。深搜,记录send和back的状态,找到完美路径。中间用例dijkstra算法,用来算最短路径进行剪枝,不用也不知道会不会超时。刚开始想用纯的dijkstra算法

2017-07-26 22:24:45 276

原创 pat-a1087. All Roads Lead to Rome (30)

经过一系列dijkstra练习题的练习后,已经能够解决在同时考虑除路径以及其他因素下的最优路径问题。昨天调了半天输入。才发现起始城市没有happiness。就只输入城市数量-1的happiness就行了。 #include #include #include #include #include using namespace std; const int inf=10000000; struct

2017-07-25 11:03:37 493

原创 pat-a1072. Gas Station (30)

直接对每个能建加油站的地方使用dijkstra算法就行了,求出到每个用户的最短距离,将每次的结果求出总路程,离最近用户距离,以及加油站下标存放在结构体数组里面然后排序。输出第一组数据就行。 四舍五入那里3.25保留一位我的编译环境会输出3.2,直接提交到oj上也是对的,应该是和编译环境有关。 #include #include #include #include #include #inclu

2017-07-23 11:34:40 316

原创 pat-a1030. Travel Plan (30)

自从以前类似题看过大佬代码后不断练习,差不多能够熟悉使用dijkstra算法。这个题也就不难了 直接在原算法上面添加价格评价因素就行。每次选取路径最小的,如果有多个路径最小的节点选择花费最小的就行了。 #include #include #include #include using namespace std; int cost[510]; int dis[550]; int visit[5

2017-07-22 11:25:10 224

原创 pat-a1003. Emergency (25)

这个题本身是一个比较简单的单源最短路径的问题。也不怕被笑这个算法一直写得有问题。这次仔细学习了大佬的代码。要不断重复才能熟悉这个算法。 #include #include #include #include #include using namespace std; int we[510]; int visit[510]; int dis[510]; int ans[510]; int c2;

2017-07-15 23:37:14 240

原创 pat-a1076. Forwards on Weibo (30)

这个题我开始用深搜一直有两个点过不了。最后一个点是wa不是超时,不是很明白我深搜哪里写的不对。深搜限制层数计数访问过的节点。网上都是广搜写的。换成广搜就直接过了。后面如果有时间再看看深搜的问题。 #include #include #include #include #include using namespace std; map >g; int l,ans=0; int visit[1010

2017-07-13 17:24:45 170

原创 pat-a1034. Head of a Gang (30)

一开始的方向都错了。。这个题对边进行深搜,开始一直对点进行深搜的。在边搜索的同时,把边的权重放进两个节点的权重数组里面。同时用深搜确定有多少组织。每个组织有哪些成员存起来。权重和大于阈值的输出头领以及人数就行了。 刚开始第3测试用例一直段错误。。查了半天才反应过来1000条通话记录最多能有2000人。。数组开小了。。 #include #include #include #include #i

2017-07-12 17:31:41 356

原创 pat-a 1107. Social Clusters (30)

并查集,我写的多了一点。 简单说下就行,两个人如果有共同的爱好就是一个圈子里面的。开始错误原因在于压缩路径不够彻底。因为最后判断有几个圈子时没有去寻找根直接判断父节点,因此要压缩到底才能直接判断。 #include #include #include using namespace std; int num[1010][1010]; int p[1010]; int visit[1010];

2017-07-10 17:25:25 195

原创 pat-a1064. Complete Binary Search Tree (30)

乍看一下30分还以为会写很多代码。这个题关键在于使用什么样的结构存储树。完全二叉树用数组直接存储,下标代表左右子女的位置。将题目的数字排序可以得到前序遍历,然后递归建树。数组里面的顺序就是层次遍历 #include #include using namespace std; int tree[1010]; int nu[1010]; int p=0,n; void creat(int root)

2017-06-07 22:03:46 291

原创 pat-a 1043. Is It a Binary Search Tree (25)

很明显这个题我冗余代码写得有点多,昨天想使用指针来建树,一直出现指针指向非法空间问题没做出来。改成数组就对了。指针使用不是很熟悉。同学做这个题用递归建树,如果递归过程中建不了二叉树就直接输出NO,递归我写起来也是很容易越界。 这个题有相同的编号因此不能使用STL来代替建树 这个题题意就是判断所给数列是不是搜索二叉树或者镜像的搜索二叉树,输出两种树分别对应的后序遍历就行了(镜像树先右后左)

2017-06-04 22:22:43 223

原创 pat-a1053. Path of Equal Weight (30)

这个题开始想写一个关于数列排序。后来看标准库发现vector序列可以直接比较大小。就只需要先把所有答案存起来在sort就行了 #include #include #include #include #include using namespace std; int w[110]; int isleaf[110]; int s,p; map >tree; vector v; vector >ans

2017-06-02 22:16:39 232

原创 pat-a1106. Lowest Price in Supply Chain (25)

用广搜应该好一点。深搜不剪枝也能过。样例不够健全 #include #include #include #include using namespace std; map >tree; int ans=1000010,num=0; void bfs(int root,int level){ int len=tree[root].size(); if(len==0){ if(ans>lev

2017-06-01 21:53:55 187

原创 pat-a 1094. The Largest Generation (25)

直接广搜判断哪一层结点最多即可 #include #include #include #include using namespace std; map >tree; int c[110]; int maxn=0,p=0; struct node{ int num; int level; node(int a=0,int b=0):num(a),level(b){ } }; void b

2017-05-31 22:05:10 220

原创 第九次ccf-压缩编码

动态规划问题,和矩阵连乘是一个原理。dp[s][e]表示从s到e的最优解 重要的是找到dp[s][i],dp[i+1][e]和dp[s][e]之间的关系,开始以为是直接相加结果一直不对。。 #include #include using namespace std; int num[1010]; int sum[1010]; int dp[1010][1010]; const int IN

2017-03-30 14:48:50 592 1

原创 第十次ccf-地铁修建

哭晕在厕所。。以前这种题都是无压力。。考试过太快了。。哎。好不容易碰到一个会的第四题还是栽了。。还是希望能刷上去 最小生成树算法。。每次选最短的边。选了之后去看1和n是不是连接在一起了。。输出路径最大值就行了。有个路径压缩 #include #include using namespace std; int n,m; struct node{ int f,to,w; friend bo

2017-03-28 15:33:04 2901 1

原创 第九次ccf-权限查询

#include #include #include #include using namespace std; struct cate{ string name; int level; cate(string s="",int a=-1):name(s),level(a){ } }; cate cates[110]; struct role{ string name; vector

2017-03-18 22:41:24 266

原创 pat-a1090. Highest Price in Supply Chain (25)

树这类基础题还是有基础。。应该尽快刷到图弥补不足 #include #include #include #include using namespace std; map >tree; int level=0,sum=0; void dfs(int root,int t){ int len=tree[root].size(); if(len==0){ if(level<t){ le

2017-03-14 20:03:56 204

原创 pat-a1091. Acute Stroke (30)

读题有点难。。。。注意维数对应即可 #include #include using namespace std; int mapx[1500][150][100]; bool visit[1500][150][100]={0}; int n,m,l; struct node{ int x,y,z; node(int a=0,int b=0,int c=0):x(a),y(b),z(c){

2017-03-13 23:30:33 211

原创 pat-a1103. Integer Factorization (30)

自己想的深搜比较复杂,看了宝典的思路。。先把factor存好再去就行。 第4个测试点是1 1 2.。开始没注意边界这个点会输出impossible。。 #include #include using namespace std; int fac[1000]; int ans=0,k; vector vi,a; int power(int i,int p){ int ans=1; while

2017-03-13 14:48:25 345

原创 pat-a1097. Deduplication on a Linked List (25)

刚开始编译器输出正确交上去一直提示编译错误。。后来发现是数组下标那里的问题。。把abs函数写到数组下标里oj就会编译错误。。以后要注意一下 #include #include #include using namespace std; struct node{ int ke,l; }; node k[100010]; int visit[10010]; int num[10010]; int

2017-03-11 22:44:39 209

原创 pat-a1052. Linked List Sorting (25)

最后一个测试点是链表没有结点。。开始没注意 #include #include #include #include using namespace std; map an; map na; map no; int t1[100010]; int main(){ int a,b,c,x,y,z; scanf("%d%d",&a,&b); for(int i=0;i<a;++i){ sca

2017-03-10 22:35:33 185

原创 pat-a1032. Sharing (25)

同一个字母会有不同的前后地址。。。不能像上个反转链接表一样使用map #include #include #include using namespace std; struct node{ int l; char c; }; node no[1000000]; char t1[100010]; char t2[100010]; int visit[1000010]; int main(){

2017-03-09 22:35:25 179

原创 pat-a1074. Reversing Linked List (25)

之前做过,代码比以前精简一点了。。虽然偷懒用了map.. 测试点其实也不严谨,只有最后一个测试点是没有用完给出的所有节点。。 后面要做点ccf的题了。。希望今年能取得好成绩 #include #include #include using namespace std; int num[100010]; int nu[100010]; int main(){ int a,b,c,x,y,z;

2017-03-08 22:39:48 268

原创 pat-a1022. Digital Library (30)

宝典基础篇终于A完了,后面就是提高篇了。。真鸡冻。基础够了。以后还是希望每天A一个不水的题 这个题就关键字那里开始没认真读坑了一点 #include #include #include #include #include using namespace std; struct node{ string info[5]; string ke[5]; }; node k[10010]; int

2017-03-06 22:50:20 172

原创 pat-a1071. Speech Patterns (25)

继续按着宝典刷 这个卡了一个点,是单个单词的情况。。 #include #include #include using namespace std; int main(){ string s; map si; getline(cin,s); int maxn=0,flag=0; int len=s.size(); string temp; for(int i=0;i<len;++

2017-03-05 22:48:59 188

原创 pat-a1060. Are They Equal (25)

很明显我写得太冗余了。。 简单说明一下吧。。我以为0就是输出0这个点错了一个,0要输出3 0 0要输出0.000*10^0。。还有一个点是前导0.如00123,。。这个点我真没想到。。 其他点情况就很简单了。。分成小于1和大于1处理就能过 #include #include using namespace std; string k; int x,n; void fun(string& a)

2017-03-03 17:50:14 200

原创 pat-a1054. The Dominant Color (20)

水题一个。。碰到一个难点的没做出来。。后面补上 #include #include using namespace std; map ii; int main(){ int n,m; int t,maxn=0,k; scanf("%d%d",&n,&m); for(int i=0;i<n*m;++i){ scanf("%d",&t); ii[t]++; if(ii[t]>ma

2017-03-02 11:17:23 186

原创 pat-a1093. Count PAT's (25)

小水怡情。。23333 #include #include char s[100010]; int main(){ scanf("%s",s); int len=strlen(s); long long int p=0,a=0,t=0; for(int i=0;i<len;++i) if(s[i]=='P') p++; else if(s[i]=='A') a+=p; els

2017-02-22 17:20:00 184

原创 pat-a1100. Mars Numbers (20)

寒假结束继续弄。。今天水题休息一下。刚开始字符串转整数那里没注意写错了。。 #include #include #include #include using namespace std; string ge[14]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"}; string s

2017-02-20 18:38:04 260

原创 pat-b1005. 继续(3n+1)猜想 (25)

用java不是想象中那么顺利。。我把函数写到main函数前无论怎么提交都是返回非0.。写到后面后点高级编译器还有两个超时。。放到后面直接过了。。java迷真多。。以后有机会换个oj用java试试函数位置对时间的影响 import java.util.*; public class Main{ public static void main(String[] args) { int n;

2017-01-22 21:41:55 344

原创 pat-a1063. Set Similarity (25)

又卡时。。,用set超时(这里是指后面检查多少个重复用了set)。。set用的是平衡二叉树搜索应该很快。。应该是插入太多了。。 输入时进行去重然后排序。。两个有序的数组判断多少个 重复数字和一共多少个数字就很容易了 #include #include #include using namespace std; int num[51][10010]; int cn[51]; int main()

2017-01-22 20:40:38 215

原创 pat-b1004. 成绩排名 (20)

犯了初学者问题。。只是开辟了自定义数组后里面放的只是指针。不能直接赋值。。要new对象然后指向它。。还有就是开始想用自定义结构排序没成功。还是不熟悉。多练 import java.util.*; public class Main{ public static void main(String[] args) { int n; int maxn=0,minn=0; Scanner

2017-01-22 00:20:37 228

原创 pat-b1003. 我要通过!(20)

不知道为什么只要点了右边使用高级编译器提交会提示返回非0.。。。我主类是Main也不是网上说的主类名不对,把使用高级编译器去掉就过了,当然我也用命令行运行过。 import java.util.*; public class Main{ public static void main(String[] args) { int n; Scanner cin = new Scanner(S

2017-01-21 18:15:10 283

原创 pat-a1047. Student List for Course (25)

又是卡时题。。和之前做过一个题反过来而已。。我看时间扩大了一倍以为不卡时用string和map。。超时没话说。。我换了hash后还是超。用的map.改成vector record[maxn]过了。。以后也该用vector提高效率 #include #include #include #include; using namespace std; vector record[26*26*26*11]

2017-01-21 17:09:34 294

原创 pat-b1002. 写出这个数 (20)

import java.util.*; public class Main { public static void main(String[] args) { String[] s={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; String t; Scanner cin = new Scanner(System.

2017-01-20 22:27:12 254

原创 pat-b1001. 害死人不偿命的(3n+1)猜想 (15)

basic用c++都过了。。只是不想java太弱。连调试错误都看半天。。菜鸟爬坑ing import java.util.*; public class Main { public static void main(String[] args) { int n,step=0; Scanner cin = new Scanner(System.in); n=cin.nextInt

2017-01-20 21:56:02 232

原创 pat-a1039. Course List for Student (25)

读懂题意后很容易做,然而是个卡时题。题意说明了名字的组成方式就是让我们想如何hash吧。。hash方式参考了网上的代码。确实应该注意滥用string #include #include #include #include #include using namespace std; int main(){ char c[10]; int n,k,t; scanf("%d%d",&n,&k);

2017-01-20 21:45:51 216

深度探索C++对象模型

中文

2017-01-02

空空如也

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

TA关注的人

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