码迷,mamicode.com
首页 > 其他好文 > 详细

20160814训练记录

时间:2016-08-14 20:42:40      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

T1

题意:给定n技术分享 求能组成多少个三角形

题解:枚举三个点,但是切记不要用距离算,会有精度误差

因为这样三个点只要不在一个直线上就行

那么技术分享即可

 

T2

题意:给定100个长度小于100的关键字符串,给出十篇文章,对于每一篇文章回答是否都包含所有关键字符串

题解:文章长度1000000

目测一下应该kmp优秀一点能过

 

那么稍微介绍一下kmp

我们为了匹配串A 和B

 

技术分享

暴力是枚举起点比较 然后把起点在失配的时候后移一位

那么我们简化这个过程

我们找到一个不匹配的点,如果我们能找到一段前缀和我们目前B串匹配段的后缀相等

移到哪里就行了

我们定义一个数组技术分享表示1~i中 前缀后缀相等的最大长度

就可以O(n)的匹配

然后技术分享怎么求。。

int j=0;
next[1]=0;
for(int i=2;i<=n;i++){
    while(j>0&&b[j+1]!=b[i])j=next[j];
    next[i]=(j+=(b[j+1]==b[i]));
}

然后只要把每个串丢进去匹配了。。至于常数优化大家自己脑补

T3

题意:

技术分享

技术分享

题解:

我们把每个镜子分成上下两面,会发现弹射方向是唯一的

 

那么我们对于所有的弹射方向建立边,长度是距离,首先T小的时候显然可以模拟一个一个点走

 

但是T大的时候,如果光路没有循环,可以保证复杂度

如果有循环,那么把T模循环长度直接计算qwq

技术分享这是码农题标记

20160814训练记录

标签:

原文地址:http://www.cnblogs.com/chouti/p/5770822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!