2013年9月5日

素数筛法求素数(线性时间)

摘要: 摘自:http://blog.csdn.net/once_hnu/article/details/6302283逆向思维的典型应用!1)普通方法判断素数:O(n*sqrt(n))2)筛法求素数:线性时间,即O(n)// 1:这是最原始的筛法,还有待优化 #define Max 1000000bool prime[Max];void IsPrime(){ prime[0]=prime[1]=0;prime[2]=1; for(int i=3;i<max;i++) prime[i]=i%2==0?0:1; int t=(int)sqrt(Max*1.0); ... 阅读全文

posted @ 2013-09-05 22:22 Gddxz 阅读(174) 评论(0) 推荐(0) 编辑

2013年9月3日

hdu4278 Faulty Odometer(反常规则水题--八进制)

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4278题目描述:1)一个损坏的里程表,计数时会自动跳过3和8,其他正常;2)给出里程表的示数,求实际的里程数;题目分析:1)这个题刚开始我的错误思路:分别每位求跳过多少次,比如说在150在十位上跳过3次,因为3_,8_,13_各跳过一次, 最后需要在总数150中减去3x10,但这样做是不可行的,因为低位上的需要用到高位上的跳过数,而前一位的跳过数又和前前位有关,搅在一起混乱了(后来证明这个想法有问题,因为后面是每八位进1,所以每次多跳过得乘以8^n,这样八进制和十进制搅在一起,彻底分不清了)。2)之 阅读全文

posted @ 2013-09-03 08:02 Gddxz 阅读(306) 评论(0) 推荐(0) 编辑

2013年8月18日

HDU4588 Count The Carries(数字统计与数字规律)

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4588题目描述:1)给两个数a,b;2) 将a,b之间的数化为二进制相加;(包括a,b)3)求总共的进位个数;解题思路:1)进位首先是在算术相应位对齐相加过程中产生的;2)所以要模拟算术相加过程,总结怎样得到进位个数;3)所以,另外考虑到时间上的可能性,不允许从a到b逐个数相加计算进位; 所以考虑从a到b所有数同时对应位对齐,找出相加的规则,总结出进位的统计方法;4)由于二进制只有0,1,所以某位为0对进位没有贡献,只有1才对进位产生贡献; 所以考虑分别统计所有从a到b某一位的1的个数之和;比如统. 阅读全文

posted @ 2013-08-18 23:55 Gddxz 阅读(345) 评论(0) 推荐(0) 编辑

HDU4596 Yet another end of the world(数学公式推演+数论定理--2013南京邀请赛)

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4596题目描述:1)给N组数,每组X,Y,Z三个数2)是否存在一个数ID使得同时满足:Yia1x1-a2x2=b2-b1 线性不定方程组 有整数解的条件??? 数论定理:线性方程组有整数解的条件是b2-b1是gcd(x1,x2)的整数倍数 另外我们来研究一下同一个数对不同数同时取余的规律: 可以发现: 1)同一个数对不同数a,b同时取余结果的周期是a,b的最小公倍数; 2)同一个数对不同数a,b同时取余结果的所有差值间隔为最大公约数, 即设a,b的最大公约数为x,则他们的所有差值只可能为:0,x,2 阅读全文

posted @ 2013-08-18 08:43 Gddxz 阅读(199) 评论(0) 推荐(0) 编辑

2013年8月14日

HDU4666 Hyperspace(数学推理+数据结构)

摘要: 问题领悟:1)求两点的曼哈顿距离2)求n个点中最大的曼哈顿距离(朴素算法:O(n^2))[在不考虑删除操作的情况下]3)加入删除操作,如果前面已求得的最大距离若有一个被删去,则需要重新计算最大曼哈顿距离,最坏情况时间复杂度可达O(n^3);远远超出。问题思考:1)首先能不能找到问题的一种朴素算法,使复杂度为O(n^2)的,在10s时间下可以试试;2)期待这类O(n^2)问题的更高效的算法!A.思考方向1:可能要用数据结构优化到O(nlg(n));3)不存在,那就考虑问题本身具有的特殊性,或挖掘出问题本身的性质和规律:曼哈顿距离:|x1-x2|+|y1-y2|求最大值。怎么考察此式的性质?将式拆 阅读全文

posted @ 2013-08-14 20:43 Gddxz 阅读(200) 评论(0) 推荐(0) 编辑

HDU4671 Backup Plan(构造序列-多校七)

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4671解题回顾: 以m为列数,n为行数: 1)当n=m时:先考虑第一位:先给每个服务器分配n/m个数据库,再给前n%m个服务器各分配一个;再考虑第二位:对于首位相同服务器的数据库,从余数位的下一位开始,依次赋值赋值第二位,第三位至最后位随便排,只要不和前面相同就行了。3)程序实现:小小的序列编排中,隐含着许多特殊的地方。1)实现起来较为顺利,在实现2)时,有个特殊情况:余数位的下一位在当前i位处和从在i位下一位处,得到的序列是一样的(一直没找到这个特殊情况),还是无奈之下敲了一组特殊的测试数据发现. 阅读全文

posted @ 2013-08-14 15:13 Gddxz 阅读(160) 评论(0) 推荐(0) 编辑

2013年8月13日

POJ1159 Palindrome(最大回文串长度)

摘要: 回文串:给一个串,求最少增添几个字符能使之成为回文串例如:Ab3bd首尾增添2个dA成为Adb3bdA或dAb3bAd解法:动态规划;1)和杭电多校一题统计回文串的题很像,考虑能不能直接套用;2)还是先从动态规划的基本元素分析吧;设状态:dp[i][j]为第i位与第j位之间的串需要多少个最少字符才能组成回文串3)尝试写状态方程并判断最优子结构性质,无后效性(有向无环):Dp[i][j]=dp[i-1][j-1];(s[i]=s[j])Dp[i][j]=dp[i-1][j]+1发现dp[i][j]代表未配对的字符的值写方程很困难,那就换一个等价的角度,求最长回文串长度,只要拿总长度减去此值就可以 阅读全文

posted @ 2013-08-13 00:37 Gddxz 阅读(204) 评论(0) 推荐(0) 编辑

POJ1260 Pearls(多重捆绑成0-1背包)

摘要: 该怎样去思考?1)有n种物品,2)每选一种都要多加上10件,3)每种物品有件数要求,也可选价格更高的代替,问:求最少的耗费如果暂时忽略掉条件2)3)的价格替换;那么装化为多重背包问题?1.背包问题:1)容量为总个数,且必须装满;2)每件物品权值均为1;2.从具体问题分析:主要是在选和不选上浪费那10个额外的物品的钱,如果没有这个条件的话,那当然是尽量选钱数少的,也就是优先选满钱数少的,但现在有了这个条件,主要分有还是没有这个额外的钱数,也就是选和不选的问题,也就是把每种物品总个数捆绑成一个总物体代替,转化成0-1背包问题由于一旦某处选了,则之前的必然全部选完,所以只需每次枚举上一次的选择点,取 阅读全文

posted @ 2013-08-13 00:32 Gddxz 阅读(184) 评论(0) 推荐(0) 编辑

2013年8月11日

MU Puzzle(推理找规律)(多校第六场))

摘要: 【题目链接】:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1008&cid=460【解题思路】:这题初看起来情况很复杂,动态性很高,但注意到一个很特殊的地方,就是他每次都是以MI这个为起点的,只要先从这个往下推,看得出的串有什么规律就行了。这类题就是推导出数学式子,然后利用数学公式推导出条件。1) 由MI 往下推可得MII,MIIII,MIIIIIIII……等后跟着2^n个I,而任意位置3个I可组成一个U,如果不消去UU,则以后每次翻倍后,把U换成I,则必然有2^n个I;2) 而每次消去两个U,则以后再经翻倍,则 阅读全文

posted @ 2013-08-11 11:21 Gddxz 阅读(237) 评论(0) 推荐(0) 编辑

Unshuffle(深搜加剪枝-hdu4665)

摘要: 【题目解法】:一.深搜加剪枝:为什么n=2000的2^2000种情况可以用深搜?1)我想应该是这题的条件比较强,必须保证已选的序列必须前面的部分完全相等才行,这是一个很强的剪枝条件,应该不用等到构造完序列而很快就能把不符合的剪掉;2)另外题目中说只要找到任何一组就行了,所以一旦找到符合的就直接结束DFS,因此不会全部遍历枚2^2000种情况,这也是一个有效的剪枝条件;3)另外还可以预先将第一个元素分在第一组,这是等价性剪枝,因为结果与分的第几组无关,而只与得到的两个序列有关。二.题解分析 做题时,当时被wa懵了,没有深入分析到题解这一层,我来解释下题解: 分析:由题意一种颜色要么出现2次,要. 阅读全文

posted @ 2013-08-11 09:27 Gddxz 阅读(249) 评论(0) 推荐(0) 编辑

导航