自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一点一点的进步

  • 博客(71)
  • 资源 (4)
  • 收藏
  • 关注

原创 [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏 记忆化搜索

奶牛们又在玩一种无聊的数字游戏。输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果。在游戏的开始,每头牛都会得到一个数N(1<=N<=1,000,000)。此时奶牛们的分数均为0。如果N是奇数,那么奶牛就会把它乘以3后再加1。如果N是偶数,那么这个数就会被除以2。数字每变动一次,这头奶牛就得到1分。当N的值等于1时,游戏结束,此时的分数就是这头奶牛在这局游戏中的最终得分。 以下是N的初始值为

2012-11-29 23:23:31 2926

原创 [Usaco2008 Mar]Cow Travelling游荡的奶牛 BFS

奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走, 试图找到整块草地中最美味的牧草。Farmer John在某个时刻看见贝茜在位置 (R1, C1),恰好T (0 < T <= 15)秒后,FJ又在位置(R2, C2)与贝茜撞了正着。 FJ并不知道在这T秒内贝茜是否曾经到过(R2, C2),他能确定的只是,现在贝茜 在那里。 设S为奶牛在T秒内从

2012-11-29 23:20:32 1702

原创 [Usaco2008 Nov]mixup2 混乱的奶牛 简单状压DP

混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= 25,000). 奶牛为她们的编号感到骄傲, 所以每一头奶牛都把她的编号刻在一个 金牌上, 并且把金牌挂在她们宽大的脖子上. 奶牛们对在挤奶的时候被排成一支"混乱"的队伍非常反感. 如果一个队伍里任意两头相邻的奶牛的 编号相差

2012-11-29 23:17:17 2341

原创 [Usaco2008Nov]安慰奶牛cheer 最小生成树

Farmer John变得非常懒, 他不想再继续维护供奶牛之间供通行的道路. 道路被用来连接N (5 <= N <= 10,000)个牧场, 牧场被连续地编号为1..N. 每一个牧场都是一个奶牛的家. FJ计划除去P(N-1 <= P <= 100,000)条道路中尽可能多的道路, 但是还要保持牧场之间 的连通性. 你首先要决定那些道路是需要保留的N-1条道路. 第j条双向道路连接了牧场S_j

2012-11-29 23:12:28 3043

原创 [Usaco2008 Oct]建造栅栏 DP

勤奋的Farmer John想要建造一个四面的栅栏来关住牛们。他有一块长为n(4<=n<=2500)的木板,他想把这块本板切成4块。 这四块小木板可以是任何一个长度只要Farmer John能够把它们围成一个合理的四边形。他能够切出多少种不同的合理方案。 注意: *只要大木板的切割点不同就当成是不同的方案(像全排列那样),不要担心另外的特殊情况,go ahead。 *栅栏的面积要大于0. *输

2012-11-29 23:06:08 1373

原创 [Usaco2008 Mar]River Crossing渡河问题 简单DP

Farmer John以及他的N(1 <= N <= 2,500)头奶牛打算过一条河,但他们所 有的渡河工具,仅仅是一个木筏。 由于奶牛不会划船,在整个渡河过程中,FJ必须始终在木筏上。在这个基础 上,木筏上的奶牛数目每增加1,FJ把木筏划到对岸就得花更多的时间。 当FJ一个人坐在木筏上,他把木筏划到对岸需要M(1 <= M <= 1000)分钟。 当木筏搭载的奶牛数目从i-1增加到i时,FJ得多

2012-11-29 22:59:55 1610

原创 [Usaco2008 Nov]lites 开关灯 线段树 区间异或及求和操作

Farmer John尝试通过和奶牛们玩益智玩具来保持他的奶牛们思维敏捷. 其中一个大型玩具是 牛栏中的灯. N (2 <= N <= 100,000) 头奶牛中的每一头被连续的编号为1..N, 站在一个 彩色的灯下面.刚到傍晚的时候, 所有的灯都是关闭的. 奶牛们通过N个按钮来控制灯的开关; 按第i个按钮可以 改变第i个灯的状态.奶牛们执行M (1 嚓。好久没写线段树

2012-11-29 22:33:15 3075 3

原创 [Usaco2008 Oct]笨重的石子 DP

贝西喜欢棋盘游戏和角色扮演类游戏所以她说服Farmer John把她带到玩具店,在那里,她购买了三个不同的骰子,这三个质量均匀的骰子,分别有S1,S2,S3个面。(2 <= S1 <= 20; 2 <= S2 <= 20; 2 <= S3 <= 40). 贝西掷啊掷啊掷啊,想要知道出现几率最大的和是多少。 问题给出三个骰子的面数,让你求出出现几率最大的和是多少。如果有很多种和出现的几率相同,那

2012-11-29 22:30:25 1018

原创 [Usaco2007 Jan]Running贝茜的晨练计划

奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的 运动方式是每天进行N(1 <= N <= 10,000)分钟的晨跑。在每分钟的开始,贝茜 会选择下一分钟是用来跑步还是休息。 贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第i分钟内跑 步,她可以在这一分钟内跑D_i(1 <= D_i <= 1,000)米,并且她的疲劳度会增加 1。不过,无论何时贝茜的疲劳度都不能超过

2012-11-29 22:27:40 3676

原创 [Usaco2008 Oct]灌水 最小生成树

Farmer John已经决定把水灌到他的n(1看起来挺难?其实稍微有点变形的题目而已。我们虚拟出来一个结点,这个结点跟每块农田连边,权值分别为每块农田建造水库的花费。然后其他边都正常连。然后求最小生成树即可。一般来说知道超级源点,这道题就可以随便屠了。这种加虚拟结点的方法在图论的很多问题中都会出现。#include #includ

2012-11-29 22:19:01 2224

原创 BZOJ 1058 [ZJOI2007]报表统计

小Q的妈妈是一个出纳,经常需要做一些统计报表的工作。今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一。经过仔细观察,小Q发现统计一张报表实际上是维护一个非负整数数列,并且进行一些查询操作。 在最开始的时候,有一个长度为N的整数序列,并且有以下三种操作: INSERT i k 在原数列的第i个元素后面添加一个新元素k; 如果原数列的第i个元素已经添加了若干元素,则添加在这些元素

2012-11-29 22:11:17 2140

原创 BZOJ 1012 [JSOI2008]最大数maxnumber

现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:L不超过当前数列的长度。 2、 插入操作。 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。 限制:n是非负整数并且在长整范围内。

2012-11-29 22:04:02 3777

原创 [Usaco2008 Mar]土地购买 斜率优化的DP

农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土 地的长宽满足(1 <= 宽 <= 1,000,000; 1 <= 长 <= 1,000,000). 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以 它们最大的宽, 但是土地的长宽不能交换. 如果FJ买一块3x5的地和一块5x3的地,则他需要 付5

2012-11-27 11:38:06 2804

原创 Project Euler problem 58

找规律。然后遍历就行

2012-11-07 09:27:06 617

原创 Project Euler problem 57

观察这个分子序列  设分子为b序列 ,分母为a 序列则他们满足一下条件a[i] = a[i - 1] * 2 + a[i - 2]b[i] = b[i - 1] * 2+b[i - 2]然后就发现需要高精度import java.math.*;import java.util.*;public class Main { /** * @param args

2012-11-07 09:13:56 503

原创 Porject Euler problem 56

。。还是javaimport java.math.*;import java.util.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int ans = 0; for(in

2012-11-07 08:53:38 586

原创 Porject Euler problem 55

懒得写高精度。直接用java模拟了一下好了import java.math.BigInteger;import java.util.*;public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub

2012-11-07 08:43:27 540

原创 Project Euler problem 54

一道有点复杂的模拟题吧。。 也不算难写 细节上注意一下就行了。。首先就是判断rank。 这个还是好判断的。如果rank一样就要把每个人手中的牌按优先级排列一下,两人按顺序比较这个优先级,说例子吧。 假如是两个对儿的。  优先比较的肯定是大的那个对儿,然后是小的那个对儿,再然后是那个单张的再说一个 有一对儿还有三张一样的。 优先比较的是三张的,再比较一对儿的再一个例子,就有一个对

2012-11-06 23:13:39 594

原创 Project Euler problem 53

就是一个组合数而已硬求就行。#include #include #include #include #include #include #include #include #include #include #define eps 1e-6#define INF 1000000007#define PI acos(-1.0)using namespace

2012-11-06 21:42:55 472

原创 Project Euler problem 52

首先通过观察,可以发现,这个数必然是至少6位数的。因为他乘以6之后还是一样的位数。这就要求他最高位必然是1了。次高位不超过6.然后1倍到6倍的最高位必然都是不一样的。可以这样证明:在1倍到6倍之间。假设x为第i倍的最高位,y为第i +1倍的最高位如果x 与y相等,必然x是通过进位得到的。但是如果x能产生进位,由于y是i + 1倍得来的,所以i +1倍也必然会进位。所以y不可

2012-11-06 21:29:45 668

原创 Project Euler problem 51

这题的话。。还是有点细节问题需要注意的我刚开始猜测这个数可能是6位数所以我就从10W开始枚举素数然后,首先,个位数是不能被换的。 因为一换之后肯定不到8个素数了,光偶数都好几个了然后说了可以不相邻的数来回换。那么你就枚举呗。注意的是,你要是能换出来一个比我们枚举的那个素数要小的素数的话。 注意。。换出来小的数是可以的,但是比他小的素数是不可以的。所以。。

2012-11-06 21:13:50 734

原创 Project Euler problem 50

暴力搞之首先要记录的是从第1个素数到第 i个素数的连续和这样任意连续区间的素数和就能在O(1)时间内搞出来然后就枚举就行了。#include #include #include #include #include #include #include #include #include #define eps 1e-6#define INF 100

2012-11-06 15:13:03 481

原创 Project Euler problem 49

直接暴力搞#include #include #include #include #include #include #include #include #include #define eps 1e-6#define INF 1000000007#define PI acos(-1.0)using namespace std;bool tag[10001];

2012-11-06 14:43:58 470

原创 Project Euler problem 48 处理乘法取模爆long long的方法

呵呵  这题的猥琐之处在于你用快速幂中间过程都有可能爆了long long 不过我有处理爆long long 的方法乘的时候用二分的方法去搞就没问题了。详见代码#include #include #include #include #include #include #include #include #include #define eps 1e-6#de

2012-11-06 14:14:28 1775

原创 Project Euler problem 47

还是暴力我先试着把15W个数进行素因子分解然后4个的存起来然后搜一下发现还真的在15W以内#include #include #include #include #include #include #include #include #include #define eps 1e-6#define INF 1000000007#define

2012-11-06 14:04:42 715

原创 Project Euler problem 46

直接暴力。。暂时不会别的做法

2012-11-06 14:03:34 451

原创 Project Euler problem 45

观察一下就发现。  只要满足第3个序列 ,一定会有第一个序列所以搜第3个序列,看满足第二个序列不。对于第n项的第3个序列。值为m = (2 * n  - 1) * n然后就要找一个第二序列的项x 使得 x * (3 *x - 1) = 2 * m可以发现x 的下界和上界分为sqrt(2* m / 3)和sqrt(2 * m/ 3) + 1 然后看能不能搞就行了

2012-11-06 13:37:01 654

原创 Project Euler problem 44

哎。。。直接往上枚举就行了。不过我还是加了点小的优化。。但是很纯暴力相比感觉没优化多少。。都是O(n ^ 2)的#include #include #include #include #include #include #include #define eps 1e-6#define INF 1000000007#define PI acos(-1.0

2012-11-06 12:56:59 945

原创 Project Euler problem 43

这题的话直接next_permutation搞也行10!也就300多W或者像这样,DFS着来搞  效率会快很多#include #include #include #include #include #include #include #include #include #include #include #define MAXN 1111

2012-11-05 21:09:18 497

原创 Project Euler problem 42

模拟题而已#include #include #include #include #include #include #include #include #include #include #include #define MAXN 1111111#define MAXM 400005#define INF 2000000007#define PI

2012-11-05 20:18:04 490

原创 Project Euler problem 41

因为9个数的和是45 ,8个数的和是36,6个数的和是21,5个数的和是15所以只用试一试7个数和4个数好了实际上就试一下所有的全排列 ,然后凑成数,检查一下是不是素数7!才5000多#include #include #include #include #include #include #include #include #include #include

2012-11-05 20:10:34 469

原创 Project Euler problem 40

这题的话直接模拟也行或者用一种跟数的位数相关的方法我们注意到1位数有9个2位数90个3位数900个4位数9000个依次类推然后就可以知道我们要查的第几位在几位数中出现#include #include #include #include #include #include #include #include #include

2012-11-05 19:53:19 439

原创 Project Euler problem 39

如果把problem 9的那篇论文看了之后算法也就出来了#include #include #include #include #include #include #include #include #include #include #include #define MAXN 111111#define INF 100000007using na

2012-11-05 17:32:47 527

原创 Project Euler problem 38

这题主要看观察能力他要找最大的。就得比题目给的那个要大给的是9开头的。所以呢。要找的肯定也是9开头的。首先看90几行不,乘1乘2乘3后发现位数不能到9位再看900多再看9000多发现9000多有可能行乘以2后是5位数然后凑一块就是个9位数然后枚举9000多就行了#include #include #include #includ

2012-11-05 17:07:11 530

原创 Project Euler problem 37

试探性的筛了个500W素数表然后一个一个素数的试了试11个都给找出来了最大的也就70多W#include #include #include #include #include #include #include #include #include #include #include #define MAXN 111111#define INF 100000

2012-11-05 16:17:12 404

原创 Project Euler problem 36

一百万以内的回文数不超过2千个。如果直接遍历1到100W显然有点慢枚举每一位的数字然后生成回文数就快多了然后再判断是不是二进制回文。#include #include #include #include #include #include #include #include #include #include #include #define

2012-11-05 15:49:27 437

原创 Project Euler problem 35

直接模拟?反正我是这么干的

2012-11-05 15:32:03 463

原创 Project Euler problem 34

主要是算出一个上限注意到一个8位数无论如何也是满足不了条件的所以上限肯定小于1千万 再准确点就是 7*9!

2012-11-05 15:22:04 404

原创 Project Euler problem 33

首先对于我这种英语不行的人看懂题意确实花了一点时间题目题意如下49/98 = 4/8  这个式子是正确的,但是对于一个没有数学基础的人可能认为是上下把9弄没得到的结果  这种理解是错误的。但是这种符合这种理解的式子确实是存在的,首先诸如30/50 = 3/5 我们认为是平凡的。 而我们要找一些不平凡的,也就是不包含0的分子分母都由两个数字构成,式子要求小于1已知满足条件的式子有

2012-11-05 15:13:14 498

原创 Project Euler problem 32

直接暴力吧粗略算了一下  上限不超过1W

2012-11-05 14:36:43 436

归并排序实现

使用C++实现了归并排序,有注释,简明易懂

2013-06-11

堆排序实现

使用C++实现了堆排序,有注释,简明易懂

2013-06-11

插入排序实现

使用C++实现了插入排序,有注释,简明易懂

2013-06-11

java 俄罗斯方块源码

代码可直接运行, 主要功能有基本的俄罗斯方块,加速,开始,暂停等

2011-12-19

空空如也

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

TA关注的人

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