2012年6月9日
摘要: #include <iostream>#include<fstream>#include<cstring>using namespace std;ifstream infile;ofstream outfile;long long dp[40][800];int n,sum;int main(){ infile.open("subset.in"); outfile.open("subset.out"); infile>>n; //cin>>n; sum = (n+1)*n/2; if(sum % 阅读全文
posted @ 2012-06-09 01:21 geeker 阅读(247) 评论(1) 推荐(1) 编辑
  2012年6月8日
摘要: 题目描述:Preface NumberingA certain book's prefaces are numbered in upper case Roman numerals. Traditional Roman numeral values use a single letter to represent a certain subset of decimal numbers. Here is the standard set: I 1 L 50 M 1000 V 5 C 100 X 10 D 5... 阅读全文
posted @ 2012-06-08 23:51 geeker 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 描述农民JOHN以拥有世界上最健康的奶牛为傲。他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。格式PROGRAM NAME: holsteinINPUT FORMAT:(file holstein.in)第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数。第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种维他命的最小量。第3 阅读全文
posted @ 2012-06-08 11:05 geeker 阅读(384) 评论(0) 推荐(0) 编辑
  2012年6月7日
摘要: 题目描述:http://ace.delos.com/usacoprob2?a=natOyh2BvAP&S=frac1输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数。这有一个例子,当N=5时,所有解为:0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1给定一个自然数N,1<=n<=160,请编程按分数值递增的顺序输出所有解。注:①0和任意自然数的最大公约数就是那个自然数②互质指最大公约数等于1的两个自然数。水题一道,本来不想多说,只是 阅读全文
posted @ 2012-06-07 12:02 geeker 阅读(604) 评论(0) 推荐(0) 编辑
  2012年6月5日
摘要: 题目描述:http://ace.delos.com/usacoprob2?a=natOyh2BvAP&S=pprime因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。写一个程序来找出范围[a,b](5 <= a < b <= 100,000,000)( 一亿)间的所有回文质数;其实这是水题一道,之所以想总结一下,是想揭露一下自己丑陋的实现代码。这道题目其实是让找[a,b]区间段的回文质数,比如151,就是一个回文质数。但是b的可取值给的很大,高达1000 000 000,所以不能直接一个一个的去测试,因为从1一直循环到1 阅读全文
posted @ 2012-06-05 14:34 geeker 阅读(328) 评论(0) 推荐(0) 编辑
  2012年6月4日
摘要: 题目地址 : http://ace.delos.com/usacoprob2?S=milk3&a=noSD7NtGmGx这道题目,其实很简单,但是一开始并没有找到解题思路,因为“误入歧途”。总是试图去用纯数学的方法去解决,换句话说就是去试图找出该问题的规律。但这道题目是被放在USACO简单搜索那一章的,后来无奈用搜索的思路想了一下,茅塞顿开。像这种最单纯的搜索题目,关键问题是,设计搜索过程中的状态表示,然后建立状态跳转的递归关系,最后再分析递归终止条件。比如该题目,由于三个桶的总量是不变的,所以(a,b)表示一个中间状态,表示当前第一个桶和第二个桶的牛奶量,那么 c = mc - a 阅读全文
posted @ 2012-06-04 14:53 geeker 阅读(236) 评论(1) 推荐(0) 编辑
  2012年5月16日
摘要: http://ace.delos.com/usacoprob2?S=clocks&a=3hMw0XdJ4KO枚举暴力搜索法虽然为暴利搜索,不过结合题目的特点还是需要注意一些技巧的,注意该题目的特点:1每种变换方法可以使用0~3次,因为如果使用4的话,正好转一圈,和0等效。2并且每种变换方法在前与在后是等效的。所以根据题目输出要求,最小字典序。该法枚举每条路径,枚举的顺序很重要,因为找到最小的就停止搜索了,所以控制好枚举顺序有些技巧。根据排列组合基础可以知道,该问题的每种path路径为 1,2,3,4,5,6,7,8,9,11,12,13,。。。。998,999,1112,1113,11 阅读全文
posted @ 2012-05-16 00:49 geeker 阅读(316) 评论(0) 推荐(0) 编辑
  2011年10月25日
摘要: 自己的代码超时了。。。不应该啊,方法没错哦,明天检查一下吧,网上看到一份不错的代码,不是针对于该题目,而是打印中间过程的方法,很细致,非常有利于debug#include <stdio.h> #include <string.h> //#define DEBUG #ifdef DEBUG #define debug(...) printf( __VA_ARGS__) #else #define debug(...) #endif #define M 530001 #define N 500001 struct trie_node { ... 阅读全文
posted @ 2011-10-25 00:09 geeker 阅读(282) 评论(0) 推荐(0) 编辑
摘要: //#define DEBUG #ifdef DEBUG #define debug(...) printf( __VA_ARGS__) #else #define debug(...) #endif 这样的话在提交的时候也不用注释掉一些调试的时候需要打印的中间数据了,very good 阅读全文
posted @ 2011-10-25 00:06 geeker 阅读(194) 评论(0) 推荐(0) 编辑
  2011年10月20日
摘要: RMQ问题如果用线段树实现的话,可以实现O(nlogN)的预处理,O(logN)的查询,速度还可以。以求最大值为例,将key定义为区间的最大值。建立树时初始化为负无穷大把任意点a 看成区间[a,a],先把所有的点插入线段树。然后每次用线段树去查询代码如下:#include<iostream>#include<algorithm>using namespace std;const int MIN=-2000000000;//线段树的节点,包括基本域 :左右边界,左右孩子的指针 信息域:keystruct Node{ int ld,rd;//左右边界 Node *lc,*r 阅读全文
posted @ 2011-10-20 19:10 geeker 阅读(494) 评论(0) 推荐(0) 编辑