zoukankan      html  css  js  c++  java
  • 20160814训练记录

    T1

    题意:给定n(nle100) 求能组成多少个三角形

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

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

    那么(y_k-y_j)*(x_j-x_i)
e(y_j-y_i)*(x_k-x_j)即可

    T2

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

    题解:文章长度1000000

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

    那么稍微介绍一下kmp

    我们为了匹配串A 和B

    image

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

    那么我们简化这个过程

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

    移到哪里就行了

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

    就可以O(n)的匹配

    然后next_i怎么求。。

    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

    题意:

    image

    image

    题解:

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

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

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

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

    QQ图片20160808183727这是码农题标记

  • 相关阅读:
    Linux----------系统管理之释放内存
    阿里云OSS挂载到ECS(注意fuse版本,必须和源码对应)
    数据库图形化管理工具navicat
    linux集群管理工具clustershell
    记一次nginx启动报错
    虚拟化之KVM
    虚拟化之-XEN(未完待续)
    虚拟化
    Linux----------Jenkins基础
    Linux日常系统管理命令
  • 原文地址:https://www.cnblogs.com/chouti/p/5770822.html
Copyright © 2011-2022 走看看