跟POJ 1465 multiple 类是。只不过多了2个条件,长度不能超过500,还有就是 可能不是十进制。
bfs+同余定理,就是用 mod 来判重。G++ 15ms
每次枚举一位,然后记录下路径然后输出就可以。
此题坑点 当n==0 的时候 如果 m个数中有0 那么答案就是0 如果没有0 就是give me the bomb please
这儿坑了我好几次...
分类:
其他好文 时间:
2014-10-30 13:32:13
阅读次数:
195
两道题只是输入输出格式略有不同
给出n,m,m个数
要求生成一个数x,是n的倍数,并且只由这M个数构成(或不能含有这M个数中的任意一个),求最小的x,没有则输出-1(0);
BFS找每一个满足n的倍数的数,用余数判重优化
对于给定两个数A,B,如果A和B模N都相同,设为C,即:
A=x*N+C
B=y*N+C
那么如果在A后面加上一个数字能够被N整除,则在B后面加上这个数...
分类:
其他好文 时间:
2014-10-29 19:24:12
阅读次数:
167
技巧一:对无重复的数据集排序
对于给定的数据集,(2,4,1,12,9,7,6)如何对它排序?
第一种方式、使用最基本的冒泡,快排、基数排序等,最小时间复杂度 0(nlogn)。
第二种方式、使用位数组排序算法。
对于数据集排序,相信大多数都会在第一时间便能想起来,而对于方法二,就需要一定的思考了。...
分类:
编程语言 时间:
2014-10-28 00:52:23
阅读次数:
302
判重+广搜(bfs)】魔板Time Limit: 1000MSMemory Limit: 32768KBSpecial Judge有一个两行四列的魔板,每个格子里有一个1到8的数字(数字唯一),现在我们可以对魔板进行以下操作:1.交换两行的数字。2.将第一列移到第二列,第二列到第三列,第三列到第四列...
分类:
其他好文 时间:
2014-10-25 21:22:07
阅读次数:
421
题意:对于一个n元组(a0,a1,...),一次变换后变成(|a0-a1|,|a1-a2|,...)问1000次变换以内是否存在循环。思路:模拟,map判重代码:#include #include #include #include #include using namespace std;stru...
分类:
其他好文 时间:
2014-10-17 21:50:17
阅读次数:
294
题意:
就是有n*n*n个木块,然后给你m条三维的直线
问这些直线能够消掉多少个木块
思路:
其实就是求m条直线有几个交点
然后就是一个双重循环解决
然后读入的时候需要判重
用三个1000*1000的数组来实现。
注意
3 3
Y=2,Z=2
X=2,Y=2
X=2,Z=2
答案应该是7而不是6,因为三条线交在同一点上。
6的原因是在判断第一条线的时候 和后面两个都有交...
分类:
其他好文 时间:
2014-10-10 13:10:24
阅读次数:
110
题意:
给一张无向图,中午12:00从0点出发(充满电,支持240分钟的路程),在每个点都能充电,充2分钟的电能跑1分钟,每条路按分钟分为若干个时间段,每个时间段内通过这条路的时间为ti,问到达n-1号点最少要多少时间。
分析:
BFS+优先队列。按时间优先出队,要注意将电量的存储*2(当然有其他方法),因为如果充电时间为奇数,用int存会丢失0.5。其次是要跑两个周期(两天)。判重的话有很多方法,较普遍的是开两维,位置和剩余电量,我的方法是开一维松弛,将电量化为0(x.time-x.power)。要小心的...
分类:
其他好文 时间:
2014-10-07 18:43:34
阅读次数:
239
首先,我们要tarjan。。。 然后我们要缩点。。。注意,缩点的时候两个新建的点会有重边,需要判重正常的判重方法是bfs一边,但是我YY的比较奇葩,方法下面将。。。缩好点就变成了一个DAG,然后就类似树形DP的方法求最大权值链我是用记忆化搜索,当dfs某个点p时用数组vis记录一些东西:首先vis[...
分类:
其他好文 时间:
2014-10-06 23:54:12
阅读次数:
333
http://acm.hdu.edu.cn/showproblem.php?pid=5012
先贴一份自己的TLE 代码,
超时应该是因为:
1、cin
2、map判重 map find太花时间
3、string花时间
#include
#include
#include
#include
#include
#include
#include
using names...
分类:
其他好文 时间:
2014-10-05 03:32:27
阅读次数:
239
求X-Y之间和p互质的数的和,典型的容斥问题,求和用等差数列求和,注意首项末项是多少。
首先记录下不修改的答案,离线处理,存下询问,输出的时候,遇到一个操作1,就遍历前面的操作,把修改加上去,注意要判重,只保留最后一次修改。
#include
#include
#include
#include
#include
#include
using namespace std;
typed...
分类:
其他好文 时间:
2014-09-30 00:59:11
阅读次数:
262