摘要: 题目大意:给出一个非降序排列的整数数组a[1...n],对于一系列询问(i, j),求出ai到aj中出现最多的次数。 由于数组是非降序的,可以把数组进行游程编码(Run Length Encoding, RLE)。什么是游程编码呢,比如序列1,1,1,2,2,3,可以编码成(1,3),(2,2),(3,1),其中(a,b)表示有b个连续的a。然后就是RMQ问题了,可以使用Sqare Table算法,预处理时间为O(nlogn),每个查询只需O(1)。 1 #include 2 #include 3 #include 4 #define MAXN 100000+10 5 u... 阅读全文
posted @ 2013-07-12 19:52 xiaobaibuhei 阅读(469) 评论(0) 推荐(0)
摘要: 题目大意:有一个正整数序列,从中间(不是第一个数和最后一个数)拿出一个数,可以得到一个分值,分值计算规则为:这个数乘以它左边的数和它右边的数。重复以上步骤,直至剩下第一个数和最后一个数,计算可以得到的最小分值。 实际上是矩阵链乘问题的另一种表述方式,很不错的题,开始的时候一点没看出来,网上搜素时别人直接说是矩阵链乘,一想还真是,完全是按这个模型构造的问题啊 1 #include 2 #include 3 #define MAXN 110 4 5 int p[MAXN], m[MAXN][MAXN]; 6 7 int main() 8 { 9 #ifdef LOCAL10 ... 阅读全文
posted @ 2013-07-09 14:17 xiaobaibuhei 阅读(143) 评论(0) 推荐(0)
摘要: 求最长公共子序列LCS,用动态规划求解。 UVa的字符串可能含有空格,开始用scanf("%s", s);就WA了一次...那就用gets吧,怪不得要一行放一个字符串呢。 (本来想用fgets的,可是又放弃了,形式麻烦、代码长是一小方面,另一方面fgets把'\n'字符也读入,还要做额外的处理...虽然gets有传说中的缓冲区溢出漏洞,不过多加注意一下就好啦,个人认为代码还没大到要用那些工程性的东西的时候) 1 #include 2 #include 3 #include 4 #define MAXN 1000+10 5 using namespace st 阅读全文
posted @ 2013-07-07 22:39 xiaobaibuhei 阅读(159) 评论(0) 推荐(0)
摘要: 题目大意:给你一个数字n和字体大小s,输出数字的液晶显示。直接模拟,代码如下: 1 #include 2 void draw(int n,int s,int row) 3 { 4 int i; 5 if(row==1) 6 { 7 printf(" "); 8 if(n==2||n==3||(n>=5&&n=0;j--)85 {86 printf(" ");87 draw(digit[j],s,i);88 }89 ... 阅读全文
posted @ 2013-07-03 16:58 xiaobaibuhei 阅读(164) 评论(0) 推荐(0)
摘要: 题目大意:n个学生去旅行,旅行中每个学生先垫付,最后平摊所有费用,多退少补,并且支出差距控制在1分钱以内,求最小的交易金额。 @2013-8-16 以前在zoj做过,把原来的代码直接提交了,虽然AC了,可是记得原来有问题,再一看确实感觉有问题,竟然AC了...然后就自己重写,写完之后总是WA,就放下了,过一段时间在看,再改,提交,仍是WA,太打击人了,不算难的一道题把我虐成这样...今天看World of Seven上的解法时猛然醒悟,自己一直在纠结精度方面的问题,却没发现在向下截... 阅读全文
posted @ 2013-07-03 16:41 xiaobaibuhei 阅读(328) 评论(0) 推荐(0)
摘要: 昨天晚上第一次参加codeforces的比赛,div2的,题不是很难,不过是11:30开始比赛的,做了不到一个小时就不想做了,就去睡觉了。今天下午又有浙大的月赛,看了三道题,没什么思路,就又不想做了...感觉自己好多东西都没学好,还要恶补啊。我原来并不想参加什么比赛的,因为感觉自己什么都不会,想好好系统学一下,可是发现好难,有点枯燥,参加比赛算是一点乐趣吧,而且知道自己的不足与差距,可以有动力去学习,可以以此为驱动去学习,没事参加一些比赛,然后在探索中前进吧 阅读全文
posted @ 2013-06-29 13:41 xiaobaibuhei 阅读(170) 评论(0) 推荐(0)
摘要: 因为晚上有一个cf的比赛,而自己从来没有在cf上做过题,就找了道题熟悉一下。 题目大意:给一个数,判断是否能由1,14,144三个数连接得到。 代码如下: 1 #include 2 #include 3 #include 4 5 bool is_magic(char num[]) 6 { 7 int len = strlen(num); 8 int i = 0; 9 int level = 0;10 while(i < len)11 {12 switch(level)13 {14 c... 阅读全文
posted @ 2013-06-28 19:36 xiaobaibuhei 阅读(205) 评论(0) 推荐(0)
摘要: 今天没事做了一下USACO,就做了一道最简单的题,感觉有点繁琐,又是写头注释又是用文件输入输出的,感觉麻烦,适应不了,没有acm来的直接,不过好在给测试数据和题解,还是不错的,以后看看要不要做吧。贴一下小代码吧,虽然很简单的题,不过纪念一下吧。 1 /* 2 ID: yake.ab1 3 PROB: ride 4 LANG: C++ 5 */ 6 #include 7 #include 8 9 int main()10 {11 FILE *fin = fopen("ride.in", "r");12 FILE *fout = fopen("ri 阅读全文
posted @ 2013-05-18 21:39 xiaobaibuhei 阅读(137) 评论(0) 推荐(0)
摘要: 题目大意:给一个数N,然后给P个数a1, a2 ...... ap,找出1-N这个序列中能被这P个数中的数整除且模7不为5和6的数的个数。 代码如下: 1 #include <stdio.h> 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("in", "r", stdin); 7 #endif 8 int T, N, P; 9 int a[110];10 scanf("%d", &T);11 while(T--)12 {13 scanf("%d%d", 阅读全文
posted @ 2013-05-18 17:32 xiaobaibuhei 阅读(184) 评论(0) 推荐(0)
摘要: 题目大意:给一个栈,从上到下可以表示成一个序列,可以对其进行如下操作:将其中一个元素移到顶部。给你一个初始序列和目的序列,求让初始序列变为目的序列的最小操作次数,给出一个可能的操作步骤。 将目的序列从0到n-1进行编号,然后按这个<字符串,号码>元组对初始序列编号,得到一个序列s,对序列s从右向左扫描,找出从n-1开始的递减序列(递减值为1),将不在这个递减序列里的数剔除出来并排序,从大到小输出编号对应的字符串就行。代码如下:View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <a 阅读全文
posted @ 2013-05-07 23:06 xiaobaibuhei 阅读(268) 评论(0) 推荐(0)