- 博客(58)
- 收藏
- 关注
原创 【龙书答案】第三章解析(未完成)
Exercise 3.3Problem 3.3.1Consult the language reference manuals to determineThe sets of characters that form the input alphabet (exclude those may only appear in character strings or comments).The le
2015-06-20 00:23:57
5036
2
原创 【编译原理龙书笔记】(三)词法分析(附联系答案)(仍未完成)
这篇博客是根据自己学习龙书的过程编写,因为博主习惯了英语环境,在强行从英语转化为中文的时候难免会有些不自然,请大家谅解。配套的练习题答案可以在 https://github.com/Oh233/Dragon_book_exercise 看到。感谢沉鱼姐姐,很多答案都是参考了她的github,虽然无缘认识,但也算是一位领路人。3.1 词法分析器的作用词法分析是编译的第一阶段。词法分析器读取了源程序,将
2015-06-14 01:57:07
5527
1
原创 Codeforces 551B ZgukistringZ (字符串处理)
最近已经很久没有弄csdn和刷题了,感觉自己水了不少,还是要赶紧刷题准备比赛才行啊。题目介绍Professor GukiZ doesn’t accept string as they are. He likes to swap some letters in string to obtain a new one.GukiZ has strings a, b, and c. He wants to o
2015-06-13 20:55:44
957
原创 【编译原理龙书笔记】(二)一个简单的语法制导翻译器(仍未完成)
这篇博客是根据自己学习龙书,因为博主习惯了英语环境,在强行从英语转化为中文的时候难免会有些不自然,请大家谅解。配套的练习题答案可以在 https://github.com/Oh233/Dragon_book_exercise 看到。感谢沉鱼姐姐,很多答案都是参考了她的github,虽然无缘认识,但也算是一位领路人。正文:一个简单的语法制导翻译器在本章中,要先给一个编译器大致的idea,而并非一开始就
2015-06-12 22:29:43
1362
原创 Codeforces 519D A and B and Interesting Substrings (前缀和)
这次的codeforces真是无与伦比的水,但是即使如此,这道几百个人做出来的D我依然没有过,实在是sad story。具体来说题目的话,题目是说给定每个字母的权值(一共只有26个小写英文字母的组合单词),以及一个字符串,找出这个字符串的子字符串中的满足1. 除去第一个和最后一个字母中间加和为0的。2. 第一个字母和最后一个字母相同的。输出这样的字符串有几个。刚开始我竟
2015-03-02 13:17:16
897
原创 Codeforces 513C Second price auction (bruteforce)
问题描述:如题所说,second price auction,讲的是几个人拍卖,出价最高的人以第二名的价格购得产品。给定的数据是第i个人出价的上下界,每种钱都是等可能性的,求最后花费钱的期望。其实曾经做过这类的游戏所以规则还是一眼即明,问题就在于题目到底该怎么做。对于每一个可能出现的价钱,枚举一种组合情况(意为对于每一个人,枚举其出的钱是大于等于该价钱,还是小于该价钱),这种时间复杂度
2015-02-16 21:10:03
691
原创 前世今生--STL
#include 嘛,string就是一个用于字符串处理的标准类库,但是需要注意的是其速度可能会比直接操纵char数组要慢一些。1.reversereverse这个方法是我一直都想找到但是没有找到的,在判断回文的时候格外好用。string s = "abcdef";string ss = s; // ss = "abcdef"reverse(ss.begin(),ss.en
2015-01-20 11:42:44
495
原创 POJ3253 数据结构 (优先队列)
Fence Repair题目概述:这道题是说农夫约翰现在要开始锯木板了,但是锯木板是要有很麻烦的花费的。当你把一块长度为A的木板锯成长度为B,C的时候,花费就为B+C,现在给了想要把木板切成几块并且这些块的长度,要求想出一种最少花费的切割方式,并求出这时的最小花费。算法思想:分析:其实可以把分割问题看成一棵树,比如说题目中给的5,8,8,就是21下面两个叉,
2015-01-18 20:35:17
666
原创 POJ2431 数据结构 (优先队列)
题目概述:这道题是说一辆小车每单位长度露单位油,然后就这么开呀开呀想要到距离为L的另一个城镇去。路上有一些加油站,每个加油站距离目标城镇的距离给了,能加的油给了,判断最少需要的加油次数。算法思想:嗯大概是这样,我们该如何找到最少的加油次数呢。答案是将加油站看成“备胎”,所以当小车每经过一个加油站,都要将这个加油站能加的油记载到某个容器里面,然后再在需要的时候
2015-01-17 00:07:29
705
原创 POJ2533 动态规划 (最长上升子序列)
嘛,两种方法,n^2和nlogn。题目概述:LIS,卧槽真的不是我不想描述,而是找不到方法描述呀。总之就是最长!上升!子序列!算法思想:提供两种dp方法。第一种,dp状态记为dp[i]表示以a[i]结尾的序列的最大长度。这样推得的状态方程就是dp[i] = max(dp[i],dp[j]+1) when a[j]第二种,dp状态记为dp[i]表示长度
2015-01-16 21:56:04
595
原创 POJ1458 动态规划 (LCS,水)
嗯确实是LCS最最基础的入门题了。简直是全裸。题目概述:LCS,没啥可说,题目说的十分给面子了。算法思想:算法就是 dp[i+1][j+1] = s1[i] == s2[j] ? dp[i][j]+1 : max(dp[i][j+1],dp[i+1][j]);代码部分:#include #include #incl
2015-01-16 20:42:05
551
原创 POJ1182 数据结构 (并查集)
嗯,相比于网上流传的记载relation推公式的方法,我采用了某一本教材上面的方法,方法下面详述。题目概述:一共给定N种动物,K句话,动物们都是A,B,C的一种,且遵循A吃B,B吃C,C吃A的循环关系,那现在按顺序给定话,要求判断给定的这句话有没有矛盾。算法思想:这道题是利用并查集解决问题的好题目,直接开一个三倍于MAX_N的数组,比如说1记载1是A
2015-01-16 14:21:59
582
原创 POJ1384 动态规划 (完全背包)
嗯哼,继续动态规划,其实有点想滚去做开发。题目概述:有一个存钱的人,往小猪罐子里存钱。给定罐子净重,和存钱后的质量。继而给定每一种扔进去硬币的价值和重量,要求计算最小的可能的满足这个总质量的钱的价值总和。很明显的完全背包,因为投进去的钱可以是无限的。算法思想:具体描述一下动态规划数组。这道题是完全背包,所以第二层循环可以用顺序递增。关于怎么把
2015-01-15 20:04:02
966
原创 POJ1837 动态规划 (01背包)
好了!开始干DP。话说我已经预感到我dp会弱到一定程度了。预计会先持续干两天的dp。题目概述:这道题目是说现在有一个神奇的天平,你的目的是要令他平衡。天平两边长度均为15,每边最多有20个挂钩,一共提供最多20个砝码,要求计算当所有砝码都挂上的时候,能使天平平衡的悬挂方式一共有多少种呢。算法思想:不得不承认,即使知道这是一个01背包的题,开始做的
2015-01-15 17:38:34
635
原创 POJ1035 字符串处理(水)
嗯虽然题目上写着水,但是说起来都是辛酸泪啊T^T题目概述:如今你身为一个项目组的一员,给你输入一个字典,单词不超过10000个,以#标记结束。之后再给定几个单词,进行字符串的匹配。当然这个匹配不是完全匹配。如果字典里面的单词通过删除/加入/替换其中一个字母,就可以达到所给单词的话,也算匹配。输出所有匹配的可能字符串。算法思想:嗯说说为什么会辛酸泪吧。
2015-01-14 20:53:57
745
原创 POJ3026 图论(prim方法)+BFS求距离
就这么做到了人生中第一道略有难度的组合题哈哈哈哈心里还有点小激动。来认真写一发题解好了。题目概述:有一簇叫做Borg的外星生物,想要扫描整个迷宫建立与其所有下属的联系。迷宫有空格,代表能走的路,有#代表墙壁。有A代表生物,有S代表初始位置。从一个点出发,过程中可以随意分裂,但是行走方式只能是上下左右。然后我们要写一个程序,计算扫描的最短距离。也就是说,当有一个方式连接起
2015-01-14 00:28:03
819
原创 POJ1258 图论(Prim方法)
题目概述:农夫约翰被选举成为了当地村落的村长,他自己有一台高速的宽带,他现在想要把这个宽带分享给村里其他所有的人。自然,家与家之间的连接需要假设宽带,现在给定每两家之间的距离,那么我们要给约翰设计一条宽带架设方法,这条方法要能够连接约翰和其他所有用户,并且总架设长度最短。算法思想:挺明显的最小生成树,就是从农夫约翰那个点为起点,然后可以选择按prim的方法来遍历
2015-01-13 19:24:36
627
原创 codeforces #285 div2 *A B *C
总结的来说,这次还是只有一道题,但是我是属于被第一题坑了。Problem A题目概述:简单到死的代码题,就是题目给你一个式子,然后让你按照这个式子算给定的数,之后比较大小。算法思想:别问我为什么错了....因为我在double之间判断了大小....忽略了题目中所给的其一定能被250整除卧槽。但是其实看很多人double写上去也对了,这可能是因为他们算3/
2015-01-13 00:03:18
567
原创 POJ2475 图论(Prim方法)
题目概述:现有Flatopia这个地方的政府打算修建公路,打算修建的公路应该能够满足从一个地点一定能到达另一个地点,政府的目的是在保证任意一个城镇均能从其他任意城镇到达的前提下,要使修建的那条最长公路的长度最小。翻译一下,就是连通图(保证任意一个城镇均能从其他任意城镇到达),求最小生成树(公路)的最大边(最长公路)。算法思想:用最小生成树中的prim算法,按
2015-01-13 00:02:38
901
原创 codeforces GoodBye 2014 *A *B C(未完)
嗯重复一次,题目中带星号的是当时我没做出来的题。真是很抱歉,因为这次做的非常不好,所以也就一直拖更,没有写这一round的题解。Problem A题目概述:算法思想:
2015-01-12 12:56:43
659
原创 USACO 1.5.1 Number Triangles
某类型的DP问题。题目概述:给定一个数字三角,第一行1个第二行2个以此类推,我们要计算出来每一行取一个数(每相邻两个数在三角中的位置必须相邻),然后这样能够得到的最大结果是多少。算法思想:题解中全是DP,从最下层往上归纳,但是我没有依照这种方法,我用的是先读取所有数组,然后从上往下改数组的值这样做,也成功了。BTW,可以用滚动数组优化空间复杂度~
2015-01-11 23:29:07
556
原创 USACO 1.4.2 Mother's Milk
这题是倒水问题啊,为什么那么多人用深搜呢不懂。题目概述:题目大概是说有ABC三个水桶,最开始的时候C是满的,其他都空,然后我我们的各种操作就是互相倒来倒去,每一次都倒到不能倒为止(被倒的满了或者是倒的空了)。但是不会有水溢出来,计算当A是空的时候,C中所有可能出现的水量。算法思想:因为我第一眼看和POJ3414十分相似,我就直接用广搜做了。数据量范围
2015-01-10 12:46:26
525
原创 USACO 1.4.1 Arithmetic Progression
嗯到了第四个section,好吧认真一点。这题NOCOW上有更快的解法,下面也会详细说,估计我这个方法是最慢的一种了。题目概述:找等差数列,给定等差数列的长度n,和另一个数q,等差数列要求每一个数都可以表示成 i^2+j^2 , 0算法思想:我自己的想法概括起来就只有两点,首先预处理一个b数组,记录了这个数能不能写成 i^2+j^2 的形式。其次
2015-01-08 23:07:37
663
原创 USACO 1.3.5 Wormholes
这题是我觉得前三小节里最难的题了,没有之一。题目出的还是挺好的,至少能够锻炼recursion的能力。感觉纯粹就是DFS+回溯的方法。题目概述:这道题是说农夫的院子里面出现了一些虫洞,虫洞嘛就是从一个出来就到了另一个地方,虫洞总是两两配对且随机组合,且位置由x,y,z坐标给出。现在已知有一只只会沿着正x方向行走的奶牛行走于虫洞之间,那么我们要计算在给定地图下,对
2015-01-08 18:00:20
646
原创 USACO 1.3.6 Ski Course Design
题目概述:这道题是说农夫有n个山峰,现在已知我们的目的是要让农夫的所有山峰中最高的山和最低的山的差值不超过17,每改一单位长度的山高x的花费为x^2,每个山峰最多改一次。那么求改到满足要求的山峰的高的最小花费为多少。算法思想:这道题开始的时候我有一个错误的思想,就是先排序,检查最后一位和第一位的差值是不是大于17,如果是的话进行对应的砍/提高操作并改变cost,
2015-01-08 15:30:23
621
原创 USACO 1.3.4 Combination Lock
这题真是够繁琐,大概就是用一个三重循环去检验三个数字是否能够满足题目的要求。题目概述:这题是说给定两个密码,一个是农夫的,一个是系统自己的,都是三位有序数组。之后要求输入的数字的密码中的每一位都不和其中一个正确密码相差两位。最后输出这样的密码解的个数。算法思想:这道题我开始想尽量减少循环层数来着,就是说直接先检验第一个数,然后如果在第一个数满足条
2015-01-07 21:21:46
615
原创 USACO 1.3.3 Prime Cryptarithm
如此多的循环次数竟然还能过,看来我对运行时间的估计还需要提高提高。题目概述:链接:http://cerberus.delosent.com:791/usacoprob2?a=4eAR5fGw7OX&S=crypt1嗯这道题是说我们要从给定集合里面做一个竖式乘法,是一个三位数乘以两位数。这个竖式乘法中出现的所有数(包括乘数,中间步骤出现的数)都要满足在这个集合里面,并且要
2015-01-07 00:46:26
710
原创 USACO 1.3.2 Barn Repair
题目概述:这道题是说在一个风雨交加的夜晚之后农夫家的院子倒了,然后他的牛不能置之不理就要修。但是呢农夫自然想要买最少长度的木板,供应商可以给他提供任意长度的木板,但是总数量是有限制的,我们的目标就是算出这个最短长度。算法思想:很明显的贪心好么说动规的确实厉害但是这么水的题不适合用那高级的方法。大意就是,先开出一个记录每个牛所在位置的数组,然后再开一个记录两个
2015-01-01 23:50:48
613
原创 做题时候遇到的迷之问题
下列列举了一些奇怪的情况,经常是做了四五个小时觉得自己完全没有错误但是仍然AC不了的case。可能是我自己有很多东西没有熟练吧。每一阶段训练结束之后都要回过头来看看这些题看看能不能解决。1. POJ 2240。迷之WA这道题是我练Bellman-Ford的时候的一道题,开始做这道题的时候也就是用Bellman-Ford算负环,然后WA,网上一搜看到有人是用了n次Bell
2015-01-01 23:08:37
651
原创 POJ1125 股市谣言传播 图论(Floyd最短路)
题目概述:这道题的大意是说,在股市中特定的人之间都有各自的联系,且对于每一条关系,从一个人传递谣言到另一个人的时间是不同的。然后我们的目标是要散布一条谣言,判断出应该从谁开始传播,才可以让这条谣言传播完整个人际关系网络,并且算出传递到最后一个人的时间是多少。另外说一句,这道题的数据非常弱的,估计没有多少个超过20的点的图。而且看别人的博客也没有输入非连通的情况。算法思想
2015-01-01 21:10:35
846
1
原创 USACO 1.3.1 Mixing Milk
题目概述:这道题的核心就是给一对一对的数据,第一个值是单价,第二个值是数量。然后让你算达到某一个数值最少的花费。算法思想:蛋,最最开始的时候我以为要买必须全买,心里还不知道怎么做,结果看了一个样例发现是可以只买一部分的卧槽,那这题这么水!嗯唯一要注意的就是map这货不能重复插入。代码部分:#include #include #in
2014-12-30 03:27:21
651
原创 USACO 1.2 Problem 3 Name That Number
开始好好写解题报告的代码注释了呜呜。题目概述:把中心翻译过来:要给奶牛命名,一个奶牛有好几种可能的名字,找到在字典中出现过的奶牛的名字。字典包含5000以下的字符串,每个字符串小于20字母。算法思想:其实可以自然而然有两种想法,第一种是读入一个数,然后计算出其所有可能出现的组合。比如题中的4734所对应的各种奇怪字母字符串。然后对于每一个字符串,都去字典
2014-12-30 02:51:22
660
原创 USACO 1.2 Problem 5 Dual palindromic
不做解释,有心看我上一篇就好。完全抄上一篇。#include #include #include using namespace std;int n, t;char c[21] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'
2014-12-30 01:24:06
602
原创 USACO 1.2 Problem 4 Palindromic Square
嗯好久不做USACO,想了想不论如何还是要把这个OJ刷通关的,否则无法纪念我的生涯。题目概述:给定一个进制n,然后让你检验10进制下的1-300在n进制下的平方数是不是回文数,是的话把该数和其平方都用n进制打印出来。算法思想:这个题一共就有两个部分。第一个部分是进制转换,第二个部分是判断回文。因为C++有string这种东西就方便很多,这样就不用费心
2014-12-30 01:07:06
600
原创 POJ2253 蛙跳 图论(Dijkstra变形)
好的吧吃了顿饭回来接着干Dijkstra。这回这道题稍微变形了一下。做完这道题感觉嗯..dijkstra只是一种遍历方式,根据特定的松弛条件来遍历整个图。题目概述:嗯题目描述了两只青蛙,然后第一只青蛙想要努力跳到第二只青蛙那里去,位置是按坐标给的。然后中间可能有一些中介的石头,然后我们要计算的是,为使青蛙跳到目的地,其所需要的跳跃距离的最小值。具体输入条件以及题目描
2014-12-29 20:35:32
644
原创 POJ1062 昂贵的聘礼 图论(Dijkstra)
刚刚学dijkstra算法,卧槽痛苦的干了一下午这个题,从开始学,到模仿别人的代码,到改代码的bug等等一系列的事情。终于感觉有点对这个算法入门了哈哈。题目概述:题目是说有一个探险家想要娶酋长的女儿,但是原始部落嘛就需要聘礼,然后幸好的是这个金币可以由另一些不值金币这些钱的货物抵价,那么我们的探险家先生就拜托我们算一算自己最少花多少钱才能娶回酋长的女儿。然后这个部落的蛋
2014-12-29 18:32:29
660
原创 POJ3259 农场与虫洞 图论(Bellman-Ford求负环)
嗯图论的第二道题,刚刚有一点点入门的感觉www。于是就把心得体会写下来啦。题目概述:主人公农夫有几片农场,然后农场里有各个农田(这个模型化为图的端点),然后各个农田之间有路径(这个模型化为图的边),然后有的边是正常的无向边,以及有的边是有项的虫洞。开始的时候时间为0,通过一条正常边会加时间,通过虫洞减去时间。输入N(1-500),M(1-2500),W(1-100)
2014-12-29 14:23:03
1116
原创 POJ1860 换零钱套利 图论(Bellman-ford)
第一次做图论的题,所以如果下面的话有说的不对的还请见谅。题目概述:我们的主人公是一个套利商人,通过在各个零钱兑换点来回来去换钱来得到最大的利润,零钱点的信息有零钱兑换率,手续费。我们只需要判断最后他手里的钱是不是能增加就好了。思想就在于算“正权环”。算法思想:我们用Bellman-Ford来做这道题,模型化的方法就是每一种货币当作图的一个点,每一种e
2014-12-28 23:24:32
1164
原创 POJ3414 模拟倒水问题 BFS记录路径
卧槽!被struct折服了!以后就用它了!题目概述:这道题就是经典的倒水问题,不禁感慨一句以前需要人脑来做的东西现在直接计算机模拟就够了。给定三个数字,前两个数字表示的是两个桶的最大容量,第三个数字表达的是目标容量。一共有三种操作,分别是清空某桶,装满某桶,还有把一个桶里面的水倒入另一个桶(如果会溢出就只能刚好倒满,剩下的水留在自己的桶里)。要求输出最少的操作步数,并且
2014-12-28 19:21:18
567
原创 POJ1426 倍数01 BFS(同余模定理)
这道题我想吐槽的是,卧槽为什么我的第一种方法竟然可以AC,这也太不严谨了。题目概述:这道题是说给定一个1-200之间的数n,在他的倍数中找到一个数,这个数的要求是所有位数只为0或者1,输出这个数。算法思想:开始想的是枚举每个倍数,然后每个倍数去检测是不是0还是1,觉得卧槽肯定越界,肯定越界,肯定越界,然后就又想了一下没想出来就去看解题报告了。嗯然
2014-12-28 14:56:33
606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人