RT。。我要翻译此论文。。先留空地。。。
CF。。。
被虐的好惨啊好惨啊好惨啊好惨啊好惨啊好惨啊好惨啊
我好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊
最近各种比赛。。。
早上那个愿望群的模拟赛题目有点意思。。就是第三题是原题然后第二题想出来但没时间写了。。
然后下午去参加CF的那个神马Team Contest的。。
被虐的好惨啊好惨啊好惨啊好惨啊好惨啊好惨啊好惨啊
我好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊好弱啊
连续比赛9小时~~(SGU+COCI)
从下午3点一直做到现在。。。
整个人接近垮掉囧。。太悲剧了T_T。。。
SGU 517 Cornerless Tiling
各种找规律。。
还有特殊处理3*n和2*的情况。。
Match
Match
Time Limit:5000MS Memory Limit:65536K
Total Submit:11 Accepted:7
Case Time Limit:1000MS
Description
PP发明了一种新的串匹配!
给出一个长度为N的整数串A,和一个长度为K(K<=N)的整数串B,A和B中的元素均是不大于S的正整数,我们认为两个串是相等的,当两个串的长 度相当,并且两个串中,对于任意的i,第i个元素在两个串中的排名是一样的。
例如:
1 2 3 5 4
8 10 23 25 24
这两个串是相等的。
现在要求在A的所有长度=B的长度的子串中,有多少子串与B串相等。
Input
第一行三个整数N,K,S。
第二行N个整数表示A串。
第三行K个整数表示B串。
Output
第一行一个P表示A串中一共有多少个子串和B串相等,
接下来P行从小到大每行一个整数,表示和B串相等的A串的子串的第一个元素的位置。
Sample Input
9 6 10
5 6 2 10 10 7 3 2 9
1 4 4 3 2 1
Sample Output
1
3
数据规模:
对于20%的数据N<=10000
对于100%的数据N<=500000,S<=10000
Source
By Mt
这个题目看到之后的第一想法是扩展性的匹配问题。。
那么自然是要改造经典算法了。。
RK算法。。想了一会儿觉得不太靠谱。。
KMP算法。。
KMP算法的使用条件是。。
空串只能等于空串。
两个串相等,那么他们的任意等长前缀也相等。。
这个在此题中是成立的。。
那么我们只需要算出前缀函数。。然后KMP一遍就解决了。。
因为计算前缀函数需要快速知道两个原本相等的字符串,各自+上一个字符之后是否还是相等。。
那么也就是说要有能力计算出一个子序列最后一个字符在这个子序列中的排名。。
这。。。
似乎是划分树的经典应用。。但用划分树是不是太囧了一点?
线段数LogN^2估计会超时。。
那么只好观察一下问题看看有没有神马区间的特殊性质了。。
可以发现需要进行的询问有两种。。一种是在开头处进行。。为A[0…p-1]中有几个数比A[p]小。。扫描一遍就可以了。。
还有一种在KMP过程中的询问。。左右端都是单调递增的。。。
OK了。
SRM199 ClosestPoints
随机分布的三维最近点统计问题。。
注意到点是随机分布的。。弄个KD树瞎搞。。。
TCO Final 2010 题解
首先这个题解基本上是看Petr的分析和rng_58的代码。。
题目自己去看TC看吧囧。。
第一题:
此题看上去很容易。。其实很恶心。。各种贪心很容易悲剧。。
最好的办法是用对偶原理
就是最小必定可行值=最大不可行值+1
我们只需要通过DP求得最大不可行值即可。。
状态可以是Dp[i][win][lose]表示前i个位置,win个位置取得了胜利,lose个位置挂掉了的最大投票数。。
然后DP出这个玩意。。。
再以此求出最大不可行值就可以了。。
第二题:
这个题目很囧。。由于机房要关门了。。晚上再发。。
第三题:
首先显然对于一个特定的取方格的方式,只有RGB的数量有关系。。
然后欲处理一下。。枚举出所有可行的R,G,B的数量。。
然后我们枚举R,G的数量,设Max[r][g]为R选r个,G选g个,B最多有几个。。
那么如果我们无视那个两个串翻转之后一样算一个的条件。。
设Max[r][g]=b
那么在这种情况下。。答案为C(r+g,r)*(C(r+g,0)+C(r+g+1,1)+C(r+g+2,2)…+C(r+g+b,b))
那么看右边(C(r+g,0)+C(r+g+1,1)+C(r+g+2,2)…+C(r+g+b,b))
。。这式子只跟r+g和b有关系。。所以随便预处理一下就OK了。。
然后考虑翻转的条件。。只要算出所有对称的字符串的数量就OK了。。
而对称的字符串由前半部分决定。。。
用一样的办法就可以了。。
注意一下处理长度的奇偶性。。。
//嘿嘿。。我是WJMZBMR的分割线
看了这些题目之后。。我感觉TCO的难度其实是不及NOI的。。。
由于时间限制的原因,TCO的题目也不会考那种特别难的算法或者数据结构。。。
但是题目还是很考验各种能力的。。rng_58确实是强到极点了。。Orz Sro Orz。。。
我决定去看看他之前在各种SRM和TCO中的代码。。。从中吸取经验囧。。。
//嘿嘿。。我是WJBZBMR的分割线。。
其实。。我打算再去弄场模拟赛。。大家说是搞成ACM形式放在BZOJ上好呢?
还是搞成OI形式放在TYVJ或者RQNOJ上好呢?
[NOI2005]维修数列——囧。。
其实这题是没神马好讲的。。关键是程序风格神马的。。
我决定不盲目模仿开哥,探索一下自己的风格。。
首先我觉得开哥的namespace非常神犇。。但我觉得把主体和定义声明分开总归有点不爽T_T囧。。
所以我还是用了namespace。然后我直接在namespace里面写程序。。就不分开了。。
然后我写了一些库。。比如
namespace Constant
{
const int ND_MAX=500000+10;
const int inf=~0U>>2;
const int CM_MAX=100;
}
namespace Function
{
inline int Max(int x,int y)
{
int m=(x-y)>>31;
return y&m|x&~m;
}
template<class T>
inline void Swap(T&a,T&b)
{
T c=a;a=b;b=c;
}
}
namespace Scanner
{
inline void scan_str(char*s)
{
char c;while(c=getchar(),c==’ ‘||c==’n’);*s++=c;
while(c=getchar(),c!=’ ‘&&c!=’n’)*s++=c;*s++=’