上一页 1 ··· 5 6 7 8 9 10 11 下一页

2013年4月12日

摘要: 题目 意思 就是说给你N个单词 问模式串里面含有多少个单词;方法 AC 自动机 首先建立好自动机;然后在构建 fail 指针的时候标记一下路径;然后用模式串去匹配的过程中,不要重复匹配;走过的路程就标记,然后就是简单的计数了; AC自动机解决多字符匹配问题时候;很好用;#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;struct date{ date *next[27],*fail; bool flag; int 阅读全文
posted @ 2013-04-12 13:33 浪舟 阅读(131) 评论(0) 推荐(0) 编辑

2013年4月1日

摘要: 转载过来的Zoj 3647Gao the Grid ssslpk AC的题。在一个n*m个方格中(顶点有(n+1)*(m+1)个),求所有三角形数,即三点不共线的所有情况。令所有点的个数为t,用c[t,3]来枚举所有情况,用总数扣去所有三点共线数就是所求的三角形数。那么在求三点共线的情况时,水平和垂直的情况读者自己考虑。对于倾斜的情况,先枚举两端的端点,如图,在一个6*10的方格中选4*4的两个端点,其中可构成三点花线的另一点的个数为最大公约数gcd(4,4) -1.如图中的三个点,然后用乘于剩下的倍数(6-4+1)*(10-4+1),再乘于2(倾斜时有右上,右下两种情况).然后依次枚举所有的 阅读全文
posted @ 2013-04-01 21:37 浪舟 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 第一个是 pick 定律 任意多边形的面积;如果他的顶点是整数点的话; 他的面积 s 等于 他边长上整数点的个数的一半 + 他包含的整数点个数;x + y = n ( n 是一个素数 ) 那么 转载请注明出自matrix67.com考虑直线x+y=n,其中n是一个素数。这条直线将恰好通过第一象限里的n-1个格点(如上图,图中所示的是n=11的情况)。将这n-1个点分别和原点相连,于是得到了n-2个灰色的三角形。仔细数数每个三角形内部的格点数,你会发现一个惊人的事实:每个三角形内部所含的格点数都是一样多。这是为什么呢?Pick定理是说,在一个平面直角坐标系内,如果一个多边形的顶点全都在格点上,. 阅读全文
posted @ 2013-04-01 21:04 浪舟 阅读(303) 评论(0) 推荐(0) 编辑

2013年3月30日

摘要: 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4267解题 方法 利用 ( i - a )%k —> i%k == a%k 存进去 所有的余数;#include<iostream>#include<stdio.h>#include<cstring>#include<algorithm>using namespace std;int cnt[51234],N;int arr[12][12];struct date{ int lt,rt,num[56]; bool fell;}node[20000 阅读全文
posted @ 2013-03-30 14:38 浪舟 阅读(192) 评论(0) 推荐(0) 编辑

2013年3月26日

摘要: 这个题目 是有一定价值的 以后学会这么搞了;哈哈 1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 int arr[10001][34]; 8 9 int main( )10 {11 int i,j,N,M,C,u,v,val;12 while( scanf("%d",&N) != EOF )13 {14 memset( arr,0,sizeof(ar 阅读全文
posted @ 2013-03-26 22:21 浪舟 阅读(177) 评论(0) 推荐(0) 编辑
摘要: A题 模拟题 比赛是 sb 了 1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 int main( ) 8 { 9 int N,res,k;10 while( scanf("%d",&N) != EOF )11 {12 res = 0;13 for( int i = 1; i < N; i++ )14 {15 bool fel... 阅读全文
posted @ 2013-03-26 22:15 浪舟 阅读(209) 评论(0) 推荐(0) 编辑

2013年3月20日

摘要: A题 水题 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namespace std; 5 6 int main( ) 7 { 8 int i,N;char str[11]; 9 while( scanf("%d",&N) != EOF )10 {11 int res = 0;12 for( i = ... 阅读全文
posted @ 2013-03-20 21:38 浪舟 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 转载 http://yjq24.blogbus.com/logs/42826226.html大致上是这样的:有两堆石子,不妨先认为一堆有10,另一堆有15个,双方轮流取走一些石子,合法的取法有如下两种:1)在一堆石子中取走任意多颗;2)在两堆石子中取走相同多的任意颗;约定取走最后一颗石子的人为赢家,求必败态(必胜策略)。这个可以说是MR.Wythoff(Wythoff于1907年提出此游戏)一生全部的贡献吧,我在一篇日志里就说完有点残酷。这个问题好像被用作编程竞赛的题目,网上有很多把它Label为POJ1067,不过如果学编程的人不知道Beatty定理和Beatty序列,他们所做的只能是找规律 阅读全文
posted @ 2013-03-20 10:26 浪舟 阅读(190) 评论(0) 推荐(0) 编辑

2013年3月19日

摘要: 下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。现在我们不想研究到底先手为胜还是为负,我只想问大家:——“先手的人如果想赢,第一步有几种选择呢?”Input输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1<M<=100),表示扑克牌的堆数,紧接着一行包含M个整数Ni(1<=Ni<=1000000,i=1…M),分别表示M堆扑克的数量。M为0则表示输入数据的结束。Output如果先手的人能赢,请输出他 阅读全文
posted @ 2013-03-19 21:08 浪舟 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 前面几节谈到的游戏可以用图理论来描述,考虑一个图 G = (X, F);其中 X 是顶点,也是先前游戏中可能的态势。F 是一个函数,对于 X 中的任意一个 x,F(x) 的值都出现在 X 中,对于 X 的一个元素 x,F(x) 的含义是一个玩家从 x 出发可以移动到的局势。对于一个两人的类似前面的游戏而言,可以在一个如此这样的图上进行博弈,首先指定一个起始点 x0,并使用下面的规则:(1)玩家 I 从 x0 开始首先移动;(2)玩家交替移动;(3)在 x 态势时,玩家要将态势转移到另一个态势 y,其中 y 是 F(x) 中的元素。为简单起见,假定图中不存在环,元素个数为 n,其中最长的一条路径 阅读全文
posted @ 2013-03-19 20:50 浪舟 阅读(368) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 下一页

导航