Climber.pI的OI之路

Through the darkest dark,may we see the light.

#

Problem List(1.22 - 1.29)

一点说明:寒假期间的计划是重写USACO Chapter3然后写完Chapter4.现在看来完成有难度.总而言之,寒假的计划注重熟练程度,速度是其次,“伤其十指,不如断其一指”.

2011.1.22

agrinet 3WA 90min.[Krusal+Bsort]

2011.1.23

agrinet 1PE 20min.[Krusal+Bsort]
(1)坐标编号中应从0开始.
(2)研究最小生成树相关问题.

NOIp 2010 第三题,瓶颈生成树,Wrong. 1.5h

inflate 1Y 15min
完全背包问题

humble 2TLE 90min
45min 读题错误
10min TLE,卡4

2011.1.24

contect 1h 编写错误.

stamp 未写 20min
[方程] f[i][k] |= f[i-s[t]][k-1]
i表示可拼邮资,k表示已用邮票数,s[t]表示邮资大小.
滚动,24MB.

fact4 8min 1PE [同余分析]

prime3 80min TLE [爆搜]
构造10^4-10^5质数表,五重循环枚举.1000*8000^4.

2011.1.25

agrinet 1WA 30min
(1)坐标编号从0开始,减少思维复杂度
(2)直接交换struct指针地址的写法

2011.1.26

humble 90min 不明.

stamps 40min [DP]
[方程]f[i] = min{f[i], f[i-s[i]]+1} (f[i]<>0)
k,n打反,边界条件弄反.

stamps 80min [BFS]
失败.

2011.1.27

stamps 12min 1WA [DP]
Max应为Max+1

UVa 11425 40min 暴力 未完成
{树状数组}

UVa 11600 20min 读题
(数学期望)

rect1 30min 直接灌水模拟
读题:x为闭区间,y为开区间

rect1 100min 矩形切割,讨论14种情况,约200行
未完成,参看标程发现应讨论坐标.
[勘误] 薛矛论文 17种情况.

2011.1.28

rect1 3h 矩形切割
坐标变换,讨论5种情况

2011.1.29

agrinet 23min [Kruskal]
(1)指针用法;
(2)注意,的使用.

stamps 27min DP 3WA
f[]数组数据类型

rect1 90min
参考 NOI‘04 薛矛论文, 取公共部分.

posted @ 2011-01-30 19:42 Climber.pI 阅读(166) | 评论 (0)编辑 收藏

USACO Monthly 2011 Jan Bronze Division

USACO放出的最终分数是350,升级线370,差距开始减小了.
题目很简单,近一个月没写题,还是在2h内写完.最后发现了最后一题的bug,调试成功后突然发现超时3min,然后又悲剧了. = =

引gXX神牛:long long 类型使用cout输出,避免平台差异.


============================== SUMMARY =============================

                              -- case number --
           1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
cropcir     *  *  *  *  *  *  *  *  *  *
dishes      *  *  *  *  *  *  *  *  *  *
space       *  *  *  *  *  s  *  *  *  *  *  *  *  *  *  *  s  *  s
sym         *  *  x  *  x  x  x  x  *  *

. = no entry   t = time exceeded    *   = correct answer
x = wrong      s = signal           e   = bad exit status

=======================================================================

Complete results for cropcir --------------------
 1: OK [0.01 sec]
 2: OK [0.01 sec]
 3: OK [0.01 sec]
 4: OK [0.00 sec]
 5: OK [0.00 sec]
 6: OK [0.00 sec]
 7: OK [0.00 sec]
 8: OK [0.02 sec]
 9: OK [0.01 sec]
10: OK [0.01 sec]

Complete results for dishes --------------------
 1: OK [0.00 sec]
 2: OK [0.01 sec]
 3: OK [0.01 sec]
 4: OK [0.01 sec]
 5: OK [0.00 sec]
 6: OK [0.00 sec]
 7: OK [0.03 sec]
 8: OK [0.03 sec]
 9: OK [0.01 sec]
10: OK [0.01 sec]

Complete results for space --------------------
 1: OK [0.00 sec]
 2: OK [0.01 sec]
 3: OK [0.01 sec]
 4: OK [0.01 sec]
 5: OK [0.00 sec]
 6: Wrong: Signal 11 -- segmentation violation [maybe caused by
   accessing memory out of bounds, array indexing out of bounds, using a
   bad pointer (failed open(), failed malloc), or going over the maximum
   specified memory limit]
 7: OK [0.16 sec]
 8: OK [0.20 sec]
 9: OK [0.15 sec]
10: OK [0.01 sec]
11: OK [0.01 sec]
12: OK [0.01 sec]
13: OK [0.01 sec]
14: OK [0.02 sec]
15: OK [0.02 sec]
16: OK [0.03 sec]
17: Wrong: Signal 11 -- segmentation violation [maybe caused by
   accessing memory out of bounds, array indexing out of bounds, using a
   bad pointer (failed open(), failed malloc), or going over the maximum
   specified memory limit]
18: OK [0.12 sec]
19: Wrong: Signal 11 -- segmentation violation [maybe caused by
   accessing memory out of bounds, array indexing out of bounds, using a
   bad pointer (failed open(), failed malloc), or going over the maximum
   specified memory limit]

Complete results for sym --------------------
 1: OK [0.01 sec]
 2: OK [0.02 sec]
 3: Wrong: L1: Wanted 0 got 4
 4: OK [0.01 sec]
 5: Wrong: L1: Wanted 87381 got 1135957
 6: Wrong: L1: Wanted 21845 got 89412949
 7: Wrong: L1: Wanted 1398101 got 68506965
 8: Wrong: L1: Wanted 1398101 got 68506965
 9: OK [0.02 sec]
10: OK [0.00 sec]

posted @ 2011-01-15 17:27 Climber.pI 阅读(372) | 评论 (0)编辑 收藏

USACO Monthly 2010 Dec Bronze Division

1.[3/10,数组开小]
模拟统计.
特别需要注意表中列和行的关系,利用一个q[10][50000]记录,如果q[1..10][i](1<=i<=50000=N),那么ans++.
【特别注意】测试数据即使行列打反亦可通过.可利用N>50的数据测试,打反会报错.

2.[AC]
读入一个整数n(0<n<1e4),取百位和十位,平方作为随机数.
当生成两个相同随机数时终止.
【testdata】5345

3.[AC]
读入一个数,每隔三位输出一个逗号,利用字符串实现
输出逗号的情况:strlen(n)-i-1|3 && strlen(n)-i-1≠0

用了1.5h,坐等3AC.
果断23/30,silver线27/30.
坐等2011 Jan 7-10 USACO Monthly Bronze.

上次7/30,这次23/30..为什么实力和发挥总是差这么大 = =
果断去做Silver...听取gXX神牛建议果断contest.

posted @ 2010-12-05 11:31 Climber.pI 阅读(255) | 评论 (0)编辑 收藏

Problem List

Summary of USACO Monthly Bronze of Nov

1.daisy(20)
题目给出一个无向图,和若干组边,输出从1出发不能到达的边.
[边界]没有结果则输出0
【Fllodfill(DFS)】
1.c1 c2关系不一定
2.无向图,遍历从1开始
3.边界条件
4.vis数组记录

2.marathon(20)
裸的三值排序,O(n^2)即可
【标准算法使用hash】
0.少打一个等号

3.数据类型错误

USACO Monthly Nov2005
Flood fill的某特性,计算过的点可以去掉

NOIp 2009
【潜伏者】
注意“一一映射”
【Hankson的趣味题】
注意内存

NOIp 2007
【字符串的展开】
注意读题,考虑特殊情况,不要被题目迷惑
【矩阵取数】
dp,高精度调试不能

NOIp 1999 拦截导弹
多次计算最长连续不上升子序列,可以将计算过的值变为-1,循环时排除.

posted @ 2010-11-17 21:22 Climber.pI 阅读(155) | 评论 (0)编辑 收藏

[转]NOIP常用知识点列表

[原文链接]http://www.coderspace.net/bbs/viewthread.php?tid=119&extra=page%3D1

看了这份非官方的NOIp大纲,还是弱不禁风.不过分治、贪心似乎被无视了.
目前指熟练掌握了1/3,还有近1/2的部分不熟练,联想起"不要总想着AC",需要大量做题了.

排序:
(1,5)冒泡/选排(这个很常用,一定要保证正确性)
(2,5)快排(Pascal选手可以去FPC文件夹里找代码,C/C++选手注意sort的正确性)
(3,4)归并排序(最好要会,因为有可能有题要卡快排)

数据结构:
(2,2)循环队列(节省空间用)
(2,4)单调队列(DP里经常用)
(1,3)完全二叉树的数组存储
(2,5)并查集(一定要会路径压缩)
(3,4)图的前向星存法
(4,2)Trie树,后缀数组(这些学过的就再复习一下,没学过就不用看了,估计考的概率不大)
(3,2)森林转二叉树(树状DP常用)

动态规划:
(1,5)基本的背包问题(一定要熟练写出方程,尤其注意边界的取值)
(3,4)多线程DP(二取方格数)
(3,2)LIS的二分优化
(2,4)DP的队列优化(LCIS,单调队列很常用的)
(3,4)树状DP(其实就是记忆化搜索,很好理解)

图论:
(1,5)最短路(dijkstra,floyd,spfa)
(2,5)最小生成树(prim,kruskal)
(2,5)拓扑排序
(2,3)floyd求最小环
(3,4)求(有向/无向)图的强连通分量
(1,3)判断图中是否有环
(3,2)图的关键路径
(4,1)差分约束系统(就是求最长路,用spfa)

其他:
(2,4)RMQ问题的ST算法(LCA问题也可以转化为RMQ问题)
(4,5)高精度的加减乘除开方(开方一般情况下直接二分比较方便)
(3,4)表达求值(栈或并查集皆可,一般来说并查集比较容易实现)
(2,2)扩展欧几里得算法(解同余方程用)
(1,5)乘法转加法神器:log
(1,4)求最大子序列和的备忘录算法
(2,3)位运算优化搜索(N皇后问题,建议去USACO做一下)
(4,2)搜索剪枝(推荐做USACO的fence rail那题)

posted @ 2010-11-07 11:49 Climber.pI 阅读(560) | 评论 (0)编辑 收藏

Summary of Chapter 1-4

第一讲 时空分析
(1)时间复杂度

(2)空间复杂度

第二讲 排序算法

n较大 【快速排序】
n较小 【冒泡排序】
n较大 n值较小 【计数排序】
取n的最值 【堆排序】
n较大 要求稳定性 【归并排序】


第三讲 线性数据结构
1.栈
(1)DFS的显式写法 => 类似BFS
(2)回溯 => DFS+状态还原
【求总方案数或者最优方案问题】
2.队列
BFS
【求最少操作次数】

第四讲 树形结构的应用
1.二叉排序树 O(nlogn)
递归构造

2.哈夫曼树 => 堆实现

3.树状数组 => 邻接表
【貌似NOIp超纲】

posted @ 2010-10-25 21:54 Climber.pI 阅读(188) | 评论 (0)编辑 收藏

Prepare NOIp 2010 Final Plan

1.参考书籍

全国青少年信息学竞赛培训教材:复赛】

http://www.amazon.cn/gp/product/B003VD3RXA/ref=oss_product

刚买的新书,感觉比较贴近复赛实际,涉及了大部分算法,尤其是dp的分类非常赞,唯一的缺陷是搜索比较少.书中的内容基本上都学过,权当系统复习,务必搞透.

【算法竞赛入门经典】
大部分章节都看过,重点研究后面的部分,这本书搜索和数学方面内容更多一些.

【程序设计中常用的计算思维方式】
整体比较难,但是例题还可以看懂,看一部分吧.

2.题目

A.USACO Monthly 铜组&银组,从后往前做吧 - -
http://oj.jzxx.net/searchproblem

B.USACO Training 的搜索&dp&图论

C.历年试题

D.各种模拟题(NOI导刊etc) => 不一定要做,训练对于题目的选择能力

3.别的貌似没了...
题目风格什么年年换,历年试题权当参考,仅此而已.

posted @ 2010-10-24 14:16 Climber.pI 阅读(512) | 评论 (3)编辑 收藏

USACO Monthly

在众多神牛的推荐下,开始写USACO Monthly银铜组,发现一个不错的网站,收录的历年USACO月赛的所有题目:
http://oj.jzxx.net/

posted @ 2010-10-23 23:26 Climber.pI 阅读(418) | 评论 (0)编辑 收藏

USACO 4.1.1 Nuggets

重启usaco.

抽象出模型,可以发现是一个简单的完全背包问题,复杂度O(N^2+VN).需要考虑几种特殊情况:
(1)无解
当且仅当n个数中有一个数为1.
(2)惟一解
需要确定的是体积v的最大值.题解中是最大的两个数的最小公倍数,程序中使用最大数的平方,证明方法不知.
(3)无限解
n个数不互质

 1/*
 2ID: liuyupa1
 3PROG: nuggets
 4LANG: C++
 5*/

 6#include<stdio.h>
 7int w[15= {0}, f[66000= {0};
 8int p[] = {2357111317192329313741434753596167717379838997101103107109113127131137139149151157163167173179181191193197199211223227229233239241251};
 9void swap(int *x, int *y){
10    int k = *x; *= *y; *= k;
11}

12int max(int x, int y){
13    return x>? x : y;
14}

15int main(){
16    FILE *fin, *fout;
17    fin = fopen("nuggets.in""r");
18    fout = fopen("nuggets.out""w");
19    int n, i, j;
20    fscanf(fin, "%d"&n);
21    for (i = 1; i <= n; i++) fscanf(fin, "%d"&w[i]);
22    for (j = 0; j < 54; j++){
23        int t = 0;
24            for (i = 1; i <= n; i++)
25            if (w[i] % p[j] == 0) t++;
26        if (t == n) {
27            fprintf(fout, "0\n", p[j]);
28            return 0;
29        }

30    }

31    for (i = 1; i < n; i++)
32        for (j = i+1; j <= n; j++)
33            if (w[i] > w[j]) swap(&w[i], &w[j]);
34    if (w[1== 1){
35        fprintf(fout, "0\n", p[j]);
36        return 0;
37    }

38    for (i = 1; i <= n; i++)
39        for (j = 0; j <= w[n]*w[n]; j++)
40            if (j-w[i] >= 0)
41                f[j] = max(f[j], f[j-w[i]]+w[i]);
42    i = w[n-1]*w[n];
43    while (i > -1 && f[i] == i) i--;
44    fprintf(fout, "%d\n", i);
45    return 0;
46}

47

posted @ 2010-10-19 17:05 Climber.pI 阅读(289) | 评论 (0)编辑 收藏

NOIp 2010 Preliminary Contest,知耻而后勇.

posted @ 2010-10-16 23:13 Climber.pI 阅读(141) | 评论 (0)编辑 收藏

仅列出标题
共8页: 1 2 3 4 5 6 7 8