zoukankan      html  css  js  c++  java
  • Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)

    第一次参加cf的比赛 有点小幸运也有点小遗憾
    给自己定个小目标 1500【对啊我就是很菜qvq

    A. The Rank

    难度:普及-

    n位学生 每个学生有四个分数
    然鹅我们只需要知道他的分数和
    按分数和递减排名 同分的按编号递增排名
    现在小Smith的id是1号 求他的成绩排名

    解 : 不用说了吧。。暴力排序就行

    B. The Bits

    有两个n位二进制数A和B
    现在可以选择A的两位交换
    交换后的数为C
    求问有多少种交换方式
    使得 A | B != C | B

    解 : 每一位的A 和 B 可能有如下四种对应方式
    A B
    0 0
    0 1
    1 0
    1 1

    第2、4种情况无论A那一位是什么最后的和都不变
    第一种换成 1 会变 第三种换成0会变

    那么交换方式就有
    1 <=> 3 1 <=> 4 2 <=> 3
    三种交换方式

    只要在输入时统计每种对应有多少组 相乘即可

    C. The Phone Number

    求长度为n的排列
    使得该排列LIS(最长上升子序列)与LDS(最长下降子序列)的长度和最小

    我太菜了并不会证
    但按照sqrt(n) 分组是最小的

    D. The Wu

    一个假项链【蒟蒻到现在都没读懂这题跟项链有什么关系。。。
    总之啦 有n, m, q (n ∈ [1, 12] m, q∈[1, 5e5])
    二进制从左到右的第i位有w[i]的价值
    给出m个n位二进制数 再给出q个询问
    每个询问有一个n位二进制数A 和一个限定值v

    对于两个二进制数 如果它们的第i位相等 那么这一位获得w[i]的贡献
    否则没有贡献

    对于一个询问 A与原来的m个二进制数每个都有一个总贡献
    输出总贡献不大于v的个数

    这道题完全凭直觉乱搞?!
    2 ^ 12 = 4096 这很状压
    所以我们与处理出所有可能的总价值
    这里用100011表示 ** 仅取w[2] w[3] w[4] **
    也就是0表示取 1表示不取
    这么做是为了利用抑或的特性 即0抑或一个数等于它自己
    预处理 cnt[i] = x; 表示二进制数i代表的总贡献是x
    对于给出的A 与其总贡献为x的二进制数是A ^ i
    把询问按A排序 把cnt按x值排序
    再预处理出m个二进制数每种出现了多少个
    离线处理就行了
    复杂度O(2 ^ 2n)

  • 相关阅读:
    Windows脚本 Bat批处理命令使用教程
    [Jobdu] 题目1420:Jobdu MM分水果
    排序算法的时间复杂度和空间复杂度
    (转) CS的顶级会议和期刊
    句柄是什么?1
    批处理for命令详解(转)
    cmd批处理常用符号详解
    【转帖】请问两个大于号>>代表什么意思?
    今天玩angry birds
    C/C++数组名与指针区别深入探索
  • 原文地址:https://www.cnblogs.com/hjmmm/p/9448862.html
Copyright © 2011-2022 走看看