Tag cloud
adobe algorithm android apache Arch Archlinux birthday blogging C++ C++ Primer domain DreamHost English Firefox font fun G1 game GFW GnuPG Google holiday Java life Linux mail Mobile music network nVidia OI PageRank pal password programming qq science template Tor Ubuntu Vijos webmaster tools windows wordpress WoWCategories
Archives
- August 2010
- July 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- September 2009
- July 2009
- June 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.Meta
Tag Archives: algorithm
[OI][Vijos 1107]环游大同 80 天
话说这题是一个搜索题。 我采用的是两次 DFS 的方法,也就是任意取一个点开始 DFS,找到这次 DFS 时深度最深的点(也就是从所选点开始最长路径的终点),然后从这一点(可以证明,这一点是最长路径的端点)开始再进行 DFS,这次 DFS 的深度就是要求的路径长度。 算法就是这样了,不过这个算法的正确性我一开始也不太确定,下面来证明一下: 大家看图: 设最长路径为 AB ,一开始任选的点为 P。取路径 PB 上的一点 Q,使得 AQ 与 PQ 只有一个公共点 Q(也就是使得从 A 走到 Q 再走到 B 不会走回头路)。设 AQ=a,QB=b,QP=s,不妨设 a<b。 要证明这个算法的正确性,也就是要证明从 P 开始的最长路径的终点一定是 A 或 B。假设从 P 开始的最长路径的终点是 … Continue reading
[OI][Vijos 1214]伤心的AsukaNoKaze
这题算是个数论题。 其实也没用到什么数论结论,首先手算找找规律。发现,对于 [tex]\forall x\in (\frac{n}{i+1},\frac{n}{i+1}],x\in {\mathbb Z}[/tex] 有 [tex]n ~{\mathtt div}~ x[/tex] 为常数[tex]i - 1[/tex],于是这一区间内的数就可以只算一次,然后将结果乘以区间内整数的个数就行了。但当[tex]i>\sqrt{n}[/tex]时,每个区间的长度[tex]\frac{n}{i}-\frac{n}{i-1}\sqrt{n}[/tex]时,进行朴素的计算。 时间复杂度 [tex]O(\sqrt{n})[/tex],空间复杂度 O(1)。 算法就是这样了,刚开始写的时候 TLE 了,原因是作为循环条件的 sqrt(n) 没有提前计算出来,于是导致了很多不必要的运算,多么低级的错误…… C++ 代码在这里。 P.S. 突然想做编号是大家生日的题目,这题编号是我一个朋友的生日,自己的生日编号的题目的状态是暂不提供…… Tags:algorithm,C++,OI,Vijos Related Posts [OI][Vijos 1107]环游大同 80 天 (2) [OI][Vijos 1059]积木城堡 (1) NOIP2007 完结 … Continue reading
[OI][Vijos 1059]积木城堡
一年没写代码了,这周又开始拿起我那二把刀,开始切题了…… 看到我们的小妹妹写了积木城堡这个题,于是我也从这题开始了…… 简单的 0/1 背包,渐进时间复杂度(大概)是 O(N*n*n),渐进空间复杂度(大概)是 O(N*n*n),其中 N 为城堡数量, n 为组成每个城堡的积木数。 这题有着 Vijos 的一贯传统,就是题目描述令人 confused,就这题来说,从中间抽取积木还能使城堡不倒,不得不说是有一定功力,抽出的积木就扔在一边,不能不说是浪费。其实这都可以在题目中说清楚的。 开始做,一开始用了 bitset (在 NOIP 中允许使用),结果 TLE ;后来优化了读入,还是 TLE,后来砍掉了 bitset ,用 boolean array,提交无数次后(Vijos 最近服务器有问题,运行程序忽快忽慢,随机 TLE 的现象时有发生),终于 AC 了。 代码可以看这里,其他 vijos 的代码也在那里。 事实证明, bitset 的效率并不高,竞赛的时候应远离 bitset …… … Continue reading