无界
If the only tool you have is a hammer, you tend to see every problem as a nail.
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

就一个toString和toByteArray的差别
速度提高了一倍啊,看来底层的东西还是有必要了解的,不过Java写东西是真方便啊

本来这道题是要高精度的,YD啊,但是Java有BigDecimal,哈哈,不过这玩意好用是好用,但是确实是非常的慢

我估计我自己用一个数组实现的话,速度应该还会快的

不过最后被我瞎猫碰死耗子碰到了,终于过了。

 1 import java.io.*;
 2 import java.math.BigInteger;
 3 import java.util.*;
 4 /*
 5 ID: yanglei4
 6 LANG: JAVA
 7 TASK:buylow
 8 */
 9 public class buylow{
10     public static void main(String[] args) throws IOException {
11         BufferedReader f = new BufferedReader(new FileReader("buylow.in"));
12         PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("buylow.out")));
13         int N = Integer.parseInt(f.readLine());
14         int[] D = new int[N];
15         int count = 0;
16         String temp = f.readLine();
17         while (temp != null) {
18             StringTokenizer st = new StringTokenizer(temp);
19             int len = st.countTokens();
20             for (int i = 0; i < len; i++)
21                 D[count++] = Integer.parseInt(st.nextToken());
22             temp = f.readLine();
23         }
24         long[] lds = new long[N];
25         BigInteger[] cnt = new BigInteger[N];
26         for (int i = 0; i < N; i++) {
27                 lds[i] = 1;
28                 cnt[i] = new BigInteger("1");
29         }
30         ArrayList<Integer> exist = new ArrayList<Integer>();
31         for (int i = 0; i < N; i++) {
32             
33             for (int j = i - 1; j >= 0; j--) {
34                 if (D[i] < D[j]) {
35                     if (lds[j] + 1 > lds[i]) {
36                         lds[i] = lds[j] + 1;
37                         exist.clear();
38                         exist.add(D[j]);
39                         cnt[i] = new BigInteger(cnt[j].toByteArray());
40                     }
41                     else if (lds[j] + 1 == lds[i]) {
42                         if (!exist.contains(D[j])) {
43                             exist.add(D[j]);
44                             cnt[i] = cnt[i].add(cnt[j]);
45                         }
46                     }
47                 
48                 }
49             }
50         }
51         
52 /*        for (int i = 0; i < N; i++)
53             System.out.println(lds[i][0] + " " + lds[i][1] + " " + cnt[i]);*/
54         
55         long maxleng = 0;
56         for (int i = 0; i < N; i++) {
57             if (maxleng < lds[i])
58                     maxleng = lds[i];
59         }
60         BigInteger sum = new BigInteger("0");
61         exist = new ArrayList<Integer>();        
62         for (int i = N - 1; i >= 0; i--) {
63             if (lds[i] == maxleng)
64                 if (!exist.contains(D[i])) {
65                     sum = sum.add(cnt[i]);
66                     exist.add(D[i]);
67                 }
68         }
69         
70         out.println(maxleng + " " + sum);
71         out.close();
72         System.exit(0);
73     }
74 }
75 

就是红色的那个地方,用toString的话,最后一个点过不了,换成了这个就过了。

posted @ 2009-04-23 23:27 杨磊 阅读(2376) | 评论 (0) | 编辑 收藏
 
Network Flow
 1   if (source = sink)
 
2     totalflow = Infinity
 
3     DONE 

 
4   totalflow = 0 

 
5   while (True)
 
6 # find path with highest capacity from
   # source to sink 
 
7 # uses a modified djikstra's algorithm
 8     for all nodes i
 
9       prevnode(i) = nil
10       flow(i) = 0
11       visited(i) = False
12     flow(source) = infinity 

13     while (True)
14       maxflow = 0
15       maxloc = nil 
16       # find the unvisited node with
         # the highest capacity to it
17       for all nodes i
18         if (flow(i) > maxflow AND
                          not visited(i))
19           maxflow = flow(i)
20           maxloc = i
21       if (maxloc = nil)
22         break inner while loop
23       if (maxloc = sink)
24         break inner while loop
24a      visited(maxloc) 
= true
25       # update its neighbors
26       for all neighbors i of maxloc
27         if (flow(i) < min(maxflow,
                      capacity(maxloc,i)))
28           prevnode(i) = maxloc
29           flow(i) = min(maxflow,
                    capacity(maxloc,i)) 

30     if (maxloc = nil)         # no path
31       break outer while loop 

32     pathcapacity = flow(sink)
33     totalflow = totalflow + pathcapacity 

   # add that flow to the network,
   # update capacity appropriately
35     curnode = sink
         # 
for each arc, prevnode(curnode),
         # curnode on path:
36     while (curnode != source)       
38       nextnode = prevnode(curnode)
39       capacity(nextnode,curnode) =
           capacity(nextnode,curnode) 
- 
40                           pathcapacity
41       capacity(curnode,nextnode) =
           capacity(curnode,nextnode) 
+ 
42                           pathcapacity
43       curnode = nextnode
posted @ 2009-04-22 14:05 杨磊 阅读(164) | 评论 (0) | 编辑 收藏
 
我的Eclipse配色
http://www.blogjava.net/Files/LittleDS/eclipse.rar 喜欢的可以拿去用,欢迎提意见

之所以用黑色,就是因为foreground可以用更多的颜色,对比度高一点

而且经常看白色的背景色,好像对眼睛也是一种折磨。




http://www.blogjava.net/Files/LittleDS/eclipse.rar
posted @ 2009-04-17 22:38 杨磊 阅读(1804) | 评论 (0) | 编辑 收藏
 
Hash很强大
第一次用Java代码过搜索+剪枝的题目啊,不容易啊……,而且还是参考了后面的Analysis,-_-!

不过里面的那个Hash的剪枝还是很强大的,再一次说明了学好数学的重要

同时,再一次证明了Java有多慢,C++肯定不用加最后的剪枝就过了,但是Java就不行

而且有一个点居然要1.5秒,真是不可思议。

待会儿我再试试Analysis里面的代码,看看有多快,是不是Static的要比正常的写快。

算法没啥好说的,就是生成,把F+R个数生成出来,然后用那个最大ratio是最小ratio的三倍做一个剪枝

我之前还打了一个表,所有的数的ratio的表,然后后面直接访问这个表,而不是去现去除

但是发现好像左右不大。

剩下的就是那个Hash的优化了,很强大,就好象题目里说的那样,就是看F生成好之后的比率

比如1 3 5 7,前两个是F的,后两个是R的,那么它的variance和2 6 10 14是一样的,这个不用我解释吧

这样的话呢,同一个比率的就不用再做第二次了。

自己没有去严格的证明这个剪枝的正确性,但是想想证明应该不太难。

同一个ratio的话肯定取前面那组,如果是不同的ratio呢?

现在的问题就是,如果是不同的ratio,后面的正确的组会不会被前面的不小心剪掉。或者后面的这组根本没必要。

如果是根本没必要的话,那么这个剪枝肯定就是正确的了。

其实这个剪枝是正确的,因为在你用比如1,3的时候,你就试过了后面所有的不同组合了。

那么当你扩大1,3到2,6时,我们可以看看USACO后面的解释的那个例子来。

39/16 = 2.43750000000000000000

40/16 = 2.50000000000000000000

39/15 = 2.60000000000000000000

40/15 = 2.66666666666666666666

39/14 = 2.78571428571428571428

40/14 = 2.85714285714285714285

39/13 = 3.00000000000000000000

40/13 = 3.07692307692307692307

39/12 = 3.25000000000000000000

40/12 = 3.33333333333333333333


就相当于这些ratio全都翻了一倍,那样的话,variance当然不会变

所以个剪枝是正确的。

贴一下代码:
  1 import java.io.*;
  2 import java.util.*;
  3 /*
  4 ID: yanglei4
  5 LANG: JAVA
  6 TASK:cowcycle
  7 */
  8 public class cowcycle{
  9     public double[][] ratio = new double[81][41];
 10     int F,R,F1,F2,R1,R2;
 11     public int[] s1;
 12     public int[] s2;
 13     double min = 1000000;
 14     static String[] hash;
 15     public int[] ans1;
 16     public int[] ans2;
 17     
 18     public static boolean contains(String str) {
 19         int num = str.hashCode();
 20         if(num<0) num = -num;
 21         int p = num % hash.length;
 22         while(hash[p]!=null)
 23             if(str.equals(hash[p]))   return true;
 24             else if(p==hash.length-1) p=0;
 25             else p++;
 26         hash[p]=str;
 27         return false;
 28    }
 29 
 30     public void DFS_F(int step,int start) {
 31         if (step == F + 1) {
 32             StringBuffer str = new StringBuffer();
 33             for(int i = 2;i <= F;i++)
 34                 str.append((int)(100*(double)s1[i]/s1[1]));
 35             if(contains(str.toString())) return;
 36             
 37             DFS_R(1,R1);
 38             return;
 39         }
 40         for (int i = start; i <= F2 - (F - step); i++) {
 41             s1[step] = i;
 42             DFS_F(step + 1, i + 1);
 43         }
 44     }
 45     
 46     public void DFS_R(int step,int start) {
 47         if (step == R + 1) {
 48             if (s1[F] * s2[R] < 3 * s1[1] * s2[1])
 49                 return;
 50             count();
 51             return;
 52         }
 53         for (int i = start; i <= R2 - (R - step); i++) {
 54             s2[step] = i;
 55             DFS_R(step + 1, i + 1);
 56         }        
 57     }
 58     
 59     public double count() {
 60         double[] rate = new double[R * F + 1];
 61         double[] diff = new double[R * F + 1];
 62         double sum = 0;
 63         double sumf = 0;
 64         int l = 1;
 65         for (int i = 1; i <= F; i++)
 66             for (int j = 1; j <= R; j++) 
 67                 rate[l++] = ratio[s1[i]][s2[j]];
 68 
 69         Arrays.sort(rate);
 70         
 71         for (int i = 1; i <= F * R - 1; i++) {
 72             diff[i] = rate[i + 1] - rate[i];
 73             sum += diff[i];
 74             sumf += diff[i] * diff[i];
 75         }
 76         double avg = sum / (F * R - 1);
 77         double vf = sumf - sum * avg;
 78         if (vf < min) {
 79             min = vf;
 80             for (int i = 1; i <= F; i++) ans1[i] = s1[i];
 81             for (int i = 1; i <= R; i++) ans2[i] = s2[i];
 82         }
 83         return 0.0;
 84     }
 85     
 86     public void done() throws IOException {
 87         for (int i = 25; i <= 80; i++)
 88             for (int j = 5; j <= 40; j++) 
 89                 ratio[i][j] = (double)i / j;
 90 
 91         BufferedReader f = new BufferedReader(new FileReader("cowcycle.in"));
 92         PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("cowcycle.out")));
 93         StringTokenizer st = new StringTokenizer(f.readLine());
 94         F = Integer.parseInt(st.nextToken());
 95         R = Integer.parseInt(st.nextToken());
 96         st = new StringTokenizer(f.readLine());
 97         F1 = Integer.parseInt(st.nextToken());
 98         F2 = Integer.parseInt(st.nextToken());
 99         R1 = Integer.parseInt(st.nextToken());
100         R2 = Integer.parseInt(st.nextToken());
101         s1 = new int[F + 1];
102         s2 = new int[R + 1];
103         ans1 = new int[F + 1];
104         ans2 = new int[R + 1];
105         hash = new String[50003];
106         
107         DFS_F(1,F1);
108         
109         for (int i = 1; i <= F - 1; i++)
110             out.print(ans1[i] + " ");
111         out.println(ans1[F]);
112 
113         for (int i = 1; i <= R - 1; i++)
114             out.print(ans2[i] + " ");
115         out.println(ans2[R]);
116                 
117         out.close();
118     }
119     
120     public static void main(String[] args) throws IOException {
121         cowcycle t = new cowcycle();
122         t.done();
123         System.exit(0);
124     }
125 }
126 


posted @ 2009-04-17 22:32 杨磊 阅读(138) | 评论 (0) | 编辑 收藏
 
Cryptcowgraphy
不明白为什么一模一样的算法,Java的结果就是不对呢,很奇怪

又是一个剪枝的题目,我发现剪枝这东西真是需要灵感的

那个不会改变的字符串的剪枝比较容易想,不过Hash的那个剪枝确实是让我爱莫能及啊,然后就参考了Leokan的代码

很神奇的代码,Hash Size只有3W+,然后居然就AC了,我最后就是用他的代码试了一下 -_-!,然后AC的

可是为什么我的Java代码就是过不了呢?很神奇

在第七个点的时候,Hash Size要开到50W才可以出正确的结果,但是这样的话时间会超长,估计有4,5秒的样子

而且我把能加的剪枝全加上了,还是不行……

真是不明白所以啊,不知道自己问题处在哪里了。

太TM诡异了……
posted @ 2009-04-16 23:56 杨磊 阅读(158) | 评论 (0) | 编辑 收藏
 
转一篇字符串Hash函数的文章
http://www.cmykrgb123.cn/blog/string-hash-compare/

常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。

常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。

Hash函数 数据1 数据2 数据3 数据4 数据1得分 数据2得分 数据3得分 数据4得分 平均分
BKDRHash 2 0 4774 481 96.55 100 90.95 82.05 92.64
APHash 2 3 4754 493 96.55 88.46 100 51.28 86.28
DJBHash 2 2 4975 474 96.55 92.31 0 100 83.43
JSHash 1 4 4761 506 100 84.62 96.83 17.95 81.94
RSHash 1 0 4861 505 100 100 51.58 20.51 75.96
SDBMHash 3 2 4849 504 93.1 92.31 57.01 23.08 72.41
PJWHash 30 26 4878 513 0 0 43.89 0 21.95
ELFHash 30 26 4878 513 0 0 43.89 0 21.95

其中数据1为100000个字母和数字组成的随机串哈希冲突个数。数据2为100000个有意义的英文句子哈希冲突个数。数据3为数据1的哈希值与 1000003(大素数)求模后存储到线性表中冲突的个数。数据4为数据1的哈希值与10000019(更大素数)求模后存储到线性表中冲突的个数。

经过比较,得出以上平均得分。平均数为平方平均数。可以发现,BKDRHash无论是在实际效果还是编码实现中,效果都是最突出的。APHash也 是较为优秀的算法。DJBHash,JSHash,RSHash与SDBMHash各有千秋。PJWHash与ELFHash效果最差,但得分相似,其算 法本质是相似的。

在信息修竞赛中,要本着易于编码调试的原则,个人认为BKDRHash是最适合记忆和使用的。。

附:各种哈希函数的C语言程序代码


unsigned int SDBMHash(char *str)
{
unsigned 
int hash = 0;
while (*str)
{
// equivalent to: hash = 65599*hash + (*str++);
hash = (*str++) + (hash << 6) + (hash << 16) - hash;
}
return (hash & 0x7FFFFFFF);
}

// RS Hash Function
unsigned int RSHash(char *str)
{
unsigned 
int b = 378551;
unsigned 
int a = 63689;
unsigned 
int hash = 0;
while (*str)
{
hash 
= hash * a + (*str++);
a 
*= b;
}
return (hash & 0x7FFFFFFF);
}


// JS Hash Function
unsigned int JSHash(char *str)
{
unsigned 
int hash = 1315423911;
while (*str)
{
hash 
^= ((hash << 5) + (*str++) + (hash >> 2));
}
return (hash & 0x7FFFFFFF);
}

// P. J. Weinberger Hash Function
unsigned int PJWHash(char *str)
{
unsigned 
int BitsInUnignedInt = (unsigned int)(sizeof(unsigned int) * 8);
unsigned 
int ThreeQuarters    = (unsigned int)((BitsInUnignedInt  * 3) / 4);
unsigned 
int OneEighth        = (unsigned int)(BitsInUnignedInt / 8);
unsigned 
int HighBits         = (unsigned int)(0xFFFFFFFF) << (BitsInUnignedInt - OneEighth);
unsigned 
int hash             = 0;
unsigned 
int test             = 0;
while (*str)
{
hash 
= (hash << OneEighth) + (*str++);
if ((test = hash & HighBits) != 0)
{
hash 
= ((hash ^ (test >> ThreeQuarters)) & (~HighBits));
}
}
return (hash & 0x7FFFFFFF);
}

// ELF Hash Function
unsigned int ELFHash(char *str)
{
unsigned 
int hash = 0;
unsigned 
int x    = 0;
while (*str)
{
hash 
= (hash << 4) + (*str++);
if ((x = hash & 0xF0000000L) != 0)
{
hash 
^= (x >> 24);
hash 
&= ~x;
}
}
return (hash & 0x7FFFFFFF);
}

// BKDR Hash Function
unsigned int BKDRHash(char *str)
{
unsigned 
int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned 
int hash = 0;
while (*str)
{
hash 
= hash * seed + (*str++);
}
return (hash & 0x7FFFFFFF);
}

// DJB Hash Function
unsigned int DJBHash(char *str)
{
unsigned 
int hash = 5381;
while (*str)
{
hash 
+= (hash << 5) + (*str++);
}
return (hash & 0x7FFFFFFF);
}

// AP Hash Function
unsigned int APHash(char *str)
{
unsigned 
int hash = 0;
int i;
for (i=0; *str; i++)
{
if ((i & 1) == 0)
{
hash 
^= ((hash << 7) ^ (*str++) ^ (hash >> 3));
}
else
{
hash 
^= (~((hash << 11) ^ (*str++) ^ (hash >> 5)));
}
}
return (hash & 0x7FFFFFFF);
}

posted @ 2009-04-16 22:12 杨磊 阅读(567) | 评论 (0) | 编辑 收藏
 
MySQL无法远程连接问题
今天在Lab想连一下MySQL的数据库,因为电脑不知道什么时候被人关掉了

今天又被我开起来了,之前连的都好好的,我也没做过什么特殊的处理

大概就是刚刚装好的时候,security的那个check一直过不了,然后我就搞来搞去弄了什么权限的东西

我自己都记不得是什么指令了,但是其实还是我对数据库这东西不熟悉,只懂一点点的简单的SQL

然后今天就发现连不上了,Error Number 1130,于是我去Google一下,发现这个是远程root用户没有权限的问题

原来root用户只有本地的权限,需要手动将远程的权限打开,尝试了好几种方法,最后还是下面这种方法管用


 在安装mysql的机器上运行:
1、d:"mysql"bin">mysql -h localhost -u root
//这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
//退出MySQL服务器

想懂很多东西。


posted @ 2009-04-16 19:28 杨磊 阅读(1419) | 评论 (0) | 编辑 收藏
 
再一次见识了Java的慢……
Fence Rails

一道感觉很不错的搜索+剪枝的题目,当然剪枝策略我是参考来的,我自己想到的都是小剪枝

然后我自己用Java实现了,结果发现……,这速度啊,真让我郁闷,居然在第四个点就超时了

但是同样的算法用C++实现的代码,快了100+倍。

难怪现在还有这么多人在搞C++,也难怪有人批评说Java速度慢,还有些人在反驳

事实却是如此啊。

代码贴一下吧,TLE的,如果有人愿意的话,可以转成C++用就行了

其实我是想能不能再改进改进,让它用Java也能过,但是感觉很难,我已经想不出更好的剪枝的办法了

或者另外一个方法就是空间换时间,但是感觉已经没什么好换的了,该开的数组都开了。

 1 import java.io.*;
 2 import java.util.*;
 3 /*
 4 ID: yanglei4
 5 LANG: JAVA
 6 TASK:fence8
 7 */
 8 public class fence8{
 9     int wastemax = 0;
10     int ans;
11     int N,R;
12     int[] remain;
13     int[] rails;
14     int[] from = new int[1100];
15     PrintWriter out;
16     
17     public void dfs(int k, int waste) {
18         if (k < 0) {
19             out.println(ans + 1);
20             out.close();
21             System.exit(0);            
22         }
23         int i;
24         if(k != ans && rails[k] == rails[k + 1]) i = from[k + 1]; 
25         else i = 0;
26         
27         for (i = 0; i < N; i++) {
28             if (remain[i] >= rails[k]) {
29                 
30                 from[k] = i;
31                 remain[i] -= rails[k];
32                 if (remain[i] < rails[0]) waste += remain[i];
33                 if (waste > wastemax) {
34                     waste -= remain[i];
35                     remain[i] += rails[k];
36                     continue;
37                 }
38                 dfs(k - 1, waste);
39                 remain[i] += rails[k];
40             }
41         }
42     }
43     
44     public void done() throws IOException {
45         BufferedReader f = new BufferedReader(new FileReader("fence8.in"));
46         out = new PrintWriter(new BufferedWriter(new FileWriter("fence8.out")));
47         //Read the boards
48         N = Integer.parseInt(f.readLine());
49         int[] boards = new int[N];
50         int boardSum = 0;
51         for (int i = 0; i < N; i++) 
52             {
53                 boards[i] = Integer.parseInt(f.readLine());
54                 boardSum += boards[i];
55             }
56         Arrays.sort(boards);
57         
58         remain = new int[N];
59         for (int i = N - 1; i >= 0; i--) remain[i] = boards[i];
60         
61         // Read the rails
62         R = Integer.parseInt(f.readLine());
63         rails = new int[R];
64         int railSum = 0;
65         for (int i = 0; i < R; i++)
66             rails[i] = Integer.parseInt(f.readLine());        
67         Arrays.sort(rails);
68         
69         int i;
70         for (i = 0; i < R; i++) {
71             if (railSum + rails[i] > boardSum) 
72                 break;
73             railSum += rails[i];
74         }
75         int k = i - 1;
76         //Try every possible number
77         for (i = k; k >= 0; i--) {
78             ans = i;
79             wastemax = boardSum - railSum;
80             railSum -= rails[i];
81             dfs(i,0);
82         }
83         out.println(0);
84         out.close();    
85     }
86     public static void main(String[] args) throws IOException {
87         fence8 t = new fence8();
88         t.done();
89         System.exit(0);
90     }
91 }
92 


posted @ 2009-04-16 16:50 杨磊 阅读(195) | 评论 (0) | 编辑 收藏
 
UML Structure zz from Wiki

posted @ 2009-04-15 00:10 杨磊 阅读(153) | 评论 (0) | 编辑 收藏
 
不容易啊,做了好几个小时
     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->  1 import java.io.*;   2 import java.util.*;  &n...  阅读全文
posted @ 2009-04-14 00:53 杨磊 阅读(144) | 评论 (0) | 编辑 收藏
 
仅列出标题
共10页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 
随笔:99 文章:-1 评论:17 引用:0
<2025年9月>
日一二三四五六
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • ACM(43) (rss)
  • Boost(5) (rss)
  • 开发感言(2) (rss)
  • 心情日记(3) (rss)

随笔档案

  • 2009年5月 (12)
  • 2009年4月 (26)
  • 2009年3月 (5)
  • 2009年2月 (7)
  • 2009年1月 (1)
  • 2008年12月 (1)
  • 2008年11月 (4)
  • 2008年10月 (1)
  • 2008年8月 (10)
  • 2008年7月 (1)
  • 2008年6月 (7)
  • 2008年5月 (16)
  • 2008年4月 (3)
  • 2008年3月 (2)
  • 2008年2月 (1)
  • 2007年12月 (1)

相册

  • BlogPicture

搜索

  •  

最新评论

  • 1. re: Boost Thread学习笔记三
  • Mediator的构造函数也许缺少一句如下:
    for ( int i = 0; i < _slotCount; i++ ) _pSlot[i] = NULL;
  • --Harly
  • 2. re: SGU 102
  • 博主这个代码的原理是什么啊?看不大懂欸
  • --lph
  • 3. re: Boost Thread学习笔记五
  • 确实厉害
  • --12
  • 4. re: USACO 终于做完了
  • TOPCODER的数据更坑爹。各种challenge会导致各种刁钻数据都被选手钻研出来了
  • --cot
  • 5. re: 各种话题
  • 评论内容较长,点击标题查看
  • --zvin

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 杨磊