跳至正文

算法

NOIP2005 循环 解题报告

刚看到题目,我不知所措,真不知道怎么做(NOIP我真的是太菜了。)。
到网上找到了一个高手的结题报告(几个题目我都是搜到的他的。),原来可以用DP来解大致的思路是这样子的:
比如这里有一个循环(只是假设,可能没有这个数):123 245 344 123,这就是一个循环数,没错吧?,好,再仔细观察一下[……]

继续阅读

NOIP 过河 解题报告

这题我不怎么说吧,我在网上搜的,到现在为止为什么能这样我还是没想通,只知道这样能过。
就当是个定理吧,记住就是了,这题我不太想解释,看代码吧:

#include <stdio.h>
#define INT_MAX 200000000
int stone[100];
int map[919[......]

继续阅读

USACO 3.2.6 Sweet Butter 香甜的黄油 解题报告

这题一开始我用的那个O(n^3)的算法,叫什么名字我忘了,肯定是超时了咯,因为图是稀疏图,这样是肯定超时的,后来就看标称,看了好久,真没想到标称竟然如此精妙,里面设计了一个能够以O(1)的速度查找元素的功能,整个程序是执行了至多n次Dijkstra算法,然后我在里面增加了一些优化(几乎和时间无关的优[……]

继续阅读

奖学金 解题报告

这是个水题,我直接使用了库函数qsort进行了排序,然后输出前五个就可以了,唯一想要说的就是明天或后天把Glibc中的qsort代码看下,学习一下是怎么对超级巨大的数据量进行快速排序的,一个个交换肯定不是,这些都明天再说吧。

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

继续阅读

2^k进制数 解题报告

这题困扰了我好几天,详细看了别人的题解,自己反复琢磨,终于琢磨透了。
把我的思路讲一下,f[i][j] 表示第i位(从右向左数, 如12中的1是第二位),则很容易得到一个DP:
f[i][j] = f[i – 1][j + 1] + f[i – 1][j + 2] + f[i – 1][j + 3][……]

继续阅读

USACO 3.1 Shaping Regions 形成的区域 解题报告

这题二话不说, 用map[i][j]表示坐标为i, j的点是什么颜色的.. 很快就写出来了, 但是内存超过了,, 内存最多16MB.
没办法, 只好另辟思路, 但是在数据压缩方面我又很弱, 就看标程也花了两三天的时间, 今天终于是看懂了..
用rect记录所有矩形的坐标以及相应的颜色.
程序具体的步[……]

继续阅读

USACO 3.1 Humble Numbers 丑数 解题报告

从这一题开始,, 以后题目我就不贴上来了… 自己去看吧..

这一题开始肯本看不懂,, 后来是反反复复看标程看懂了..

首先要理解这么一个式子吧(算是式子吧“)

已经求出了j-1个丑数,, 现在求第j个丑数

对于每一个素数p乘以一个最小的丑数, 能使积大于第j-1个丑数

在这些乘积中寻[……]

继续阅读