zoukankan      html  css  js  c++  java
  • 【做题记录】公开题题目泛做

      记录一下一些有趣题目的做法。(实时更新)

    UOJ310

    【题意】

       给出N((N leq 10^6))个数字,两个人来选。每一个人各选出一个数字((S leq 10^6))集合(集合不能相交)。问两个人取的数字的异或和正好相等的方案数(模一个NTT质数)。

    【做法】

      先试着暴力用FWT来表示,然后优化这一过程,发现另一个形式的FWT>_<。

    hdu5870

    【题意】

       给出一个(N)个点、(M)条边的简单无向图。再给定一个常数(X)。对于一个无序对((x,y)),如果存在一个正数(z),使得添加了(x-y),长度为(z)的边后,原图仍然没有重边,且从(1)(N)的最短路路径数增加量 > X ,那么称其为合法的。求合法的((x,y))组数。 (N leq 20000) , $ M leq 10^5 $, $ X leq 10^9 $

    【做法】

      感觉这题挺不错。首先假设暴力枚举两个点x和y,判断在它们之间连边是否合法。我们不妨设(f_x)为从1到x的走最短路方案数,(g_y)表示从y到n的走最短路方案数,那么增加的方案数显然为(f_x*g_y)(注意x和y不必一定在原图的最短路上);同时我们必须保证(dist_{1,x}+dist{y,n}<dist{1,n})。根据上面的式子,我们可以按dist重新编号点,每次枚举y后,对应前缀的一段x合法。判断 (f_x*g_y) > X 时,可以用可持久化线段树计算合法的x数量(也可以离线)。效率是(O(N log N))

  • 相关阅读:
    Cmd Markdown 公式指导手册
    ubuntu 21.10 上的一些必备库的安装 opengl, opencv
    MarkDown 数学公式
    免费代理IP地址列表
    pyexecl的使用
    磁盘IO满负荷性能分析
    DRM 简介
    Oracle修改字符集ORA02374,ORA12899,ORA02372
    oracle grid修改ip
    Oracle性能问题一般排查方法
  • 原文地址:https://www.cnblogs.com/jiangshibiao/p/7197805.html
Copyright © 2011-2022 走看看