zoukankan      html  css  js  c++  java
  • CodeChef题目选讲

    https://wenku.baidu.com/view/2445a0322f60ddccda38a023.html

    关键点:不超过7条

    根据咕咕原理,所以答案最少是N/7;(N小于49就暴力)

    随机化找两个点判断直线上的点个数,随机500次,概率就很高了

    法二:

    点数大于50,答案至少是8

    答案一定是7条路之一

    随机找7个点,按照级角序排序,点数大于7的直线就删去上面的点(之后random不考虑,但是实际上不能真删除,因为可能两条路有交点),每次一定可以找到至少一条路

    复杂度就很稳了

    思想:有些很麻烦处理的事情,范围又不太大,都可以随机化搞搞,能分析出概率就很好了

    可能无穷组解,

    无穷组解一定可以跳过去再跳回来,A,B向量必须共线

    A,B不共线:

    方案数有限。

    坐标范围大而且正负很麻烦

    解方程求出到(x,y)以及每个障碍点的用A的次数,用B的次数

    转化成格点往上往右走的方案数

    障碍?

    套路地,f[i]表示到第一次到第i个障碍点的方案数,容斥即可

    A,B共线:

    把这条直线上的障碍点和(x,y)都投影到y或者x轴上

    没有明显的阶段,但是可以拓扑排序计数+判环

    0的特殊讨论很恶心

    思路:

    基于inf、共线 讨论,转化为不同的模型

    路径统计模型要熟悉:

    1.网格图,往上往右走

      有障碍点的——》容斥,第一个碰到障碍点编号

      格点不是很多的多源多汇——》DP,每次新加入一个点,方案数+1,到了一个汇点更新ansfzyzojP3979 -- [校内训练20180914]魔法方阵

      矩形到矩形的路径AGC 018E.Sightseeing Plan——网格路径问题观止

    2.DAGtopo计数

     DAG图上的DP

    肯定考虑质因数分解了

    A=2^a*3^b*5^d*7^e

    a/3+b/2+d+e<=700

     枚举b,a,把2^a*3^b的值、每个数字个数(最小情况下)放进hash表里,相同的mod值,位数小的优,位数相同,小的数多的优(字典序)

    枚举d,e,去hash表里查询,更新答案比较方式同理

    思路:

    BSGS或者折半,一半的位数比较小的时候,就可以用hash表存一部分再枚举另一部分了

    复杂度指数级下降。

    m很小,n很大,仿佛有矩乘的影子

    所以,f[n][m],和为n放了m个k的所有情况的sin乘积和,

    最后一个k+1时候,

    发现,和最后一个数是cos也有关系,所以变成f[n][m][0/1]然后矩乘即可

    思路:

    一种分段的序列DP,考虑重新开一段或者最后一段延长1

    各种斯特林数的递推都有类似思路

    经典挖串DP

    推完式子状态过多,bool的DP的优化:

    1.压位,把某一维的状态变成,维度/64(类似分块),然后bool变成unsigned long long,每一位0/1表示这个块的第i位是不是0/1

    应用范围广,只是除以64,不彻底

    2.把某一维删掉,变成,某状态下某个值的最值,

    有的时候不行,看题目了,但是完全去除一维,复杂度降低一个量级

  • 相关阅读:
    LInux 安全测试 2
    LInux 安全测试
    又一款linux提权辅助工具
    shell 生成指定范围随机数与随机字符串 .
    腾讯新浪通过IP地址获取当前地理位置(省份)的接口
    建站指南:百度认为什么样的网站更有抓取和收录价值2012-06-20
    ngx_lua 金山项目 黄雀
    在页面中使用js
    多线程取读文件(别人的,有点晕,先放在这里有时间研究研究)
    factory工厂模式
  • 原文地址:https://www.cnblogs.com/Miracevin/p/10458604.html
Copyright © 2011-2022 走看看