[atAGC001F]Wide Swap】的更多相关文章

结论:排列$p'_{i}$可以通过排列$p_{i}$得到当且仅当$\forall 1\le i<j<i+k,(p_{i}-p_{j})(p'_{i}-p'_{j})>0$ 证明:构造$b_{p_{i}}=i$,交换即令$b_{i}$与$b_{i+1}$交换,条件为$|b_{i}-b_{i+1}|\ge k$,那么对于$x<y$的$|b_{x}-b_{y}|<k$,相对位置不会发生改变,同时其他位置可以任意交换,反映在$p'_{i}$上即$p'_{b_{x}}$和$p'_{b_…
Wide Swap Time Limit: 50 Sec  Memory Limit: 512 MB Description Input Output Sample Input 8 3 4 5 7 8 3 1 2 6 Sample Output 1 2 6 7 5 3 4 8 HINT Solution 首先,直接做难度系数较高,假设原序列为a,我们考虑设一个p,p[a_i] = i,即将题目中的权值与下标调换. 那么显然,要令a字典序最小,只要让p字典序最小即可.因为“权值小的尽量前”与“前面…
AT1984 Wide Swap 题意翻译 给出一个元素集合为\(\{1,2,\dots,N\}(1\leq N\leq 500,000)\)的排列\(P\),当有\(i,j(1\leq i<j\leq N)\)满足\(j-i\geq K\)\((1\leq K\leq N-1)\)且\(|P_{i}-P{j}|=1\)时,可以交换\(P_{i}\)和\(P_{j}\) 求:可能排列中字典序最小的排列 输入格式: \(N\) \(K\) \(P_{1}\) \(P_{2}\) \(\dots\)…
题目链接: https://atcoder.jp/contests/agc001/tasks/agc001_f 题解: 先变成排列的逆,要求\(1\)的位置最小,其次\(2\)的位置最小,依次排下去(称之为逆字典序).有一些条件,如果两数\(x,y\)的差小于\(K\), 那么它们的相对位置不可变. 所以如果从必须在前面的往必须在后面的连边,得到的图将是一个DAG,现在需要求它的一个拓扑序满足上面的最优化条件. 先排除几个错误结论: 翻转后字典序越大,字典序越小,错误.逆字典序越大,字典序越大/…
Description 给你一个长度为$n$的排列,每次可以交换$|i-j|\geq K$并且$|a_i-a_j|=1$的数对,问你经过若干次变换后最小字典序的排列是啥 Solution 对$a$做一个变换,令$b_{a_i}=i$,$b$数组的意思就是$i$在哪个位置 那么问题就转化成 你可以交换相邻的$|b_i-b_{i+1}|\geq K$的数对 这个时候很多人都说只要令$b$的字典序最小就可以了,但我感觉不是很对.. 毕竟$b$字典序小和$a$字典序小没有什么关系啊.. 再想一想上面条件…
给出的模型很难搞,所以转换一下,记p[i]为i这个数的位置,然后相邻两个p值差>k的能交换,发现使原问题字典序最小也需要使这里的字典序最小 注意到p值差<=k的前后顺序一定不変,那么可以n^2建图用堆跑最小字典序拓扑序 考虑优化,每个点需要向[p[i]-k+1,p[i]+k-1]这段区间的数连边,但是有一些边是多余的,也就是区间[p[i]-k+1,p[i]],[p[i],p[i]+k-1]这两个区间内的数一定两两有边所以连向当前点后面最近的一个即可,这个用线段树来找 #include<i…
解法参考这位大佬的:https://www.cnblogs.com/BearChild/p/7895719.html 因为原来的数组不好做于是我们想反过来数组,根据交换条件:值相邻且位置差大于等于k,那么在变换后的数组就变成了位置相邻且差值大于等于k.这样的话变换操作变成了,相邻的大于等于k的值临近交换,于是我们注意到因为现在只能临近交换的原因,两个差值小于k的数他们的相对位置不可能发生改变.那么问题就变成了,在只有一些相对位置限制条件下,无限制的可以随意交换位置,求这个数组的最小字典序(原数组…
题目传送门 题目大意 给出一个长度为 \(n\) 的排列 \(a_{1,2,...,n}\) 以及常数 \(k\),每次可以交换两个数 \(a_i,a_j\) 当且仅当 \(j-i\ge k \text{ and } |a_i-a_j|=1\) ,问最小能变成的最小字典序的 \(a\) 序列. \(n\le 5\times 10^5\) 思路 首先很重要的一点是,我们肯定得把题目转换一下,不然 \(j-i\ge k\) 这个条件太难用了.我们其实可以设 \(p_i\) 表示元素 \(i\) 所在…
Atcoder 题面传送门 & 洛谷题面传送门 咦?鸽子 tzc 来补题解了?奇迹奇迹( 首先考虑什么样的排列可以得到.我们考虑 \(p\) 的逆排列 \(q\),那么每次操作的过程从逆排列的角度思考,就可视作每次在逆排列中交换两个相邻,且元素值之差 \(\ge k\) 的元素.注意到对于两个元素 \(x,y\),如果 \(|x-y|<k\),那么我们肯定永远无法交换它们,它们的相对位置顺序也永远无法改变,因为要改变它们的相对顺序必须交换它们.而一对 \(|q_i-q_j|<k,i&l…
RE:从零开始的AGC被虐(到)生活(不能自理) 「一直注视着你,似近似远,总是触碰不到.」 --来自风平浪静的明天 AtCoder Grand Contest 001 B: Mysterious Light 设 \(f(x, y)\) 为上一次反射长度为 \(x\) ,边界长度为 \(y\) 的答案,容易观察得到 \(f(x, y) = 2 \times \lfloor\frac{y}{x}\rfloor \times x + f(y \mod x, x)\) C: Shorten Diame…
一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D:构造. E:根据组合数意义转为$DP$. F:拓扑排序,线段树优化连边. AGC 002 C:水题,看是否有a[i]+a[i+1]>=k. D:并查集上倍增,二分答案. E:博弈(坑) F:模型转化然后$DP$. AGC 003 C:一个数到自己应到位置距离为奇数的个数/2. D:数学,质因数分解,…
本来说好的好一场烂一场. 那样的日子结束了,连着烂了两场...幸亏T3傻逼了救我一命不算太惨... T1树上的特殊性质会做但是没有继续想下去就死在错贪心上了还没有过那个点... T2迭代至稳定被我错误的hack了,贪心炸了. T3我觉得考场上我在yy证明,但是它是对的. 于是我去了趟厕所清醒了一下,回来还是hack不掉我的证明... 于是去隔壁问教练w的范围,不告诉... 那我要打高精??? 不可能的我又不是正解,于是开个long long就交了. 然后竟然就A了??? 据说开int会飞天. T…
AGC001 A BBQ Easy 贪心. https://agc001.contest.atcoder.jp/submissions/7856034 B Mysterious Light 很nb这个题 不好做,设\(f(a,b)\)表示边长为\(a,b\),一个角为\(60\)度的平行四边形从\(120\)度的角平分线处出发能走的路程,转移是一个递归,复杂度证明类似\(\gcd\). https://agc001.contest.atcoder.jp/submissions/7856746 C…
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和\(A_{i+1}\)之间只会有一个括号:有多个括号的话只保留最外边那个,答案不变. 然后就可以定义状态:\(dp_{i,j}\)表示前\(i\)个数,还有\(j\)个未闭合的左括号,得到的最大答案. 由于只有减号右边有括号,所以只要知道左边有几个未闭合的左括号,就可以知道自己的贡献是\(1\)还是…
1. 3721 Smuggling Marbles 大意: 给定$n+1$节点树, $0$为根节点, 初始在一些节点放一个石子, 然后按顺序进行如下操作. 若$0$节点有石子, 则移入盒子 所有石子移向父亲节点 把所有不少于$2$个石子的节点的石子丢掉 若树上还有石子,则返回第一步 对于所有$2^{n+1}$种初始放石子的方案, 求出最后盒子中石子总数之和. 长链剖分, 这道以后再写 2. 3727 Prefix-free Game 两个串$s,t$合法要满足 $s$不为$t$的前缀且$t$不为…
AGC001 A - BBQ Easy 从第\(2n - 1\)个隔一个加一下加到1即可 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define eps 1e-…
这个帖子,是在自己学知识点累了的时候就看看\(AGC\)的题目来休息. 而且白天上课可以做( AGC-001 \(A\ BBQ Easy\) 考虑从小到大排,相邻两个取为一对. BBQ Easy #include<iostream> #include<cstdio> #include<algorithm> #define ll long long #define N 100000 ll n; ll num[N],ans; int main(){ scanf("…
CF1039D You Are Given a Tree 容易发现,当 \(k\) 不断增大时,答案不断减小,且 \(k\) 的答案不超过 \(\lfloor\frac {n}{k}\rfloor\) ,因此不同的答案个数是 \(\sqrt n\) 级别的,可以用一种类似整体二分的方式求解. 对于一个 \(k\) ,从叶子节点贪心向上匹配即可得到答案. 点击查看代码 #include<bits/stdc++.h> using namespace std; int n; int ver[2000…
背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如下代码耗时统计进行压测:   long startTime = System.currentTimeMillis();  callRpc();   //这里比如调用RPC伪代码,当然还在插入数据库,中间件地方都加入统计  long costTime = (System.currentTimeMill…
简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现. 物理存储介质(PhysicalStorageMedia) 指系统的物理存储设备:磁盘,如:/dev/hda./dev/sda等,是存储系统最底层的存储单元. 物理卷(Physical Volume,PV) 指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,…
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, onl…
交换区域(Swap Area)有什么作用? 交换分区是操作系统在内存不足(或内存较低)时的一种补充.通俗的说,如果说内存是汽油,内存条就相当于油箱,交换区域则相当于备用油箱. Ubuntu Linux安装时可以在磁盘上划出一个分区用作内存交换区域.文件则介绍如何使用文件作为内存交换区域.这两种方法在使用效果上没有太大区别,但文件可以在分区之后创建,且调整大小更容易,所以这种方案更加灵活. 本文在Ubuntu上试验成功,在其他发行版操作类似. 原文地址:https://www.howtoforge…
swap(a, b): a ^= b b ^= a a ^= b 先明确一下,a ^ a = 0,同时对于一切数x ^ 0 = x 可以这样理解,第三行: b ^= a b ^= a ^ b b = b ^ a ^ b b = 0 ^ a b = a 第四行: a ^= b a = a ^ b a = (原来的a ^ b) ^ 原来的a a = b…
分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文件 /sbin/mkswap Swap.disk 或 /sbin/mkswap -f Swap.disk 激活swap文件/sbin/swapon Swap.disk 查看swap信息是否正确/sbin/swapon –s 添加到fstab文件中让系统引导时自动启动echo "/var/Swap.d…
Linux上的free命令详解   解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516                    1          2          3          4          5          61              total   …
阿里云的服务器是没有交换分区的,如 [www-data@iZbp1ivdq1ie5lmrhp13kjZ ~]$ free -m total used free shared buff/cache available Mem: Swap: 1.创建swap分区,关于这个swap 应该设置多大呢? 4GB 或 4GB 以下内存的系统,最小需要 2GB 交换空间: 大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间: 大于 16GB 而小于 64GB 内存的系统,最小需要 8GB…
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, on…
首先查看当前的内存及swap情况(参数 -h,-m ) [root@centos ~]# free -h 查看swap信息,包括文件和分区的详细信息 [root@centos ~]# swapon -s 创建swap交换文件(最大值为2G) [root@centos ~]# dd if=/dev/zero of=/var/swap bs=1024 count=2048000 设置交换读写权限[root@centos ~]# chmod 0600 /var/swap 格式化swap交换文件[roo…
原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/678 题目如下: Given any permutation of the numbers {0, 1, 2,..., N−1N-1N−1}, it is easy to sort them in increasing order. But what if Swap(0, *) is the ONLY operation that is allowed to use? For exam…
#24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify t…