zoukankan      html  css  js  c++  java
  • Codeforces Round #362 (Div. 2)

    6/6

    这场CFdiv2有六题,拖了很久终于补完了。。。。撒花~~撒花~~

     

    题A Pineapple Incident

    题意:告诉你 t, t + s, t + s + 1, t + 2s, t + 2s + 1……周期地发生什么,给你t,s,k,问你k可不可能是其中的某个数?

    题解:简单题,先判断k是不是t,然后判断k-t和k-t-1是不是s的倍数即可。

     

    题B Barnicle

    题意:给你一个科学计数法表示的浮点数,展开它。

    题解:注意0的情况和1.0e0的情况即可。

     

    题C Lorenzo Von Matterhorn

    题意:给你一颗二叉树,然后告诉你会有两种操作:

    1.u v w表示u到v的路径的边增加w

    2.u v询问路径权值为多少

    题解:暴力!暴力!暴力!直接开个map暴力放进去,从u和v不断往前爬知道公共祖先。询问也一样。

     

    题D Puzzles

    题意:给你一棵树,然后让你模拟dfs,但是dfs的时候如果有多个结点,那么则随机选一个结点去访问,最后问你每个点访问时间的期望,假设访问一个结点用时1s。

    题解:我们可以这样考虑,采用平均的策略,即(最好+最坏)/ 2;

    最好:马上找到一个结点,用时1s

    最坏:访问完剩余子树再来访问这个子树,那么就是其他子树的结点;

    所以最后答案为:(假设当前树的sz为s1,要算的子树的sz为s2)

    (s1 - s2 + 1) / 2;

     

    题E PLEASE

    题意:给你三个杯子,然后把要猜的东西放在中间,然后随意把左右的杯子拿来交换,做n次,然后最后猜的是中间,问你中的概率?这个n很大,他给你k个数,a1……ak,这k个数乘起来表示n。

    题解:杯子的所有情况:

    2 -> 13 -> 2312 -> 13122313……

    2的出现次数为0、2、2、6……

    最后可以推出这个序列为an = 2^n-1 - an-1,因为一共有2^n种可能,所以答案为:

    bn = an / 2 ^ n,最后化简得:

    现在n = ,指数很大我们都用欧拉定理进行降幂,具体参考欧拉公式。因为这个mod是素数,所以我们可以把n % (mod - 2)来进行降幂。最后说一下这道题要求的输出方式:是把分子mod了之后分母mod了之后输出,但是这个分子分母来自于我们的推导公式,也就是分子 = an,分母 = 2 ^ n。

     

    题F Legen...

    题意:给你n个串,每个串有自己的权值,构造一个长度为l的串使得这个串的权值最大,这个串的权值是n个串出现一次就会加上相应的权值。

    题解:这道题要用到倍增floyd的思想。

    先安利一篇论文里面解释了为什么能够这样做:

    俞华程《矩阵乘法在信息学中的应用》

    这里简单复述一下:

    假设dp[i][j]为当前长度为i,末尾为j结点(Ac自动机构造的),然后转移方程为:

     

    然后假设g[i][j]为i结点到j结点增加的权值,那么就可以类似地得到下面的矩阵转移方程:

     

    最后利用矩阵乘法加一下速即可。

     

  • 相关阅读:
    单源最短路径-邻接表无向网络
    带权邻接表图的最小生成树
    邻接矩阵有向图的广度优先遍历
    邻接表无向图的深度优先遍历
    图基础-创造用于测试的简单图
    用EFCore从mssql数据库生成实体类
    使用EF Core访问SqlServer数据库
    哈夫曼树综合练习
    树形结构例--控制台显示文件夹结构
    Java之设计模式
  • 原文地址:https://www.cnblogs.com/zhenhao1/p/5688784.html
Copyright © 2011-2022 走看看