2013年7月31日

uva11235 - Frequent values(RMQ)

摘要: 看来传闻不差,数据结构的代码真的很长。。。刘汝佳厚书P198。。。查询优化,,,以下摘自刘汝佳训练指南:把整个数组进行游程编码,用value[],coun[]数组记录第i段的数值和出现次数,用num[p]、left[p]、right[p]记录位置p处所在段的编号和左右端点的位置,,,所以最后只需对3个部分求最大值即可。第一部分,左端,right[L]-L+1第二部分,中间,RMQ(coun, num[L]+1, num[R]+1);第三部分,右端,R-left[R]+1另外要注意:如果L,R在同一段,则答案是R-L+1;代码如下:#include #include #include #i... 阅读全文
posted @ 2013-07-31 21:17 Primo... 阅读(137) 评论(0) 推荐(0)

SDKD Single training #8未完成题目

摘要: A URAL 1108 【已整理】B URAL 1123【已整理】C URAL 1158D URAL 1160 【已整理】E URAL 1105 阅读全文
posted @ 2013-07-31 16:02 Primo... 阅读(98) 评论(0) 推荐(0)

URAL - 1108 Heritage(大数)

摘要: 恶心的大数运算,,,比赛的时候,如果没有模版,一般置后的题目了,,,,题意:要求a,b,c,.....使得1-1/a-1/b-1/c-1/d.......的结果最小。。。代码如下:#include #include #define MOD 100000000 long long ans[100000], last[100000], temp[100000]; int ans_l, last_l; void add() { for(int i = 0; i = 0; i--) i==ans_l-1?printf("%I64d", ans[i]):printf("%0 阅读全文
posted @ 2013-07-31 15:58 Primo... 阅读(165) 评论(0) 推荐(0)

URAL - 1123 Salary(水题)

摘要: 比赛中没作出来的大水题~~题意:给定一个数字,查找大于等于该数字的最小的回文数字。思路:在纸上画画,就知道规律了,回文串以前面不变为原则,这样才能保证最接近原数字的。例如123111要变成123321,但如果123456这样的该怎么办呢。第一步也是变成123321,但是我们发现这样反而变小了,这是因为对应的数位上前面的数字比后面的数字小,这样我们应该从最中间的数字把这个给加上去,反之,如果前面的数字比后面的大,则不用进位,而且如果前面进位标志如果是1的话,则把进位标识改成0即可。因为此时的高位数字变大,已经弥补了前面的进位误差。例如909090第二位上是0,比倒数第二位上的数字小,则进位标志写 阅读全文
posted @ 2013-07-31 15:08 Primo... 阅读(170) 评论(0) 推荐(0)

URAL - 1160 Network(最小生成树)

摘要: 比赛中的比较裸的模版题,直接抄的模版,题意:给定几个需要链接的点以及能够利用的边,要求用这些变将所有的点都链接起来,且所用边长的最大值尽量小。思路:起初,看题意是最小生成树,但题目所给的样例,并不是最小生成树的结果,纠结半天,然后又看了几遍题目,还是不知所云,最后试着把模版敲上去,submit~~然后便ac了,后来问了才知道,这道题确实最小生成树,不过只要所用边的最大值不变,那些权值小的边可以任意加上去,因为题目只是对最大边最小有要求,对边的数量没有要求。代码如下:#include #include #include using namespace std; #define M 1500... 阅读全文
posted @ 2013-07-31 14:32 Primo... 阅读(285) 评论(0) 推荐(0)