摘要:
pagesectionnotitlesubmit1131.5.1例题1括号序列POJ11411161.5.1例题2棋盘分割POJ11911171.5.1例题3决斗Sicily18221171.5.1例题4“舞蹈家”怀特先生ACM-ICPC Live Archive1191.5.1例题5积木游戏http://202.120.80.191/problem.php?problemid=12441231.5.2例题1方块消除http://poj.org/problem?id=13901231.5.2例题2公路巡逻http://202.120.80.191/problem.php?problemid=1 阅读全文
摘要:
转自白神:http://hi.baidu.com/%B0%D7%D2%C2%C9%D9%C4%EA2012/blog/item/d2a1a43291acbe3c0a55a9b7.htmlSingle Round MatchSRM 522 DIV1 1050pt ( 很不错的dp题,先需要思考来分析各种情况 ) 推荐代码: practice room writerSRM 521 DIV1 500pt ( 枚举+小偏移,考思路 ) 推荐代码: ACRush,crazyb0ySRM 521 DIV1 1000pt ( dp+矩阵相乘,主要是考状态表示和转移矩阵的建立 ) 推荐代码: 官方题解SRM 阅读全文
摘要:
大学的我们 怀着憧憬怀着渴望 踏上ACM的舞台 梦想的花朵开始绽放 多少次讨论中思想的碰撞 多少次指尖敲击键盘发出的声响 多少次看到Wrong answer无奈与挣扎 多少次闪出期待Accepted的眼光 多少次出现红色Accepted的喜悦 多少次从早到晚的辛勤付出 多少次伴随着朝阳进入梦乡 或许我们曾被困惑难倒 但我们从未泯灭学习的渴望 或许我们感受到过疲倦 但我们从未放弃追求梦想 小小的电脑承载我们的辛酸和汗水 我们在一次次的思考、编码中成长 风雨兼程,挫折失败 我们一路走来 十年铸剑,只为炉火纯青 一朝出鞘,定当倚天长鸣 看吧,那赛场上飘扬的... 阅读全文
摘要:
这是一篇老文章,不过由于无法找到最初的发文地址,这里就不能粘贴原文网址了。本站转载此文与ACMer们共勉。感谢acmerfight供稿。题解:还记得2年前的一个晚上,我和一个女孩一起写完了这篇文章。写完后,她哭了,我笑了。然后,她走了,我哭了。2年后,我又找到她,这次,我没有让她走掉,她成了我的新娘。不知道什么时候,开始知道ACM;也不知道什么时候,开始喜欢上ACM。但是,我知道,我喜欢上了,而且不会后悔。我是大一的时候进的学校ACM队,那个时候,一切都是冰冷的,华东理工大学,在别人的眼里,只是每次给别人垫底的学校,次次如此。但是,我们不甘心,我们从不甘心,当我们主力队员中的一个,一个月拼命集 阅读全文
摘要:
//打星号的表示个人认为比较经典,或是算法比较好的题目共80题,各种类型,背包,树形dp,状态dp。。。。1014* Dividing半个背包,注意中断 √1036 Gangsters √f[i]表示第i个人成功进入后,前i个人的最优值。。。 f[i]由f[j]转移来,(0 <= j < i)。。。。注意T和S的值符合逻辑,一个250的错误,搞掉好几次wa。。。1038* Bugs Integrated, Inc.状态压缩 √ http://www.cnblogs.com/vongang/archive/2012/07/30/2615322.html 1050 To the Max 阅读全文
摘要:
一位ACMer过来人的心得(转载)刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练? 我想说下我的理解。 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。 我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。 其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间, 我们训练的目的是什么?我觉得有四点 1、提高编程能力 2、学习算法,(读书,读论文,包括做一些题目验证) 3、准备好面临将到来的挑战(熟悉题型,调整心态) 4、启发思维。 这里四 阅读全文
摘要:
新建一个blog,没钱买域名跟空间,蹭github的域名跟空间吧URL = http://vongang.github.io/欢迎关注~~~ 阅读全文
摘要:
题目:http://code.bupt.edu.cn/problem/p/84/Given an array withNintegers where all elements appear three times except for one. Find out the one which appears only once.N(1≤N≤10^5) All elements are ranged in[0,2^63−1];好吧。以前看过每个数都出现两次,只有一个出现一次,找这个数的题目。这个还真新颖。。。数据卡的O(nlogn)一丁点就不行,甚至O(N*64)都不行。。。无语了。。。在quor 阅读全文
摘要:
一面:18号坐车到北京,19号下午4点面试。面试官很和善,是位美女,后来才知道她是北邮研究生毕业,工作一年就能带一个项目。。。仰慕。。。进屋没有自我介绍,丢给我一道题。统记一篇文章有多少单词?我。。。有点懵。。。想好用map但是手生在纸上写代码有点卡壳。。。然后问:我能先说一下思路吗?其实我是想自己整理一下思路-_-。得到回答是不用,直接写就行。-_-没有考虑各种特殊情况。。。写完给她看,然后指出好多问题,我又继续补充代码。。。最后这题总算过去了-_-问题二:求一个数列的最大字段和这问题貌似做过,直接写的o(n)的dp,跟她说好像没太说明白。然后她让我想二分思路。。。我就琢磨了,现在是o(n) 阅读全文
摘要:
topcoder被Appirio收购了 好久没做tc,这个题目挺简单。就是Arena里面看不到图片,只能去tc网站上找题目。http://community.topcoder.com/stat?c=problem_statement&pm=12746#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 阅读全文
摘要:
/*实现思路很简单,就是以每一个像素点为中心框一个N*N的矩形,将矩形内的所有像素值排序,得到中位数,再重新把这个点的像素值设为中位数。*/#include "stdafx.h"#include #include #include #include using namespace std;const int N = 3;int pixl2int(IplImage *img, int x, int y) { return ((uchar *)(img->imageData + x*img->widthStep))[y];}void setPixl(IplImage 阅读全文
摘要:
把数位dp写成记忆化搜索的形式,方法很赞,代码量少了很多。下面为转载内容: apositiveintegernumberisbeautifulifandonlyifitisdivisiblebyeachofitsnonzerodigits.问一个区间内[l,r]有多少个Beautiful数字范围9*10^18数位统计问题,构造状态也挺难的,我想不出,我的思维局限在用递推去初始化状态,而这里的状态定义也比较难跟pre的具体数字有关问了NotOnlySuccess的,豁然开朗Orz一个数字要被它的所有非零位整除,即被他们的LCM整除,可以存已有数字的Mask,但更好的方法是存它们的LCM{dig. 阅读全文
摘要:
话说好久没有写过总结了,得好好反思一下。不管做什么事,定期抽时间总结一下总是好的。今年春天发生了很多事,腾讯马拉松,通化邀请赛,还有就是前几天的省赛。有好多话想说,但是不知道从何说起。 这是我印象里第一次老师带着好几个队浩浩荡荡的参加比赛,第一第二届的省赛有过,但是我没机会见到,第三届是在本校举办的,也看不出来壮观。我记得第一次参加比赛去上海,当时好羡慕那些神校去打个比赛都一大队人去。 8号早晨出发去青岛,2个多小时到青岛后乘坐雷人的“隧道3号线”直奔黄岛,等到了石油大学报名住宿安排好了以后已经中午了。午饭后下午热身,很碰巧的是我们跟海大的坐对面。。。顿时感觉压力好大。热身赛题目没啥可... 阅读全文
摘要:
Some key wordvoid * void指针函数指针fork()进程通信管道多线程(注意遵循操作系统的时间片调度)互锁信号量 阅读全文
摘要:
题意:求[l, r]区间内不重复的数的和。N个数,M次询问解:离线处理M次询问,看得别人的思路后才知道的。。。思维局限在预处理N个数上了。。。对M次询问按右区间的值从小到大排序。扫一遍N个数,如果发现当前这个数在之前出现过,就从之前出现这个数的位置上把这个数删除,在新位置上插入这个数。这样做的好处是删除前面重复的不会影响后面的。时间复杂度控制在(N + M)logN的数量级上。ps:午不眠,困乎,我命休矣。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#i 阅读全文
摘要:
很明显的Polya计数法,但是有一个纠结的地方就是这个k rotation不是给定的,而是然自己求出来的。因为数据比较大,暴力找的话肯定TLE,开始没想到怎么做。后来看到有人说用kmp,好吧,我又水 了。。。。。做法: 定义数组vv[],vv[] = v[] + v[], 就是把两个v[]数组接起来作为匹配串,原串v[]作为模式串。O(n)跑一遍kmp,看在哪些位置正好匹配。然后polya计数就行。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#inclu 阅读全文
摘要:
欧拉定理(又称费马-欧拉定理):已知a和n为正整数,并且a和p互素,则a^phi(n) ≡1(mod n)。证明: 设集合Z = {X1, X2, X3, .... , Xphi(n)},其中Xi (i = 1, 2, .. phi(n))表示第i个不大于n与n互质的数。 考虑集合S = {a*X1(mod n), a*X2(mod n), ... ,a*Xphi(n) (mod n) },则集合Z = S; 1) 因为a和n互质,Xi和n也互质,所以a*Xi 也与n互质。所以对任意一个Xi,a*Xi (mod n)一定是Z里面的元素; 2)对于任意Xi, Xj, 如果Xi != Xj... 阅读全文
摘要:
Moore’s NimkNim游戏的简单扩展,不过证明我还是想了一些时间的。n堆石子,每次从不超过k堆中取任意多个石子,最后不能取的人算失败。把n堆石子的石子数用二进制表示,统计每一二进制位上的1的个数,若每一位上1的个数mod (k + 1)全为0,则必败。否则必胜证明:1.显然终止局面全为0满足命题,为必败态2.对于某个局面,若存在某些二进制位上的1的个数mod (k + 1)不为0,则一定存在一个合法的移动,使得每一个二进制位上的1的个数mod(k + 1)等于0。设1的个数mod(k + 1)不为0的最高二进制位上有m个1,则把这些1都变成0,记此时改变的堆数为m,若遇到下一个1的个数 阅读全文
摘要:
周冬的《两极相通——浅析最大最小定理在信息学竞赛中的应用》把方法讲的很详细了。几点:1、把平面图G*中每一个面抽象成对偶图G*中的点。2、平面图包含f个面,设边e分割fi, fj,则连边(fi, fj)。3、关于如何区分源点和汇点。可以先连接s和t,得到一个附加面。如下图s->4->7->t->s,s*放到附加面中,t*放到无边界的面中,加以区分。4、建好图后要把(s*, t*)这条边删掉。5、G的面数等于G*的点数,G*的点数等于G的面数6、G与G*边数相同 G*中的环对应G中的割一一对应如图:hdu 3780题意是求最小割。直接套网络流模板会TLE。转换成最短路模型 阅读全文
摘要:
开始还以为是简单博弈,后来发现是楼教主的男人八题里面的,好吧。我想不到怎么构造最优解。。。http://blog.csdn.net/niushuai666/article/details/6639977这里讲的很详细,总结起来就是:当一堆时,必胜,两堆相同时,必败,三堆时,可以一次转化成为两堆,所以必胜。故:a1,a2,a3…………an为必败点<=>当n为偶数时,对a1--an进行从小到大或从大到小排序,如果有a1=a2,a3=a4,…………an-1=an,必败当n为奇数时以及其它的情况则必胜 阅读全文
摘要:
题意:一个有向无环图,制定M个点,每个点有一个石子。A,B两个玩家轮流移动这些石子(石子只能沿合法的边移动),最后没有石子可移的算输。如果光看一个石子的话,这他妹的就是sg函数的定义啊。。。然后对整个图处理一下每个点的sg值。对这M个点怎么处理,这么想吧。假设其中一个点为i,其sg值为sg[i] = a (a != 0)那可以发现,i可以走向[0, a-1]的任意sg值,这相当与什么?相当与这里有一堆石子,共a个。。。。M个点就是M堆石子,每堆石子的个数就是这个点的sg值。好吧Nim博弈出来了。。。ps:有谁能把抑或傻逼的写成与,有谁能把标记数组写成全局变量???我能!脑子进屎了!#inclu 阅读全文
摘要:
跟 HDU 4057Rescue the Rabbit差不多的AC自动机+dp,比赛的时候被虐成傻逼了!!!999的状态不多,直接状态压缩就行。dp[i][ACstatus][status] 到字符串第i位置,在AC自动机上状态为ACstatus,包含到999的状态为status。更新了一下自动机的模板。。。Orz简洁写法View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include &l 阅读全文
摘要:
http://blog.csdn.net/laziercs/article/details/8738504方法很巧妙,把二维转成一维的线段树了。。。数学功底啊。。。 阅读全文
摘要:
Stack is one of the most fundamental data structures, which is based on the principle of Last In First Out (LIFO). The basic operations include Push (inserting an element onto the top position) and Pop (deleting the top element). Now you are supposed to implement a stack with an extra operation: Pee 阅读全文
摘要:
先保存一下代码,回头写题解。View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <functional>#include <numeric>#include <sstream>#include <st 阅读全文
摘要:
250...500...1000 比赛的时候没思路。倒是想到一种trick,想cha人来着,后来发现房间里没有人提交。。。只想到了预处理出从一个点到另一个点走m步所要用到的情况数,发现dp空间复杂度太高。今天看了一下别人怎么预处理的,我还是太嫩啊。。。dp[dx][dy][m]表示走m步坐标移动了(dx, dy)所有的情况数。记忆化搜索一下。const int MAXN = 55;const int MOD = 1e9+7;int dp[MAXN][MAXN][MAXN];int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};class Wol. 阅读全文
摘要:
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2412 实验证明,被小错误搞死的感觉太不爽了!! 这题是去年省赛的题,今天重新做了一下。我了个去。被俩二b错误搞死了。!! 思路:先预处理出某一秒如果切的话能得到的最大值。然后单调队列优化一下就行。 View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring& 阅读全文
摘要:
From:http://hi.baidu.com/lydrainbowcat/item/f16e64103f8c5c088fbde44cPOJ【数论/组合/博弈论】题目列表原来的列表比较水,今天换了一个难一些的列表,重新开始做~红色的代表已经AC过,蓝色的代表做了但是还没过。这句话貌似在我空间里的每份列表里都有额。博弈论POJ 2234 Matches GamePOJ 2975 NimPOJ 2505 A multiplication gamePOJ 1067 取石子游戏 威佐夫博弈,奇异局势(必败局)为ak = [k*(1 + sqrt(5))/2], bk = ak + k;POJ 24. 阅读全文
摘要:
英语太弱怎么拼手速?题目看不懂怎么拼手速?啊啊啊啊啊。。。。背单词去! 阅读全文
摘要:
看了一些旋转卡壳的资料。理解的还是不深,推荐博客:http://blog.csdn.net/ACMakerPOJ2187裸凸包+旋转卡(qia)壳,O(n^2)的枚举也能过View Code //#pragma comment(linker,"/STACK:327680000,327680000")#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm& 阅读全文
摘要:
大牛无视。。。昨晚0点比赛,木有参加。今天做了做。。。div2的250pt和500pt都是简单题。1000pt不会。。。div1的250pt用dfs构造一下就行。vector<string> res;int N;class FoxAndMp3 {public: void dfs(int x, string s) { if(x > N) return ; if(res.size() > 50) return ; if(x != 0) res.push_back(s + ".mp3"); for(int i = 0; ... 阅读全文