自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 trainging contest#2(2011成都现场赛)D BY bly

这种dp其实不算难,状态什么的都不难想,就是需要用SPFA写,不然就会莫名奇妙的WA 昨天用dp写,怎么改都是WA,确切的说应该说是记忆化搜就WA 今天改成用SPFA就过了,还有我把堆优化的dij和SPFA搞混了,结果第一次跑了9kms+,改对了之后跑了6kms+。 这题有2各地方需要注意,一个是需要用floyd预处理, 还有一个就是如果一个地方可能有多个景点,而如果要参观景点,那么他必然

2013-10-13 16:31:45 510

原创 pc^2 比赛 H Bounce by Hyoga

暴力的迭代加深搜索即可。12ms无语了…… 注意别都错或读露题目。 1.结束点在第一行开始点的右边即可 2.至少重复两次 #include #include #include using namespace std; const int d1x[]={-1,-1,1,1,0,0}; const int d1y[]={0,1,0,1,-1,1}; const int d0x[]={-1,

2013-10-08 22:27:34 758

原创 Tri_integral Autumn Training 5 zoj 3294 Utawarerumono by Hyoga

题目是可以做的,感觉这个题目就是:脑筋急转弯+预处理+网络流。比赛的时候队友其实已经想的差不多了,就是一直觉得边太多没敢去尝试。实际上当满足所有条件之后边非常少不超过10000。跑网络流完全可以承受。 1.bitcount[i]>11是个很有力的剪枝。这么一搞符合条件的数i、j只有3000多个了。 2.对于题目中说的这个条件“For a square formed by n*n unit sq

2013-10-08 21:00:13 584

原创 trainging contest#2(2011成都现场赛)A BY bly

额,这题我想了半场也没有想出来,思维是硬伤…… 比赛的时候只是想到了,减1和合并都只算一个操作数,唯一的例外是减掉一个1时,算两个操作数。 于此同时减去最后一个1时只算一个操作数。 设状态为dp[i][j],i表示1的个数,j表示非1堆全部消除所需的操作数。 然后根据博弈的基本准则,即当一个状态的后继状态有一个必败状态,则该状态为必胜状态,反之为必败状态。 然后注意状态的转移,记忆化搜即

2013-10-04 21:15:01 477

原创 trainging contest#2(2011成都现场赛)G BY bly

一道AC自动机+DP,因为单词可能重复,所以记录结点信息的需要是以个vector,然后dp的时候需要递归的更新dp值,因为一个结点可能为多个单词的结尾。 #include #include #include #include #include #include #include using namespace std; const int maxn=300010; const

2013-10-04 20:12:49 475

原创 2013 长春网预赛 hdu4758_ Flyer BY hyoga

没有根据题目所说的答案的性质想到二分。 注意到题目中说there is at most one student who is unlucky。也就是至多只有一个学生会得到奇数个。 那么如果所有学生的总数为偶数个,则所有学生都是lucky的。 否则可以二分枚举答案x,判定所有 比较简单的题目,比赛当时没有想到怎么做…… #include #include using namespace

2013-10-01 17:33:15 696

原创 南京网预赛 2013 Install hdu4756_Air Conditioning BY hyoga

题意是求依次删除某条边之后的最小生成树里的最大值(与相连的边不能删除)。 可以先做MST,然后枚举MST中的边。删除边(u,v)之后会剩下2个子树,接下来需要找使得两个子树相连的最小边。这个可以用dp预处理出来,dp[u][v]表示删除边(u,v)之后以u为根的子树和以v为根的子树相连的最小边值。 O(n^2) #include #include #include #include #i

2013-10-01 16:41:36 794

原创 长沙网预赛 2013 C Color Representation Conversion BY hyoga

垒代码的模拟题。容易WA 做题目注意两点: 1.全部用double做,最后round 2.c++里面有实数的mod:fmod 然后就AC了。 总之以后这种恶心的模拟题还是全部用实数做吧…… #include #include #include #include #include #include #include using namespace std; const dou

2013-10-01 16:31:10 749

原创 南京网预赛 11 BY bly

建个只有2个串的AC自动机,状态为dp[i][j][k][st]表示向右走了i步,向下走了j步,位于结点k,状态为st的总的方案数。 直接裸dp可过,一炮AC,比赛的时候这题看都没有看,比较可惜……主要是比赛前期出题要稳。 #include #include #include #include using namespace std; typedef long long LL; c

2013-09-26 22:44:13 553

原创 trainging contest#2(2011成都现场赛)I BY Hyoga

模拟题,用STL可以快速A掉。 我傻×的读错题目了,耗了好长时间……注意题目这句话:The way to compare two messages is to compare the words of two messages one by one, and the first pair of different words in the two messages will determin

2013-09-25 18:54:24 510

原创 trainging contest#1(2011大连现场赛)C BY bly

需要推出一个很奇妙的性质,知道了这个性质之后这道题就是道简单区间dp了。 就是一段区间[i,j]必须从2个端点之一开始按,仔细想想确实是这样的,比赛的时候贪心不出dp顺序,还以为是搜索(还是思维太弱了……) 这样设置状态dp[i][l][0]为区间[i,i+l]先取第一个所需的最短时间                          dp[i][l][1]为区间[i,i+l]先取最后一个所

2013-09-24 16:58:17 855

原创 南京网预赛02 BY bly

刚开始的时候把题目想简单了,交了好多炮,始终是WA,浪费了很多时间。 其实这题就是按规则将kmp做个变形,找出原串中所有可以匹配的起始位置,然后dp一遍即可得到结果。 可能是kmp打的太少,比赛的时候因为在找到匹配时,没有沿失配边往回走一步,结果没有过…… 赛后加上一句话就过了,sigh~ #pragma comment(linker, "/STACK:10240000000,1024

2013-09-24 12:08:17 613

原创 trainging contest#1(2011大连现场赛)I BY bly

先因式分解,记录所有的因子 然后直接容斥即可,四次方和公式:n*(n+1)*(2*n+1)*(3*n^2+3*n-1)/30 #include #include #include using namespace std; typedef long long LL; const LL mod=1000000007; int vis[1000010],c; LL rev; int pri

2013-09-23 21:30:29 587

原创 trainging contest#1(2011大连现场赛)G BY bly

AC自动机+状压DP,这个相当明显 状态设置为dp[len][u][st]表示在自动机内走了len步后,位于结点u,经过的pattern的状态为st时,所能取得的最大value。 然后就很容易得出状态方程了。 这里需要用到滚动数组,否则MLE。 刚开始用的是递归的方式写的,坑了2炮,最后没办法,只能改成迭代写。 因为平时迭代写的不多,所以改得比较慢,调了好久才过,这里以后需要注意!

2013-09-23 21:24:00 495

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除