zoukankan      html  css  js  c++  java
  • BZOJ水题计划

    题号 题目描述 解题思路
    3306 给出一棵带点权的有根树,支持单点修改,换根,询问x子树中的权值最小值. 直接在DFS序上用线段树维护就好了.
    3900 给出n个数对,求最小的交换次数,满足交换后每个数对相差不超过c 压位,用(f[i])表示(i)状态的数对满足条件的最小操作次数,初始时(f[i])如果有解,那么答案至少为操作数对-1,然后(f[i]=min(f[j]+f[i ext{^}j]))修正一下就好了.
    3901 给定一个(n*n)的棋盘((n)为奇数),每个格子上有数,设(X=(n+1)/2),每次可以将一个(X*X)的子棋盘的所有数乘-1,求所有数之和的最大值. 考虑不管子棋盘怎么选,X行X列一定有数会被选上,考虑(a[1][i],a[1][X],a[1][i+X])的关系,发现他们是否被操作的异或值一定为0,因为任意的操作只会包含他们三个点中的其中两个或零个,然后其他行以及列也有这种关系,枚举X行前X个格子的操作情况,得出X行的情况,然后每一行第X列的情况枚举前(i)个格子的情况,显然这个贡献单独考虑,所以刷个最大值就行.复杂度(O(2^XX^2))
    3920 给出一个长度为(n)的序列,询问一个区间数字出现次数第(k1)小的第(k2)小的数. 分块套分块?神奇的叫法.
    把(数字,数字出现次数)看成一个二元组,二元组的个数为(n),然后我们用莫队维护这个二元组即可,首先数字出现次数一个分块,然后相同出现次数的数用个分块.
    3689 给出(n)个数,两两异或可以得到(n*(n-1)/2)个值,求前(k)小的值. 额,对于每个数肯定先找第一小然后第二小...
    用个堆维护一下每个数当前的最小异或值,查询一个数第(k)小异或值一棵字典树就行.
    4011 给出一张有向无环图和一条任意边,求以(1)为根的外向树的个数. 根据朱刘算法(???),有向无环图的外向树个数为除根以外所有点入度的乘积.感觉脑补一下就行,每个点随便选个fa就可以形成一棵树...现在多了一条边,那么减去成环的方案数就行.成环的方案数应该是(sum)所有(y)->(x)的路径(设为(S))(prod_{x otin S}dgree[x]),在拓扑序上DP就行.
  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/CHNJZ/p/10435201.html
Copyright © 2011-2022 走看看