原文: 验证日期的正则表达式比较全面地验证 1.验证日期的正则表达式加入闰年的判断以及思路分析进入正题之前,我们需要澄清两个概念:一,什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定:DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1...
分类:
其他好文 时间:
2014-07-07 22:14:38
阅读次数:
261
/*【题目来源】http://poj.org/problem?id=1128【题目分析】几张图片叠在一起,给出堆叠后的情况,要求出所有可能的从下到上的堆叠顺序。【思路分析】 1.题目已经很明确的告诉每个边框的每条边,至少会有一个字母露在外面所以遍历整张图,确定每个边框的范围。 只需确定左上角和右下角...
分类:
其他好文 时间:
2014-07-07 17:19:20
阅读次数:
151
题目大意:
串1中有多少个后缀和 串2中的某个后缀 的lcp 为 k
思路分析:
先找出 长度至少为k的对数有多少。
再找出 至少为k+1的有多少
然后相减。
#include
#include
#include
#include
#include
#include
#define maxn 110005
using namespace std;
int ...
分类:
其他好文 时间:
2014-07-03 16:26:57
阅读次数:
195
题目大意:
求可覆盖的出现k次的子串的最大长度。
思路分析:
同样是二分答案的长度,然后扫描height判断是否成立。
#include
#include
#include
#include
#define maxn 1000005
using namespace std;
int str[maxn];
int sa[maxn],t1[maxn],t2[maxn]...
分类:
其他好文 时间:
2014-07-02 09:02:19
阅读次数:
258
题目大意:
求串中不同的子串的个数。
思路分析:
子串一定是某一个后缀的前缀。
所以我们把每一个后缀拿出来,分析它有多少个前缀,然后除去它与sa数组中前面那个后缀相同的前缀。
最后也就是 ans = segma (n-sa[i] + height[i])....
#include
#include
#include
#include
#define maxn 1...
分类:
其他好文 时间:
2014-07-02 07:23:21
阅读次数:
182
题目大意:
问[s,e]之间有多少个 斐波那契数。
思路分析:
直接模拟高精度字符串的加法和大小的比较。
注意wa点再 s 可以从 0 开始
那么要在判断输入结束的时候注意一下。
#include
#include
#include
#include
using namespace std;
struct node
{
char str[111];
...
分类:
其他好文 时间:
2014-07-01 16:08:10
阅读次数:
243
题目大意:
求出一个最小的x
使得 2的x次方对n取模为1
思路分析:
若要
a*b%p=1 要使得b存在
则 gcd (a,p)=1.
那么我们应用到这个题目上来。
当n为偶数 2^x 也是偶数,那么gcd 肯定不是1.故这个是不存在的。
那么n为奇数的时候,也就一定是1了。
所以直接暴力找。
#include
#include
using nam...
分类:
其他好文 时间:
2014-07-01 15:57:47
阅读次数:
157
题目大意:
计算两个字符串的最长的公共字符串字串的长度。
思路分析:
将两个串合并起来。
然后直接跑后缀数组求出height
然后就可以直接扫描一次height ,加个是不是在一个串中的判断就可以了。
#include
#include
#include
#include
#define maxn 200005
using namespace std;
cha...
分类:
其他好文 时间:
2014-06-30 19:59:06
阅读次数:
194
题目大意:
刚才上88个键弹出来的音符。
如果出现重复的,或者是高一个音阶的重复的都算。
思路分析:
具体可以参考训练指南222.
height数组表示按照排序后的sa最近的两个后缀的最长前缀。
将height 分块。然后二分答案,二分答案之后去判断是否满足。
要考虑到不重合,还有大于5。
所以二分的时候要从5开始,然后判断的时候要加一个 up - down >le...
分类:
其他好文 时间:
2014-06-30 19:27:18
阅读次数:
242
题目大意:
一个月饼店每个小时做出月饼的花费不一样。
储存起来要钱,最多存多久。问你把所有订单做完的最少花费。
思路分析:
ans = segma( num[]*(cost[] + (i-j)*s) )
整理一下会发现式子就是
cost[]-j*s + i*s
对于每一个订单,我们把i拿出来分析
所以也就用cost - j*s 建树。
然后在储存期间找到最小的花费就...
分类:
其他好文 时间:
2014-06-30 08:12:10
阅读次数:
133