zoukankan      html  css  js  c++  java
  • 省选模拟104

    A. 签到题

      考虑第一个询问,那么要求的就是有多少个元素后面比当前元素大的第一个位置是$x$。

      那么将每个位置和后面比他大的第一个位置连边,容易发现一共形成了一棵树的结构。

      所以问题就是给一个节点和这个节点的所有儿子加权值,链上求和。

      那么额外开一棵线段树维护加的标记即可。

    B. 蓝超巨星

      一个很自然的想法就是枚举第一个字符变换到了哪里,那么可以确定字符的唯一置换,然后根据每个字符和第一个字符的位置可以列出27个线性同余方程,直接解就完了。

      然后的问题就是怎么判断字符的置换是否是合法的,定义字符串的hash值为每个位置减去上一个相同字符的位置乘p^k,这样如果两个字符串hash值相同就是相等的。每次查询一个子串的hash值只有每种字符的第一次出现需要变化,暴力对每一种字符修改即可。

    C. 秘密行动

      看到prod可以简单想到取对数转化成求和的形式,然后这个贡献的形式一看就很网络流,然后一个这么简单的图我居然建不出来。。。

      显然每个位置每种质数的贡献是独立的,将每个位置拆成10个点,每个点选择有一个贡献,不选有一个贡献,某些点对选择情况的异或有贡献。

      从S向每个点连边,流量是选择的贡献,从每个点向T连边,流量是不选的贡献,对于一组限制,直接在对应的两个点之间连一条流量为相应贡献的边即可。

  • 相关阅读:
    你所不知道的 C# 中的细节
    数据分析与数据挖掘 ---- 系列教程
    Tiny Core Linux 安装配置
    Debian 安装
    基于C#的内网穿透学习笔记(附源码)
    Layui前端框架介绍
    使用 C# 捕获进程输出
    sonar扫描——方法重构分析
    消除代码中的坏味道,编写高质量代码
    TensorFlow之张量
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12944731.html
Copyright © 2011-2022 走看看