随笔分类 - 构造
摘要:题意:一共有$n$个人,每个人都要送礼物给别人,每个人都要收到礼物,但每个人都有自己相送的人,序列$a$表示第$i$个人想送礼物给$a[i]$,输出长度为$n$的序列,表示$i$送礼物给$b[i]$. 题解:先用set将能给礼物的先给了,即将没收到礼物的$a[i]$先给了,给过就erase掉,并且记
阅读全文
摘要:题意:有一个$n$个结点的树,给你$n-1$个$a_i$和$b_i$,表示将第$i$条边断开后两个连通块中的最大顶点,现在要你根据给出的信息还原出这颗树. 题解:首先无论怎么分,$a_i$和$b_i$中一定有一个是的值是$n$.然后我们将顶点排序,按照$n$为根结点来构造.那么序列中出现次数最少的那
阅读全文
摘要:题意:有一字符串,可以将其任意排序,构造完后可以相邻字符两两交换位置,花费为$1$,构造一个复原成原串花费最多的串。 题解:感觉还是不好证明啊,结论就是相同的字符连续在一起一定最优,因为最多只有$4$个字符,所以我们可以全排列,花费就是相对于原串的逆序对数,这里官方题解给的暴力求逆序对的方法感觉很巧
阅读全文
摘要:题意:给你三个长度为$2n$的01串,要你构造出一个长度为$3n$的字符串$s$,使得$s$的两个子序列至少包含两个给出的01串. 题解:因为给出的字符串长度为$2n$且为01串,那么某一个串包含的$0$或$1$的个数必然不小于0,那么我们可以找到两个$0$的个数或$1$的个数不小于0的串,拿出$n
阅读全文
摘要:题意:有一个$n$x$n$的空矩阵,有三种颜色,Alice每次给你一种颜色,你需要选择另外两种颜色填某一个空格子,不能出现相邻格子同一种颜色,交互题,Alice会根据你的决定来出最优的情况,每次输出颜色和单位. 题解:我们用两个栈将不相邻的格子存起来,栈1用来涂颜色1(Alice选颜色2的时候),栈
阅读全文
摘要:题意:给你一个长度为$n$的01串$s$,要求你构造出两个长度为$n$的合法括号序列$a$和$b$,如果$s_i=1$,那么$a_i=b_i$,如果$s_i=0$,那么$a_i \ne b_i$,问你能否构造出两个序列,若可以,输出他们. 题解:首先,\(s_1=s_n=1\),这是一定要成立的,其
阅读全文
摘要:题意:给你两个正整数$n$和$k$,要你构造一个只包含前$k$个字母的字符串(\([a,a+k-1]\)),使得对于任意两个不相交的连续长度为$2$的区间,相等的子串数最少. 题解:我们一共有$aa,ab,...,ba,bb,...,ca,cb...,a+(k-1),...$,这样的不同长度为$2$
阅读全文
摘要:题意:对于一个数$x$,有函数$f(x)$,如果它是偶数,则$x/=2$,否则$x-=1$,不断重复这个过程,直到$x-1$,我们记$x$到$1$的这个过程为$path(x)$,它表示这个过程中所有$x$的值,现在给你一个数$n$和$k$,要你找出最大的数$x$,并且$x$在$path[1,n]$中
阅读全文
摘要:题意:给你两个字符串$a$和$b$,找出它们的$lcm$,即构造一个新的字符串$c$,使得$c$可以由$x$个$a$得到,并且可以由$y$个$b$得到,输出$c$,如果$c$不存在,输出$-1$. 题解:我们可以根据$a$和$b$的长度得出$c$的长度$len_c$,而$len_c$一定是$len_
阅读全文
摘要:题意:给你两个长度为$2$的字符串$s$和$t$,你需要构造一个长度为$3n$的字符串,满足:含有$n$个$a$,$n$个$b$,$n$个$c$,并且$s$和$t$不能是它的子串. 题解:首先,假如所给的长度为$2$的字符串两两不相等,那么我们一定可以构造一个类似$aaaabbbbcccc$这样的相
阅读全文
摘要:题意:给你一个$n$x$m$的矩阵,你可以任意位置的元素+1,只能加一次,问你如何使得任意位置的元素不等于它四周的值.输出操作后的矩阵. 题解:构造,矩阵中某两个下标的和的奇偶性一定和四周的都不同,因为题目保证有解,所以我们只要让下标和是奇数的填奇数,偶数的填偶数即可. 代码: int t; int
阅读全文
摘要:题意:给你一串长度为$n$的序列,有的位置被锁上了,你可以对没锁的位置上的元素任意排序,使得最后一个$\le0$的前缀和的位置最小,求重新排序后的序列. 题解:贪心,将所有能动的位置从大到小排个序就行了. 代码: struct misaka{ int a; int loc; }e[N]; int t
阅读全文
摘要:题意:有一个长度为$n$的序列,可以操作$3$次,每次选取一段区间,然后区间的元素加减区间长度的倍数,$3$次操作后使得序列所有元素为$0$,问具体操作情况. 题解:假如我们能选择一整段区间$[1,n]$,使其所有元素都是$n$的倍数就好了,但是有的元素不是$n$的倍数,所以不能这样搞,但是我们可以
阅读全文
摘要:题意:有一个长度为$n$的隐藏序列,你最多可以询问$2n$次,每次可以询问$i$和$j$位置上$p[i]\ mod\ p[j]\(的结果,询问的格式是\)?\ x\ y$,如果已经确定序列了,先输出$!$,然后输出序列. 题解:首先要知道一个结论,\(p[i]\ mod \ p[j]=cnt1\),
阅读全文
摘要:题意:有一个长度为偶数只含$0$和$1$的序列,你可以移除最多$\frac{2}$个位置的元素,使得操作后奇数位置的元素和等于偶数位置的元素和,求新序列. 题解:统计$0$和$1$的个数,如果$0$的个数大于$\frac{2}$,那么直接输出$n/2$个$0$,否则输出所有$1$(个数必须为偶).
阅读全文
摘要:题意:给你一个字符串$s$,原字符串为$w$,如果$i>x$且$w_=1$,那么$s_=1$,如果$i+x\le n$且$w_{i+x}=1$,那么$s_=1$,否则$s_=0$.求$w$的一种可能的情况. 题解:对于$s$中的$0$,我们知道,它左右两边距离$x$的地方一定都是$0$,所以我们先假
阅读全文
摘要:题意:给你一个长度为$2*n-1$的字符串$s$,让你构造一个长度为$n$的字符串,使得构造的字符串中有相同位置的字符等于$s[1..n],s[2..n+1],...,s[n,2n-1]$中的位置上的字符. 题解:不难发现,$s$中的奇数位字符就是我们要的答案. 代码: int t; int n;
阅读全文
摘要:题意:给出一个长度为$n$的序列$a$,根据$a$构造一个序列$b$,要求: 1.\(b_{1}=0\) 2.对于$i,j(i\le i,j \le n)$,若$a_=a_$,则$b_=b_$ 3.对于$i\in [1,n-1]$,有$b_{i+1}=b_$或$b_{i+1}=b_+1$
阅读全文
摘要:题意:对于某个序列,若$1\le i\le n$,$1\le j\le i$且$p_j>p_i$,或者$1\le i\le n$,$i<j \le n$且$p_j>p_i$,那么就可以在$i$和$j$之间连一条边,求有多少能够成环的长度为$n$的序列. 题解:对于长度为$n$的序列,也就是有$n$个
阅读全文
摘要:题意:给你两个长度为$n$的01串$s$和$t$,可以选择$s$的前几位,取反然后反转,保证$s$总能通过不超过$2n$的操作得到$t$,输出变换总数,和每次变换的位置. 题解:我们现将$s$串全部变成$1$或$0$,确保$s[n]=t[n]$,然后我们倒着遍历$t$,若遇到相邻的两个字符不同,我们
阅读全文