- 博客(27)
- 资源 (1)
- 收藏
- 关注
原创 10474--Where is the Marble
///排序后查找#include#include#define LOCALint num[10005],test;int n,q,cas=1;int cmp(const void* _a,const void* _b){ int* a=(int*)_a; int* b=(int*)_b; return *a-*b;}void decide(){
2010-05-30 14:14:00 414
原创 729--The Hamming Distance Problem
///组合问题,主要利用生成法,方法见转载的文章////也可以用增量构造法,算出所有的增序排列但只输出符合要求的排列#include#include#define LOCALint n,h,k;int t[20];int find(){ for(k=n-1;k>=1;k--) { if(t[k]==1&&t[k-1]==0) return 1;
2010-05-29 22:46:00 463
原创 10098--Generating Fast
///也可以用STL函数#include#include#include#define LOCALchar s[15],res[15];int len;int cmp(const void*_a,const void* _b){ char *a=(char*)_a; char *b=(char*)_b; return *a-*b;}void p
2010-05-29 11:44:00 378
转载 排列组合
1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果2。算法来源与互联网组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。 然后从左到右扫描数组元素值的“10”组
2010-05-28 23:38:00 559
原创 146--ID Codes
本题有两种方法:方法一:递推法///递推法:根据规律,从最后面字母ai依次向前搜寻,若找到第一个字母bi比ai大,///则将ai与bi交换,并将原bi之后的字母从小到大重新排列;若未找到则从次最后搜寻,如此等等#include#include#define LOCALchar s[55],ch;int len;void decide(){ int i,j
2010-05-28 23:14:00 547
原创 131--The Psychic Poker Player
////利用生成子集来判断哪几张牌需要放弃,然后将deck中前几张牌移入hand中///模拟判断所得的值#include#include#define LOCALchar hand[7][4];char deck[7][4];char temp[7][4];char s[6];int num=0,max;char subset[35][6];char r
2010-05-26 23:30:00 970 2
原创 11205--The broken pedometer
///暴力求解,先生成p的子集,然后逐个子集判断,每个子集均为1和0的序列///为1时表示选这个位,否则为不选。则问题化简为求含有最少个1的子集,并保证只观察///1所在的位时,输入的n个序列不会重复///题目的测试数据不是很严密,如输入1 1 1 0时有的得到0却仍然能通过,///这主要是没有注意到答案至少为1不可能为0#include#include#inc
2010-05-26 18:02:00 1288 1
原创 10167--Birthday Cake
////暴力求解,本题主要利用生成随机数来试探求解///主要函数有srand():设置随机种子,一般以当前时间来设置随机种子,即为srand((unsigned)time(NULL))///randomize()也是这个效果///rand()生成0-32767范围内的数///rand()和srand()都包含在头文件stdlib.h中///time()是日历时间,time(NU
2010-05-25 18:26:00 585
转载 随机数生成
stdlib.h中函数int rand( void );返回的是一个界于0~32767(0x7FFF)之间的伪随机数,包括0和32767。注意,这里产生的是伪随机数,不是真正意义上的随机数#define randomize() srand((unsigned)time(NULL))#define random(num) (rand() % (num))1.函数rand()产生的是伪随机数,不是
2010-05-24 22:40:00 609
转载 time.h头文件学校
1.概念 “时间”和“日期”的概念,主要有以下几个: Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。 Calendar Time:日历时间,是用“从一个标准时间点到此时的时间经过的秒数”
2010-05-24 19:52:00 1525
原创 C++格式控制
格式控制 当输入/输出的数据没有指定格式,它们都按缺省的格式输入/输出。然而,有时需要对数据格式进行控制。这时需利用ios类中定义的格式控制成员函数,通过调用它们来完成格式的设置。ios类的格式控制函数如下所示:long flags( ) const 返回当前的格式标志。 long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。 long
2010-05-23 00:29:00 1220
转载 pku数学类算法题目总结
pku 1150 The Last Non-zero Digit 和计算排列数末尾有多少个零有些类似,把2,5因子都拿出来,剩下的数的最后一个数字只有1,3,7,9。只有各位上的数字才会影响最后一个非零数字。统计可以用递归来统计,求出1~n中因子2,5的个数,以及3,7,9结尾的数和去掉2,5后新的到的数中3,7,9结尾的数。结果就是 2^(dig[2]-dig[5])*3^(dig[3])
2010-05-22 14:38:00 993
转载 扩展欧几里德算法 线性同余方程 中国剩余定理
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a m
2010-05-21 22:48:00 773
转载 hdu1066 Last non-zero Digit in N!
hdu1066改进的思路和对于大数的处理:(转)为了把0去掉,我们把所有的因数2和5都提出来,放到最后再处理。N!中的N个相乘的数可以分成两堆:奇数和偶数。偶数相乘可以写成(2^M)*(M!),M=N DIV 2。M!可以递归处理,因此现在只需讨论奇数相乘。考虑1*3*5*7*9*11*13*15*17*...*N(如果N为偶数则是N-1),这里面是5的倍数的有5,15,25,35,...,可
2010-05-21 20:59:00 3396 2
转载 取石子问题
Xiao Tang和Xiao Jiang非常喜欢玩一种有趣的小游戏: 有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜, 第一次总是Xiao Tang取. 当然,他们俩都足够聪明,总会采取最优的策略。Input每行会有一个正整数N(NOutput输出获胜人的名字。Sample Input120Sample OutputXiao TangXiao
2010-05-19 20:02:00 729
转载 分解质因数,生成素数表
经典数论题目详解: POJ_3604-Professor Benhttp://acm.pku.edu.cn/JudgeOnline/problem?id=3604这个题目足足花费了我一个下午的时间.经历了数十次TLE,RE,CE后,终于将其摆平.这是一道关于素数的经典好题,之所以这样说是因为它对数学推理和算法复杂度的要求都非常高.先总结一下用到的知识点:1. 筛法生成素数表(次
2010-05-11 20:49:00 2401
转载 背包问题九讲
P01: 0-1背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]
2010-05-11 15:23:00 497
原创 575--Skew Binary
#include#include#include#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif char s[35]; int i; while(1) { scanf("%s",s);
2010-05-11 01:10:00 437
原创 10115--Automatic Editing
#include#include#define LOCALchar in[260],temp[260];char rules[11][82],replace[11][82];int find_replace(char* s,char* ru,char* rep){ int lena=strlen(s); int lenb=strlen(ru); int len
2010-05-10 16:40:00 436
原创 644--Immediate Decodability
#include#include#include#define LOCALchar codes[10][12];int cmp_string(const void* _a,const void* _b){ char* a=(char* )_a; char* b=(char* )_b; return strcmp(a,b);}int deter(char*
2010-05-10 12:52:00 667
原创 10815--Andy's First Dictionary
#include#include#include#include#define LOCALchar word[5002][202];char t;int cmp_string(const void* _a,const void* _b){ char* a=(char* )(_a); char* b=(char* )(_b); return strcmp(
2010-05-10 01:40:00 713
转载 qsort() 和 sort()
转 C++可直接使用的排序函数:qsort(),sort() qsort() 和 sort()(wysuperfly原创 v1.1)//基于c++描述 > 使用C++编译器(VC6,G++等)可以使用STL里的sort()函数或者CRT中的qsort()来排序,这么好的函数我居然才知道,真是孤陋阿~总算摆脱整天冒泡的日子了~~~[注] qsort () 可在任何
2010-05-10 00:10:00 587
原创 10878 - Decode the tape
#include#include#include#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif int i,num; char s[13],t; gets(s); while(1) {
2010-05-09 23:17:00 470
原创 537-- Artificial Intelligence?
#include#include#define LOCALdouble getnum(char *t){ int i,j; char te[100]; double num; memset(te,/0,sizeof(te)); for(i=2,j=0;;i++) { if(t[i]==.||t[i]>=0&&t[i]<=9) t
2010-05-09 22:09:00 718
原创 409-Excuses, Excuses!
#include#include#include#define LOCALchar word[22][22];char excuse[22][75];char s[22];int num[22];int main(){#ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",std
2010-05-09 05:31:00 384
原创 10361--Automatic Poetry
#include#include#define LOCALint main(){#ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif int n; char t; scanf("%d",&n); while(n--) { char s1[
2010-05-09 03:07:00 428
原创 10010- Where's Waldorf?
#include#include#include#define LOCALchar grid[55][55];int d[8][2]={{0,-1},{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1}};int *search(char *s,int m,int n){ int i,j; int a,b,count,c
2010-05-08 21:30:00 536
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人