IT民工
加油!
摘要: 这道题要尽可能的多吃Krusty- burger,尽可能的少浪费时间,也是背包问题。#include<stdio.h>#include<string.h>#define MAXT 10005int a[2], t[MAXT], cnt[MAXT];int T;void dp(){ memset( t, 0, sizeof t); memset( cnt, 0, sizeof cnt); for( int i = 0; i < 2; i ++) for( int j = a[i]; j <= T; j ++) { if( t[ ... 阅读全文
posted @ 2011-12-05 22:15 找回失去的 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 用一个bool数组d,stan和ollie每次取石头时都要想办法让对方输,所以当剩下的石头i,当i大于 a[j] 时,他们都会想办法使对方陷入失败,即使得d[ i - a[j] ]为false。直到取完所有的石头,d[N]为true就是先取的人赢。#include<stdio.h>#include<string.h>#define MAXN 1000005#define MAXM 15int N, M, a[MAXM];bool d[MAXN];void init(){ for( int i = 0; i <= N; i ++) { d[i] = false; . 阅读全文
posted @ 2011-12-05 20:45 找回失去的 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 这道题以前写过,首先block可以摆成三种形式,要求堆在它上面的木块的长和宽都比它小,所以我先将木块根据长的一级升序,宽的二级升序排序,然后枚举一遍在一块木块上可以堆的高度,选择最高的加上,最后找到一个最大高度。#include<stdio.h>#include<stdlib.h>#define MAXD 100typedef struct a{ int x, y, z;}S;S d[MAXD];int N, maxh;int cmp( const void *_p, const void *_q){ S *p = (S *)_p; S *q = (S *)_q; if 阅读全文
posted @ 2011-12-05 19:53 找回失去的 阅读(428) 评论(0) 推荐(1) 编辑
摘要: 这道题要求我们找到一个满足体重是升序,智商是降序的最长的序列。首先将大象的体重做升序排序,这样我们就只要找到排序后的序列的关于智商的最长下降子序列。为了方便操作,定义一个结构体,包含 体重、 智商、 编号。还有定义一个数组来模拟链表,数组存的是点的父节点,然后用输出路径的函数将路径输出。这道题输入比较奇葩,而且我们检查是否正确也会比较麻烦。#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXD 1005typedef struct aa{ int w; int s; int r;}E 阅读全文
posted @ 2011-12-05 18:28 找回失去的 阅读(265) 评论(0) 推荐(1) 编辑