跳至正文

算法

金明的预算方案 解题报告

  • OI路程

这题刚拿到手,不知道怎么做,后来看到了题目里说每个主件最多有0,1,2个附件,那也就是说对于每个主件及其附件而言,最多有如下几种情况:不买一件;只买主件;买主件及附件1;买主件及附件2;买主件及附件1,2都买。
这么就好DP了,代码如下:

C语言:

#include <stdio.h>[......]

继续阅读

陶陶摘苹果 解题报告

  • OI路程

这种题目我确实不想写解题报告,没什么好写的,说它是贪心都不算,就是简单的模拟下。代码如下:

C语言:

#include <stdio.h>
int apples[10];

int main(void)
{
 int ans;
 int i, h;
 for(i = 0; i <[......]

继续阅读

采药 解题报告

  • OI路程

就是一个经典的01背包,能够把时间看做体积,价值嘛就是价值,代码如下:

C语言:

#include <stdio.h>
#define max(a, b) ((a)>(b)?(a):(b))
int f[1001];

int main(void)
{
 int i, j;
 in[......]

继续阅读

能量项链 解题报告

  • OI路程

额,花了我三四个小时的时间,终于知道了,是动态规划的题目(我以前做过,不过那个时候真是不知不觉过去的。),我以前只做过背包的题目,这个题目是这暑假以来觉得最复杂的题目了,因为非动态规划的代码一看就能看懂,动态规划的,方程没想通你就看不懂代码!
我的方程是:f[i][j] = max(f[i][k -[……]

继续阅读

数列 结题报告

  • OI路程

这一题先把顺序仔细观察一下,可以发现顺序就是n^0, n^1, n^0 + n^1, n ^ 2, n ^ 0 + n ^2….之类的数据,仔细观察能够发现顺序就是先输出n^i次方,再把所有的n^0 ~ n^i-1 和n^i进行相加。
嘿嘿,这题我倒是很自豪,发现了数学方法,仔细观察下,就可以发[……]

继续阅读

Jam的计数法 解题报告

  • OI路程

这题我用的深搜,写来写去都觉得特别麻烦,干脆把从a到b的所有可能都计算出来,然后判断是否比输入的大,是就输出,让计数器加一,到五就退出程序,等下还优化试下,先把这个的代码贴上来。

C语言:

#include <stdio.h>
#include <stdlib.h>
#inc[......]

继续阅读

开心的金明 解题报告

  • OI路程

这题可以说就是01背包的例题,我没什么多余的解释,上代码:

C语言:


#include <stdio.h>
#define max(a, b) ((a)>(b)?(a):(b))
int f[30000];

int main(void)
{
 int n, m;
 int i,[......]

继续阅读

明明的随机数 解题报告

  • OI路程

这题不难,不过我看到大部分的人都是使用的先用快排再去重,有些人是先去重再用快排,我这里就用的是哈希排序,能够以线性时间(O(n))对所有数据实现排序和去重。
没什么好解释的,1~1000,把对应的数字放到相应的数组中就可以了。

#include <stdio.h>
char bucket[......]

继续阅读

NOIP_2002.PJ1:级数求和 解题报告

  • OI路程

这题网上没找到较好的算法(数学方法),只好自己写暴力版本的了。。。这题真的不好做什么报告,提交就是。

#include <stdio.h>

int main(void)
{
 double n;
 int i;
 double ans = 0;
 scanf(%lf, &n);[......]

继续阅读