跳至正文

OI路程

NOIP 2006 提高组 1 能量项链

  因为以前做过这一题,所以很快就写出来了,不过在一个细节的地方纠结了好久,具体位置见注释。
  思路和以前是一样的,f[i][j] = max(map[i] map[i + a] map[i + j] + f[i][a] + f[i + a][j – i]); f[i][j]表示从第i个珠子往后[……]

继续阅读

NOIp 2007 提高组 4 树网的核

  这个题目网上有很多题解,不过直接照抄的话确实不太好,我还是说说我自己的过程吧。
  首先,可以知道的是“核”越长越好,确实说不太清楚,看下面的图吧:

NOIp 2007 提高组 4 树网的核 - NeWorldMaker - My S-K-Y
   如果核是A-B的话,A-B距离X的值为B到X的距离,假设为x,即B至X的距离,但是如果核是A-C的话,那么A-C距离X的值就会小于x,[……]

继续阅读

TYVJ 第三题 滑雪 解题报告

  • OI路程
题目:
背景 Background
  成成第一次模拟赛 第三道
描述 Description
    trs喜欢滑雪。他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。
  例如样例中的那个矩形,可[……]

继续阅读

TYVJ 第二题 第K极值

  • OI路程
  思路很简单, 将数据进行一次排序, 取第t个和倒数第t个, 然后倒数第t个减去第t个, 再判断差是否为素数..
  听前辈们说NOIp不能使用库函数qsort, 而我一老使用, 为了避免考试0分的情况, 这里就自己写了一个快排, 当快拍的元素少于15个时就使用插入排序进行排序.
  代码如下:
#in[……]

继续阅读

NOIp 2007 第三题 矩阵取数游戏

  题目困扰了我很久,后来才知道,该怎么解题。
  这题说是说矩阵取数,但是仔细看看能够知道,和矩阵没什么关系,只每行的最大值有关,因为每行之间的最大没有任何关系。那么就将矩阵取数转变成了对数组取数,对数组取数很容易看出来是DP,DP方程如下:f[i][j] = max( 2 map[i] +&nb[……]

继续阅读

NOIP 2007 统计数字 解题报告

  这一题我的思路(应该)是O(nlogn)的,就是进行一趟快排加上对数组进行一次扫描。
  快排直接调用库函数,扫描就是用j记录当前自然数,c记录当前自然数出现的次数,如果num[i]和j相同,c++;不同就输出j和c,然后j=num[i], c = 1。在循环结束后还要将最后一个自然数输出。
  下[……]

继续阅读

NOIP 2008 提高组 双栈排序 解体报告

  • OI路程

  这个题目我的思路很简单,就是读入一个数据,判断是否小于s1的顶元素,如果是则讲数据压入s1,否则该数据是否小于s2的顶元素,如果是则将它压入栈s2。然后再判断s1的顶是否等于当前需要输出的值(就是安顺序来是不是对的),如果是就输出b。再同样判断s2,如果是就输出d。
  很可惜,只有30分,代码如[……]

继续阅读

NOIP 2008 提高组 传纸条 解题报告

  这题我以前就看过,一直不会做,后来看到别人说双线程动态规划,我以为是多么多么的神奇的一个东西,把它看的和Linux源码一样神奇了,现在学了之后也就是简单的DP,我用的四维DP,别人都说是三维,我先用四维做,以后再考虑三维(也许不会再考虑这一题了咯。)
  我的方程如下:f[a][b][c][d][……]

继续阅读