自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

llbcys

不一样的烟火

  • 博客(23)
  • 资源 (2)
  • 收藏
  • 关注

原创 poj 1808 Quadratic Residues

平方剩余的问题,题目只要判断是否存在平方剩余就行啦。。 int solve(LL a, LL p) { //判断x*x (-=) a(mod p) 是否存在 LL res = pow_mod(a , (p - 1) >> 1, p); if (res == p - 1) return false; return ture; }

2013-09-28 16:26:48 854

原创 POJ 2142 The Balance

开始就按扩展阿基里德算法去做,但是错了很多次。。‘ 问题出在那个大小的转换。。 AC代码: #include #include #include using namespace std; int fabs(int z) { if(z >= 0) return z; else return -z; } void exgcd(int a,int b,int &d,in

2013-09-27 21:16:48 889

原创 POJ 1006 Biorhythms

这个是这个剩余定理,开始按同余方程的方法求,结果很快就出来了。 AC代码: #include #include #include #include #define N 21252 using namespace std; int w[4],q[4]={23,28,33}; void exgcd(int a,int b,int &d,int &x,int &y) { if(b==0)

2013-09-27 19:01:48 717

原创 POJ 2562

开始题目意思没有看懂,结合测试数据就知道是水题了,就是求有多少个进位。算是在poj上做的最水的一个吧!! AC代码: #include #include #include #include using namespace std; int main() { int n,m,a,b,sum,c; while(scanf("%d%d",&n,&m) && (n || m))

2013-09-27 11:22:51 1318

原创 POJ 2689 Prime Distance

素数的二次筛选。 素数的筛选,数据比较大,不能用常用的方法。因为最大数据是20亿,开根号后就为50000左右,把5万以下的素数表打出,再二次筛选就可以了。 开始的时候把函数写在外面超时,写进去以后就0ms过,这个想不通。。。 AC代码: #include #include #include #include #include using namespace std; int q[6

2013-09-27 10:53:46 758

原创 POJ 1090 生日蛋糕

是个bfs的题目,加剪枝就行。重点是怎样来剪枝。 自己敲了,提交超时——应该是剪枝没有处理好,后来百度看了一下0ms过的代码,发现就差一个剪枝(2*(n-z)/r+y > s)就可以了。 AC代码: #include #include #include #include #include #define maxx 99999999 using namespace std; int n,m

2013-09-25 11:31:50 902

原创 HDU 1239 Calling Extraterrestrial Intelligence Again

是个小搜索题吧!不过也要注意一下剪枝。 需要找到两个数(不妨设为p,q)满足以下条件:     1、 p,q均为质数;     2、p*q     3、a/b 要找到输出所有满足以上条件的p,q中乘积最大的一对p,q。 剪枝: 考虑大于10000的某个质数,不妨设为Q,另一个质数为P,则: a、如果P b、如果P>10,P*Q>100000。 而考虑到a,b的取值范围(1

2013-09-24 21:45:02 718

原创 POJ 1011 Sticks

题目的意思:给定N段长度不超过50的木棍,拼成相同长度的木棍,求这个长度的最小值。 这个题目需要很多的优化: 1.必须从但根长度的最大值maxx开始搜索->sum-maxx;必须满足被总和整除。 2.标记,不要重复使用。按大小排序,可以跳过相同的值。 3.如果搜索返回后长度为0,就可以跳出循环。 AC代码: #include #include #include #include u

2013-09-24 16:33:19 734

转载 HDU 1098 Ignatius's puzzle

题目的关键是f(x)=5*x^13+13*x^5+k*a*x; 由于x取任何值都需要能被65整除.那么用数学归纳法.只需找到f(1)成立的a,并在假设f(x)成立的基础上, 证明f(x+1)也成立. 那么把f(x+1)二项式展开,得到5*( ( 13 0 )x^13 + (13 1 ) x^12 ...... .....+(13 13)x^0)+13*( ( 5 0 )x^5+(5 1

2013-09-21 17:48:40 719

原创 HDU 3579 (Hello Kiki)

中国剩余定理的题目,用扩展欧几里得算法去实现,木有什么特别的吧!!! 今天感觉打同余定理的知识点好打多了吧!!继续。。。 AC代码: #include #include #include typedef __int64 ll; using namespace std; ll gcd(ll a,ll b) { return b == 0?a:gcd(b,a%b); } voi

2013-09-21 11:25:51 835

原创 HDU 1573 X问题

中国的剩余定理。 思路是:先求w数组里面的最小公倍数lcm。方程在小于N的范围的解是a,则a+lcm*x AC代码: #include #include #include using namespace std; __int64 gcd(__int64 a,__int64 b) { return b==0?a:gcd(b,a%b); } void exgcd(__int64 a

2013-09-20 20:44:24 762

原创 POJ 2115 (C Looooops)

打这个纯粹是看书看到这里,看见这个题目,就按数上的打一下,就当理解一下线性同余方程,不过打完了,还有好多疑问!!!! 表示数学真是太博大精深了。。。 代码如下: #include #include #include using namespace std; void exgcd(__int64 a,__int64 b,__int64 &d,__int64 &x,__int64 &y) {

2013-09-20 15:15:56 657

原创 HDU 1124 Factorial

题目的意思是求垒乘以后的结果末尾有多少个0。 数据很大,不可能一次乘下去。所以必须考虑哪些值得乘积末尾是0, 1、首先是10的倍数的末尾一定有0; 2、末尾是5的可以乘以其他数的结果末尾为0;应该注意有25,50,75,(相距5*5=25个距离)这种数结尾的0要比其他的要多一个0; AC代码: #include #include #include using namespac

2013-09-20 10:00:09 759

原创 HDU 2136

数论的题目吧,开始用打表的方法求出素数的位置,后来在去搜索,这样超时了,可能是因为数据的组数比较多吧!!! 如果在打表的时候把小于1000000所有的数全部打上去,直接输出去q[i]的值就行啦!! AC代码: #include #include #include #include using namespace std; int q[1000008]; int ant; void pri

2013-09-19 16:41:48 760

原创 HDU 4255(蛇形填数+BFS+优先队列)

这个题目把代码打完以后,真心觉得蛋疼。不知道改了多久,构建的蛇形二维数组一直有问题。。。 AC代码: #include #include #include #include using namespace std; int q[150][150],w[30000],r[150][150]; int n,m; int c,d; struct node{ int a,b; int pri

2013-09-17 21:13:15 1010

原创 HDU 1242 (BFS+优先队列)

这个题目直接BFS+优先队列;没有其他考虑的,从天使开始搜就行啦!! AC代码: #include #include #include #include using namespace std; char q[208][208]; int w[208][208]; int m,n; struct node{ int a,b; int pri; bool operator<(c

2013-09-17 19:52:04 742

原创 HDU 1026 (BFS+优先队列)

BFS+优先队列,做这个题的时候只要保存路径的前驱就行啦!!其他没有处理。 虽然一次性AC,但是打了好久,手都累了。(还加上改错吧!!) AC代码: #include #include #include #include using namespace std; char q[108][108]; int w[108][108]; int m,n; struct node1{ //

2013-09-17 19:00:42 750

原创 POJ 2312

这个是BFS+优先队列,开始知道的时候就用步伐做优先的值。。 没有考虑在'B' (brick wall) 时候的延迟一步就答案错了几次,不知道错在哪,百度的时候才知道要加。。。 1.基本操作: empty()   如果队列为空返回真 pop()      删除队首元素 push(x)   加入x元素 size()      返回当前队列中元素个数 top()       返回队首

2013-09-17 17:36:50 868

原创 HDU 1492

好久没有做数论的题目了,今天看书的时候看到了几个给力的级数模型,就找了几个题目试试。。 这个题目就是给定正整数n求其有多少个约数。。。 数据比较大(64位),暴力基本没戏。。 化为:n=p1^a1*p2^a2~~pn^an;则总个数sum=(a1+1)(a2+1)~~(an+1); 前面那个分解试叫唯一分解试,在数论里面有很多应用。 15ms把,还算比较快。。 AC代码: #i

2013-09-16 16:40:09 870

原创 UVA 10032(Tug of War)

这个开始的时候就用01背包3维数组,不知超时了多少次了,及其的伤感。后来用vector容器来做就可以防止超时发生了。 简单总结一下vector用法,因为在动规里面经常要用到的。 vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。   vector里面的数据是动态分配的,使用push_bac

2013-09-11 10:19:14 1661 2

原创 湖南第八届 J题-病毒

在开始的时候就进了思维定式,开始了对先满足上升的条件,在解决相等的问题,就这样调试到比赛完也是(Wrong Answer)。伤感及........ 后面问了同学,说要先判断相等再保证上升,也没有说清理由是什么。就试着打了一下就过了。 AC代码: #include #include #include #include using namespace std; int dp[1008][1008

2013-09-08 10:43:26 850

原创 RMQ with Shifts

湖南第七届ACM的最后一题,看了大家都知道是线段树,比赛的时候以为是把shift里面的数排序在重新放进去,所以没有AC啦。 完了以后同学说了是把数据左移一位放进去就可以了。 还有因为数据很大,不能用cin输入会超时,事实证明额超了很多次 AC代码: #include #include #include #include #include using namespace std; int a

2013-09-05 17:07:16 772

原创 POJ 1463 Strategic game

其实这个和那个没有上司的晚会是一个类型的题目吧!! 几乎一样,都是个从根节点网下搜的树形动规。 1、dp[i][0],表示在结点 i 没放置士兵的情况下,看住以结点 i 为根的子树的所有边所需的最少士兵; 2、dp[i][1],表示在结点 i 放置士兵的情况下,看住以结点 i 为根的子树的所有边所需的最少士兵。 状态转移: 1、dp[i][0+=dp[j][1],j 是 i 的儿子

2013-09-02 17:42:41 661

匹配理论及匈牙利算法

网络流的资源吧!很任意懂的那种。

2013-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除