用户工具

站点工具


2020-2021:teams:acm_life_from_zero:8.1-8.7

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:acm_life_from_zero:8.1-8.7 [2020/08/07 14:55]
lak [姜维翰]
2020-2021:teams:acm_life_from_zero:8.1-8.7 [2020/08/07 17:00] (当前版本)
kipple
行 11: 行 11:
 ====== 姜维翰 ====== ====== 姜维翰 ======
 ===== 比赛 ===== ===== 比赛 =====
-cf edu 92(码农专场.jpg)+atcoder abc 174
 ====== 袁熙 ====== ====== 袁熙 ======
  
-===== 专题 ===== 
-没有专题 
 ===== 比赛 ===== ===== 比赛 =====
-没有比赛 +cf round 661 
-===== 题目 ===== +  
-补题(板子) 牛客第五场B \\ [[https://​​ac.nowcoder.com/​​acm/​​contest/​​5670|链接]] \\ + 
-题意;给边带权的树,可以连边或删边,要求始终连通且形成的环异或和=0,求最后图的最小权值和\\ +
-思路:对原图的树,可以把边权用所连点的权值异或和来表示,转化成异或最小生成树\\ +
-类似的模板题:[[http://​​codeforces.com/​​problemset/​​problem/​​888/​​G|链接]]+
 ====== 本周推荐 ====== ====== 本周推荐 ======
 ====== 李元恺 ====== ====== 李元恺 ======
行 39: 行 34:
 comment:​这周做的最有意思的题,推荐给大家 comment:​这周做的最有意思的题,推荐给大家
 ====== 袁熙 ====== ====== 袁熙 ======
-CF1372F [[https://​codeforces.com/​contest/​1372/​problem/​F|题目链接]]\\+cf 1380e Inverse Genealogy
  
-标签:构造 ​交互\\+tag:构造 ​分治
  
-题意:一个长为$n$不降序列由$k$不同的数组成,每可以$l,r$中众数(数量相同取更小值),要$4k$次询问内确定原序列\\+题意:对给定的n,k构造一颗完全二叉树使这棵树n个节点中,k个点满足其一个儿子所在子树大小是另一个至少两倍 
 + 
 +题解: 
 + 
 +观察一下后可以发现符合题意的树的这些性质: 
 + 
 +1.有奇个点且k不大于(n-3)/​2 
 + 
 +2.当且仅当2^x=n+1时,可以有k=0 
 + 
 +3.(n,​k)可以向(n-2,​k-1)转化 
 + 
 +又可以发现,k=1时,只要n+1≠2^x,​按顺序从根向下在层放满点就可以满足要求,题变成怎么放点能使(n-2*k+2,1)转变到(n,​k) 
 + 
 +对n-2*k+2≠2^x情况我们要在不破坏之前结果的情况下构造。由(n-2*k+2,​1)的构造可以知道满足题意的点所在的位置,在维护之前大小关系的情况下放点。 
 +n-2*k+2=2^x时,不存在(n-2*k+2,​1)的构造,可以先提前留下几个点,然后当做上面的情况继续构造,最后将这些点放在不影响结果的位置 
 + 
 +comment:有点麻烦的构造题。。没有看到能比较好的做最后一步转化的方法
  
-思路:考虑如果已知某个数在某个位置$p$,和这个数的总出现次数$f$。那么可以用两次询问$(p,​p+f-1),​(p-f+1,​p)$得到这个数的结果.那么如果能使所有数都出现在查询结果中,就能知道整个序列。\\ 
-要想构造出上述的查询,我们可以从$(1,​n)$开始,用当前区间的最高频率$f$为间隔,每次确认$f,​2f,​..$这些点的数值,这些数值两两不等,且$(1,​n)$查询得到的众数一定在这些数值中。接下来递归地对两边的区间进行询问。这样对于每个数,找到它的一个出现位置+确定它的出现区间+递归时确定它作为众数的区间,共4k次询问。\\ 
  
-comment:做法比较多的构造题\\ 
 ====== 姜维翰 ====== ====== 姜维翰 ======
 +cf 1382e mastermind
 +
 +tag:贪心
 +
 +题意:给n,​x,​y和一个长n的数组,数组元素的大小为1到n+1间的整数,求另一个数组,元素大小同样在1到n+1,两个数组元素相同的位置有x个,重新排列后两个数组最多有y个相同位置的元素相同
 +
 +题解:首先对出现的元素进行计数,显然要把x的指标优先给数量多的元素
 +
 +这样还剩下n-x个元素,对于这n-x个元素,两个数组在不重新排列前不能有匹配,对于一某种元素c,假设它有k个,如果2*k>​n-x,那么必然有一部分元素要变成其它的元素,n个位置有n+1种元素,所以这个用来替换的元素是一定存在的,而如果出现这样的情况,n-x这一部分在重排之后至多能匹配2*(n-x-k)个,也就是要2*(n-x-k)>​=y-x,化简得2*n-x-y>​=2*k,不满足则无解
 +
 +对于有解的情况就比较简单了,对n-x这部分的元素排序,然后旋转(n-x)/​2之后放进去,再把n-y个位置的元素换成不存在过的元素就可以了
  
 +comment:很妙的题,尤其是对于无解的判断
2020-2021/teams/acm_life_from_zero/8.1-8.7.1596783346.txt.gz · 最后更改: 2020/08/07 14:55 由 lak