青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Climber.pI的OI之路

Through the darkest dark,may we see the light.

#

初賽零散復習

完善程序最好總結一下以前題目常常要你填出來的語句類型。這個每年都差不多的,想不出來是可以回憶一下有哪些可能填的語句,再放到程序里面看是否合適。

龍芯 http://baike.baidu.com/view/3625.htm
IBM Power系列http://www.enet.com.cn/article/2010/0228/A20100228615002.shtml
AMD http://china.amd.com.cn/processors/ComputingSolutions/default.aspx
Intel 酷睿i系列 http://baike.baidu.com/view/3282306.htm
計算機輔助系統 http://baike.baidu.com/view/1298192.html
ASCII碼 http://zhidao.baidu.com/question/94328098.html?fr=ala0
圖靈 http://baike.baidu.com/view/2130.htm

哈夫曼樹 http://baike.baidu.com/view/127820.htm
多叉轉二叉 http://hi.baidu.com/%C6%AE%BB%A8%C4%EA%B4%FA/blog/item/5ec37212ce87fbddf7039e84.html

posted @ 2010-10-13 21:53 Climber.pI 閱讀(209) | 評論 (0)編輯 收藏

NOIp 2004 合并果子

NOIp中很少見的數據結構的題目,可以用堆實現,也可以用兩條隊列. 用堆實現,調了很久 = =
需要注意down函數的邊界問題.

 1#include<stdio.h>
 2#include<string.h>
 3#include<iostream>
 4using namespace std;
 5int n, h[10010];
 6struct heap{
 7    void swap(int*i, int*j){
 8        int k = *i; *= *j; *= k;
 9    }

10    void up(int k){
11        while (k > 1)
12            if (h[k/2> h[k]) {
13                swap(&h[k/2], &h[k]);
14                k /= 2;
15            }
else break;
16    }

17    void down(int k){
18        while (2*<= n){
19            int l = 2*k, r = l<? l+1 : l;
20            if (h[r] < h[l]) l++;
21            if (h[k] > h[l]){
22                swap(&h[k], &h[l]);
23                k = l;
24            }
else break;
25        }

26    }

27    void insert(int x){
28        h[++n] = x;
29        up(n);
30    }

31    void del(int k){
32        swap(&h[k], &h[n--]);
33        
34        down(k);
35    }

36    int pop(){
37        del(1);
38        return h[n+1];
39    }

40}
;
41heap hp; 
42int main(){
43    int i, sum = 0;
44    scanf("%d"&n);
45    for (i = 1; i <= n; i++)
46    scanf("%d"&h[i]);
47    for (i = n/2; i > 0; i--) hp.down(i);
48    while (n > 1){
49        int x = hp.pop(), y = hp.pop();
50        sum += x+y;
51        hp.insert(x+y);
52    }

53    printf("%d\n", sum);
54}

55

posted @ 2010-10-12 21:43 Climber.pI 閱讀(438) | 評論 (0)編輯 收藏

NOIp 2008 初賽

78 = 12+15+5+32+14,上80還是很困難.

1.二分查找
       設內部結點的總數為n=2^h-1,則判定樹是深度為h=log(n+1)的滿二叉樹(深度h不計外部結點)。樹中第k層上的結點個數為2k-1,查找它們所需的比較次數是k。因此在等概率假設下,二分查找成功時的平均查找長度為:ASLbn ≈ log(n+1)-1
       二分查找在查找失敗時所需比較的關鍵字個數不超過判定樹的深度,在最壞情況下查找成功的比較次數也不超過判定樹的深度。

2.問題求解第二題
21本書中選4本,任意兩本編號不相鄰.
去掉3個間隔,C(18,4)=3060.

排列組合題總是簡單的出乎意料. = =

3.快速排序算法不熟



今天突然發現很多O(nlogn)級別的算法都和樹有很深的關系,遍歷的過程通常都是生成某種樹,然后查找長度和比較次數通常和樹的深度相關.

posted @ 2010-10-11 21:15 Climber.pI 閱讀(247) | 評論 (0)編輯 收藏

排序算法總結

1.直接插入排序 O(n^2) 穩定
2.希爾排序 O(n^1.3) 不穩定
3.直接選擇排序 O(n^2) 不穩定
4.堆排序 O(nlogn) 不穩定
5.冒泡排序 O(n^2) 穩定
6.快速排序 O(nlogn) 不穩定 =>可以看做構造二叉排序樹
7.歸并排序 O(nlogn) 穩定

整理自《奧賽經典·信息學》 第5章,原理略.

posted @ 2010-10-11 20:56 Climber.pI 閱讀(212) | 評論 (0)編輯 收藏

[整理]表達式樹

[原文]http://blog.csdn.net/guocai_yao/archive/2009/04/11/4065718.aspx

1.樹的遍歷法
通過中綴表達式,構造表達式樹,然后利用前序或者后序遍歷.

2.括號轉移法
這里我給出一個中綴表達式

a+b*c-(d+e)

第一步:按照運算符的優先級對所有的運算單位加括號

           式子變成拉:((a+(b*c))-(d+e))
第二步:轉換前綴與后綴表達式
        前綴:把運算符號移動到對應的括號前面
                則變成拉:-( +(a *(bc)) +(de))
                把括號去掉:-+a*bc+de  前綴式子出現
        后綴:把運算符號移動到對應的括號后面
                則變成拉:((a(bc)* )- (de)+ )-
                把括號去掉:abc*-de+-  后綴式子出現
發現沒有,前綴式,后綴式是不需要用括號來進行優先級的確定的。

posted @ 2010-10-11 20:50 Climber.pI 閱讀(342) | 評論 (0)編輯 收藏

NOIp 2005 過河

線性dp,但是范圍很變態. = =

30%的方程很容易想到:
[狀態] f[i]表示從0到i點最少踩到的石子數, stone[i]表示i點有無石子;
[方程] f[i] = max{f[i-j] + stone[i]} (S<=j<=T)
[初始化] f[0] = 0, 其他賦值為無限大.

在實現的時候需要把方程變化為 f[i+j] = max{f[i] + stone[i+j]},不然在[1,S]會出現很詭異的結果.
 
由于m遠遠小于l,整個序列上的石子非常稀疏.所以可以減少狀態.但是目前對此還是有些不解.
某種思路是,將石子間距大[1,2,..,9,10]=2520的逐次減至小于2520.注意要在收尾增加0和l兩個"石子",這樣計算新的l較為方便.


 1#include<stdio.h>
 2#include<iostream>
 3using namespace std;
 4#define MAXN 1000000;
 5bool L[200000= {0};
 6int f[200000= {0}, stone[110= {0};
 7int min(int x, int y){return x < y ? x : y;}
 8void swap(int x, int y){
 9    int k = stone[x];
10    stone[x] = stone[y];
11    stone[y] = k;
12}

13int main(){
14    int l, S, T, M, i, j;
15    scanf("%d%d%d%d"&l, &S, &T, &M);
16    for (i = 1; i <= M; i++) scanf("%d"&stone[i]);
17    stone[0= 0;
18    for (i = 1; i < M; i++)
19        for (j = i+1; j <= M; j++)
20            if (stone[i] > stone[j]) swap(i, j);
21    stone[++M] = l;
22    for (i = 1; i <= M; i++){
23        while (stone[i] - stone[i-1> 2520) stone[i] -= 2520;
24        if (i != M) L[stone[i]] = 1;
25    }

26    l = stone[M--];
27    for (i = 0; i <= l; i++) f[i] = MAXN; f[0= 0;
28    for (i = 0; i < l; i++)
29        for (j = S; j <= T; j++){
30            int k = i+j;
31            if (i + j >= l) k = l;
32            f[k] = min(f[k], f[i]+L[i]);
33        }

34    printf("%d\n", f[l]);
35}

posted @ 2010-10-08 21:54 Climber.pI 閱讀(869) | 評論 (2)編輯 收藏

NOIp 2003 加分二叉樹

形DP,需要記錄方案,并注意空樹的情況.
[狀態]f[i][j]從結點i到j的最大加分值
[方程]f[i][j] = max{f[i][k-1]*f[k+1][j]+a[k]} (i<=k<=j)

實現方程的時候循環順序非常關鍵:結點數由小到大循環.否則會出現需要的值未計算的情況.
記錄方案可以用一個數組d[i][j]記錄k,然后遞歸尋找方案并記錄.

 1 #include<stdio.h>
 2 #include<iostream>
 3 using namespace std;
 4 int f[35][35] = {0}, d[35][35] = {0}, ans[35] = {0}, t = 0;
 5 void print(int start, int end){
 6     if (start > end) return;
 7     if (start == end) {ans[++t] = start; return;}
 8     ans[++t] = d[start][end];
 9     print(start, d[start][end]-1);
10     print(d[start][end]+1, end);
11 }
12 int main(){
13     int n, a[35] = {0}, i, j, k, l;
14     scanf("%d", &n);
15     for (i = 1; i <= n; i++){
16         scanf("%d", &a[i]);
17         f[i][i-1] = 1;
18         f[i][i] = a[i];
19     }
20     for (l = 2; l <= n; l++)
21         for (i = 1; i <= n; i++)
22             for (k = i; k <= i+l-1; k++){
23                 j = i+l-1;
24                 if (f[i][j] < f[i][k-1]*f[k+1][j] + a[k]){
25                     f[i][j] = f[i][k-1]*f[k+1][j] + a[k];
26                     d[i][j] = k;
27                 }
28             }
29     printf("%d\n", f[1][n]);
30     print(1, n);
31     for (i = 1; i < t; i++) printf("%d ", ans[i]);
32     printf("%d\n", ans[t]);
33 }
34 


posted @ 2010-10-05 11:10 Climber.pI 閱讀(1060) | 評論 (4)編輯 收藏

NOIp 2006 金明的預算方案

題目中附件不超過2個,因而主附件存在4種不同的存取情況,可以轉化為分組背包問題.
[狀態]f[k][v]表示添加前k組物品,剩余空間為v時的最大值
[方程]f[k][v] = max{f[k-1][v], f[k-1][v-c[i]]+w[i]}

注意循環順序.(參見《背包九講》)

需要注意的問題(2次WA):
1.仔細讀題,確定編號對應的物品.
2.注意到方程中的參數非負(背包類問題需注意).

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 using namespace std;
 5 int c[65][4], w[65][4], f[32000], set[70] = {0};
 6 int max(int a, int b){return a > b ? a : b;}
 7 int main(){
 8     int n, m, v, p, q, i, j, t = 0;
 9     FILE *fout = fopen("budget.out", "w");
10     memset(c, -1, sizeof(c));
11     memset(w, -1, sizeof(w));
12     memset(f, 0, sizeof(f));
13     scanf("%d%d", &n, &m);
14     for (i = 0; i < m; i++){
15         scanf("%d%d%d", &v, &p, &q);
16         j = 0;
17         if (!q) {
18             c[++t][0] = v;
19             w[t][0] = v*p;
20             set[i+1] = t;
21         }
22         else{
23             q = set[q];
24             if (w[q][1] == -1){
25                 //printf("dgfdgds\n");
26                 c[q][1] = c[q][0] + v;
27                 w[q][1] = w[q][0] + v*p; 
28             }
29             else if (w[q][2] == -1){
30                 c[q][2] = c[q][0] + v;
31                 w[q][2] = w[q][0] + v*p; 
32                 c[q][3] = c[q][1] + v;
33                 w[q][3] = w[q][1] + v*p; 
34             }
35         }
36     }
37     for (i = 1; i <= t; i++)
38         for (v = n; v >= 0; v--)
39             for (j = 0; j < 4; j++)
40                 if (c[i][j] != -1 && v-c[i][j] >= 0){
41                     f[v] = max(f[v], f[v-c[i][j]]+w[i][j]);
42                 }
43     printf("%d\n", f[n]);
44 }
45 


posted @ 2010-10-05 10:11 Climber.pI 閱讀(505) | 評論 (0)編輯 收藏

NOIp 2009 初賽

時間幾乎用滿了,多選題很偏,73.5,全市第五.

[得分情況]

選擇題
問題解決
閱讀程序寫結果
完善程序
總分
得分
12+7.5
0
8+8+8+8
10+12
73.5
[結論]
1.數學太弱了.

2.回去背選擇題
3.全市前十五無壓力,爭取前五.
4.抓緊搞復賽
5.刷作業 = =

[真知灼見]
關于閱讀程序的題目
1.弄清變量在程序中的作用.
2.利用變量表示變量,而不要直接計算數值.

看了各種題解后發現錯的好猥 - -
下周果斷刷五三排列組合、二項式定理

posted @ 2010-10-04 19:34 Climber.pI 閱讀(183) | 評論 (0)編輯 收藏

轉:在博客園日志中顯示數學公式(舊,ASCIIMathML.js版說明)

http://m.shnenglu.com/Climber-pI/archive/2010/10/04/128557.html

【貌似CPU占用率會突然很高】

昨天寫短消息給博客園開發團隊,詢問如果能在博客園的日志里更好的編輯或是使用數學公式。之前也在網上查過,貌似對ASCIIMathML有不錯的評價,希望能在博客園的日志里也能用得上。

今天下班回來就看到回復的消息,內容如下:

ASCIIMathML.js的確不錯。 
            由于這個腳本比較大,默認就不加載了。 
           你可以在頁首html中加上這個腳本的引用: 
           <script type="text/javascript" src="http://common.cnblogs.com/script/ASCIIMathML.js"></script>

感動啊,這么快就給出了回復,體貼!謝謝啦!

真是開心啊,為了這個“小”功能我已經愁了很久了,好了,能有很好的代碼高亮和數學公式顯示~我已經滿足了,呵呵。

PS:

試了試,訪問的速度是會慢下一點來,忍了~!嘿嘿。下面順便簡單介紹下ASCIIMathML.js和支持的瀏覽器。

ASCIIMathML.js是一種將ASCII符號翻譯成直觀的MathML(HTML版本)的開源JavaScript腳本。

您只要遵循簡單的語法,用普通的ASCII字母和符號,就可以在網頁上輸入并顯示出漂亮的數學公式。這些公式遵循W3C標準,目前在Netscape7.1/Mozilla/Firefox下可以直接觀看,如果您用的是Internet Explorer和以之為內核的其它瀏覽器(如Maxthon或者GreenBrowser等),只需要下載一個插件。(下載插件MathPlayer,下載字體文件)

posted @ 2010-10-04 11:53 Climber.pI 閱讀(732) | 評論 (0)編輯 收藏

僅列出標題
共8頁: 1 2 3 4 5 6 7 8 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲伊人网站| 国产精品久久久一本精品| 欧美黄色片免费观看| 久久精品国产成人| 亚洲性人人天天夜夜摸| 在线免费观看欧美| 国产一区视频在线观看免费| 国产精品系列在线播放| 国产乱肥老妇国产一区二| 国产精品户外野外| 欧美日韩在线三区| 欧美四级伦理在线| 国产精品理论片在线观看| 国产精品美女久久久久久免费| 欧美午夜影院| 国产精品嫩草99av在线| 国产精品午夜在线观看| 国产日韩高清一区二区三区在线| 国产伦精品一区二区三区免费迷 | 欧美一区二区性| 午夜精品久久久久久99热| 翔田千里一区二区| 欧美一级网站| 久久久久久久波多野高潮日日| 久久久久免费观看| 亚洲二区三区四区| 欧美xxx成人| 亚洲激情一区二区| 亚洲深夜福利| 亚洲欧美日韩在线不卡| 久久久久久久97| 欧美精品激情blacked18| 欧美日韩一区综合| 国内精品国产成人| 亚洲精品一区二区网址| 日韩视频免费在线观看| 午夜精品久久久久久久男人的天堂| 亚洲欧美视频在线观看| 久久精品一区二区国产| 亚洲大片免费看| 亚洲色图在线视频| 久久人人爽人人爽爽久久| 欧美日韩国产页| 国产精品久久午夜夜伦鲁鲁| 国产精品久久久久久一区二区三区| 国产精品亚洲成人| 国产一区二区三区精品久久久| 国语自产精品视频在线看抢先版结局| 国产亚洲欧美激情| 国内成人自拍视频| 欧美日韩第一区日日骚| 欧美第一黄色网| 国产精品亚洲欧美| 亚洲成色777777在线观看影院| 99精品久久久| 久久久91精品国产一区二区三区| 免费一区二区三区| 亚洲国产小视频| 亚洲欧美激情视频| 欧美福利一区| 韩日午夜在线资源一区二区| 一本色道久久综合亚洲精品婷婷| 久久久国产精品亚洲一区| 亚洲国产老妈| 欧美一级二区| 欧美日韩网址| 最新日韩av| 久久精品国产久精国产一老狼| 亚洲视频播放| 蜜臀av一级做a爰片久久| 一本色道综合亚洲| 久久精品国产清高在天天线| 欧美高清在线视频| 精品va天堂亚洲国产| 制服丝袜亚洲播放| 欧美激情一二区| 亚洲欧美自拍偷拍| 国产精品久久久久永久免费观看 | 一区二区日韩欧美| 久久夜色撩人精品| 国产欧美一级| 午夜精品久久久久久久久| 亚洲精品资源| 欧美大胆a视频| 亚洲成色www8888| 欧美 日韩 国产在线| 久久精品成人一区二区三区| 国产精品毛片高清在线完整版| 亚洲视频精品在线| 一区二区三区免费网站| 欧美日韩精品一区二区| 一本在线高清不卡dvd| 一区二区三区你懂的| 亚洲美女中文字幕| 欧美成年人视频| 91久久午夜| 欧美成人午夜激情视频| 久久黄金**| 亚洲国产另类 国产精品国产免费| 9久re热视频在线精品| 欧美视频在线一区| 久久在线播放| 国产亚洲欧美在线| 亚洲在线播放| 亚洲激情在线激情| 欧美视频一二三区| 亚洲男女毛片无遮挡| 国产免费观看久久黄| 久久精品视频va| 久热精品在线视频| 香港成人在线视频| 亚洲伦理网站| 亚洲视频免费在线观看| 一区二区视频在线观看| 黄色av成人| 亚洲综合色激情五月| 久热精品视频在线观看| 亚洲欧洲日韩综合二区| 久久久久久黄| 欧美在线啊v| 欧美劲爆第一页| 亚洲一区二区网站| 亚洲免费av网站| 欧美精品久久久久久| 欧美成人免费观看| 亚洲一区亚洲| 久久久天天操| 久久成人一区| 欧美影院成人| 亚洲精品国产视频| 亚洲视频精品在线| 亚洲日韩欧美视频一区| 亚洲美女黄色| 亚洲第一伊人| 午夜精品一区二区三区在线视| 亚洲国产综合91精品麻豆| 一区二区三区免费看| 影音先锋在线一区| 一区二区日韩| 亚洲欧洲在线观看| 午夜精品一区二区三区在线播放 | 在线播放日韩专区| 制服丝袜激情欧洲亚洲| 亚洲精品在线电影| 久久精品人人做人人综合| 亚洲一区二区在| 欧美顶级艳妇交换群宴| 亚洲精品乱码视频| 久久久在线视频| 亚洲你懂的在线视频| 欧美精品尤物在线| 每日更新成人在线视频| 国产精品揄拍500视频| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 韩国精品主播一区二区在线观看| 在线亚洲伦理| 9i看片成人免费高清| 蜜臀久久久99精品久久久久久 | 野花国产精品入口| 一区二区三区av| 欧美啪啪成人vr| 亚洲国产综合在线| 亚洲激情另类| 免费中文字幕日韩欧美| 欧美国产日韩视频| 亚洲电影免费在线| 久久亚洲欧美| 欧美成人一区二区三区| 韩国一区二区三区美女美女秀| 欧美中文在线免费| 久热精品视频| 亚洲电影免费观看高清完整版在线| 久久女同互慰一区二区三区| 久久久综合网站| 国内伊人久久久久久网站视频| 午夜久久黄色| 噜噜噜噜噜久久久久久91| 在线观看中文字幕不卡| 久久久夜精品| 亚洲高清毛片| 一本在线高清不卡dvd| 国产精品激情| 欧美一级在线亚洲天堂| 老司机一区二区三区| 亚洲片在线观看| 欧美午夜激情在线| 午夜视频在线观看一区| 欧美不卡视频| 亚洲一区二区三| 国产在线视频欧美| 猛男gaygay欧美视频| 亚洲伦理自拍| 欧美在线看片a免费观看| 曰韩精品一区二区| 欧美日韩国产精品专区| 香蕉乱码成人久久天堂爱免费| 麻豆精品在线视频| 亚洲一二三四区| 黄色另类av| 欧美日韩在线一二三|