fjwc2019】的更多相关文章

#193. 「2019冬令营提高组」堆 但是每个点都遍历一遍,有些点的子树完全相同却重复算了 忽然记起完全二叉树的性质之一:每个非叶节点的子树中至少有一个是满二叉树 那么我们预处理满二叉树的那一块,剩下的dfs就可以辣 求阶乘.......分块打表 设打表分成$k$段,则复杂度$O(logn+n/k)$ #include<cstdio> ,W=1e7; ]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,…
#194. 「2019冬令营提高组」密文 设$s[i]$表示前$i$个密文的异或和 容易发现,只要知道$s[0]~s[n](s[0]=0)$就可以知道每一位的值. 转化一下,就变成了在完全图上求最小生成树,边权是$[l,r]$段的异或和 然鹅数据范围太大了...... 但是边权是特殊的异或和! 于是我们用一棵trie维护边权,每次用贪心的思想 对于树上的某点,用最小的代价合并代表左右两个子树的连通块. 合并时代价的计算直接暴力就好辣 可以证明每次的连通块数都减少一半 即复杂度为$O(nlognl…
#187. 「2019冬令营提高组」循环流 假的网络流,其实是O(1)算法 手画n个图后,你会发现只要分成几种情况讨论讨论就得了. 当$a==1$时显然不存在. 当$a!=1$时 如果$n==2$,显然$a$必须为偶数:$a==0$时,$b$必须为偶数:否则需要$a+b>=2$. $n>2$时,特判一下$(b==n||a==n)$的成环情况 剩下的$a+b>n$即为合法. 总之画画图找找规律................. (调试没删直接GG) #include<iostream…
#185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$F$为$-1$ 蓝后我们统计这个序列的后缀和. 如果这个序列合法,那么每个后缀和都$<=1$ 如果出现$>=2$的...... 举个栗子 F F F M M M M M F F 0 1 2 3    2   1 0 -1 -2 -1 这个数列显然是不合法的. 我们要让它合法,就要把若干个M向左移.…
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位为0,右边为1时,显然x的该位只能为0,否则异或后不符条件. 当左边的数相异位为1,右边为0时,x的该位就必须为1,也就是必须异或一次改变大小关系. 对于剩下的位......取0就行辣 当某位既要取1又要取0,显然就是不符合条件,就是无解了 每次修改的时候把上一位的数据清掉就得了. #include…
#183. 「2019冬令营提高组」排序 贴一段ppt 考虑模拟出这个算法进行k轮(即外层的i循环到k)时的序列,之后再暴力模拟零散的步. 考虑这个算法在01序列上的表现,k轮后实际上就是将最开始的不超过k个0放到序列开头. 考虑把序列转化成01序列,我们只要从1~n枚举x,然后把<=x的记为0,>x的记为1就行了,新增的那个0就是x的位置. 我们用priority_queue维护序列中当前前k个0的位置,每次考虑新的那个0的位置. 如果它为前k个,那么被弹出去的那个元素就是现在x的位置.如果…
#182. 「2019冬令营提高组」定价 先瞄下数据范围 对于所有数据,1≤n≤1000,1≤m≤10^9,1≤q≤500000 .\textbf{2 操作的个数不超过 1000.} $10^9$位,看起来挺吓人,咋维护每个可以为1的位鸭? 再仔细看看,$q<=500000$,最多500000次操作,那么显然是对每一列,开个动态开点线段树或者平衡树维护. 本题对数据结构要求不高,于是我们可以快捷地用set代替辣 接下来我们考虑如何求出价格和的最小值 2 操作的个数不超过 1000. 这告诉我们可…
#181. 「2019冬令营提高组」直径 (这题构造题是我考场上唯一一A的题........) 先看这个特殊的Subtask4 Subtask 4(20pts):$\sqrt{1+8k}$​​​ 为整数. 画了几张图,你轻松地发现这是菊花图. 大概就是这样↓ 我们暂且设红点的个数为$k$表示菊花树的大小. 显然一棵菊花树的直径数为$k*(k-1)/2$ 接下来我们试着以若干棵菊花图的形式构图. 当我们把两棵大小为(a,b)的菊花树连在一起时, 40pts到手 但是对于某些数(如一些大质数),两棵…
#180. 「2019冬令营提高组」不同的缩写 乍看之下没有什么好的方法鸭.......于是考虑暴力. 长度?二分似乎可行. 于是我们二分最长子串的长度(设为$len$),蓝后暴力查找. 先在每个串内练好后继边建图 ;i<=n;++i){ ); ;j<;++j) To[i][len][j]=-; ;j>=;--j){ memcpy(To[i][j],To[i][j+],])); To[i][j][a[i][j+]-; } } 每次用dfs查找一个串中长度不超过$len$的子串个数. 一个…
机房搬迁.......再加上文化课.......咕了十几天才有空补上....... day0听一个教授讲理论......在学长的带领下咕掉了..... D1 T1:#178. 「2019冬令营提高组」全连:solution D1 T2:#179. 「2019冬令营提高组」原样输出:solution D1 T3:#180. 「2019冬令营提高组」不同的缩写:solution D2 T1:#181. 「2019冬令营提高组」直径:solution D2 T2:#182. 「2019冬令营提高组」定…