洛谷 P1483 序列变换】的更多相关文章

https://www.luogu.org/problemnew/show/P1483 数据范围不是太大. 一个数组记录给k,记录每个数加了多少. 对于查询每个数的大小,那么就枚举每个数的因子,加上这个每个因子假的数. #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <queue&g…
洛谷 P1032 字符变换 题目描述 已知有两个字串 A,B 及一组字串变换的规则(至多 6 个规则): A1​ -> B1​ A2​ -> B2​ 规则的含义为:在 A 中的子串 A1​ 可以变换为 B1​ , A2​ 可以变换为 B2​ …. 例如: A =' abcd ' B =' xyz ' 变换规则为: ‘ abc ’->‘ xu ’‘ ud ’->‘ y ’‘ y ’->‘ yz ’ 则此时, A 可以经过一系列的变换变为 B ,其变换的过程为: ‘ abcd ’…
P4597 序列sequence 题目背景 原题\(\tt{cf13c}\)数据加强版 题目描述 给定一个序列,每次操作可以把某个数\(+1\)或\(-1\).要求把序列变成非降数列.而且要求修改后的数列只能出现修改前的数. 输入输出格式 输入格式: 第一行输入一个\(n\),表示有\(n(n \leq 5\times10^5)\)个数字. 第二行输入\(n\)个整数,整数的绝对值不超过\(10^9\) 输出格式: 输出一个数,表示最少的操作次数 发现之前洛谷做过一个类似的..P2893 che…
洛谷题目链接:序列排序 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格式 输入格式: 第一行,一个整数N. 第二行,N个整数,表示小C的序列. 输出格式: 一行,一个整数,表示小C需要的最小代价. 输入输出样例 输入样例#1: 6 8 4 5 3 2 7 输出样例#1: 34 说明 数据范围: 对于30%的数据,1<=N<=10: 对于全部的数据,1&l…
https://www.luogu.org/problemnew/show/P4891 一道几乎一样的题http://210.33.19.103/contest/1130/problem/3 题面https://files.cnblogs.com/files/hehe54321/2019%E7%9C%81%E9%80%89%E8%81%94%E5%90%88%E8%AE%AD%E7%BB%8310.pdf.zip (这题看了题解后做的)题解(这个站看上去有点像那种爬虫站,并没有在原博客上找到,可…
洛谷题目传送门 闲话 考场上一眼看出这是个毒瘤线段树准备杠题,发现实在太难调了,被各路神犇虐哭qwq 考后看到各种优雅的暴力AC......宝宝心里苦qwq 思路分析 题面里面是一堆乱七八糟的限制和性质,这时候需要冷静想想有没有可利用的地方.蒟蒻一开始往势能线段树上面想了想. 定义一个全局势能函数,为所有\(C_i<B_i\)的位置个数.注意两个操作的修改都不会小于原来的数. 一个是改\(A\),相当于对\(C\)进行区间设置,此时我们每暴力找到一个原来\(C_i<B_i\)但是现在\(C_i…
题目大意:给定一个长度为 N 的序列,有 M 个操作,支持将下标为 x 的倍数的数都加上 y,查询下标为 i 的元素的值. 题解:由于查询操作很少,相对的,修改操作很多.若直接模拟修改操作,即:枚举倍数,容易超时.现考虑记录下每次 x 位置的修改值,每次查询一个位置时,只需枚举这个位置的约数,将这个位置所有约数处的修改加入答案贡献即可. 代码如下 #include <bits/stdc++.h> #define fi first #define se second #define pb pus…
题目大意:对于一个顺序序列,求一个合法置换,可以满足一些约束,若存在多个合法置换,则输出字典序最小的一个置换. 题解:对于序列的置换是否有解的问题,可以和二分图的完美匹配相关联.由于是字典序最小,显然需要贪心考虑.在匈牙利算法执行的过程中,对于每个点来说,可以优先匹配符合条件的最小的点:对于左边点集来说,可以从后往前进行匹配,这样可以保证字典序小的点更可能抢到字典序小的点. 代码如下 #include <bits/stdc++.h> #define pb push_back #define a…
这是一道二分图匹配的题 先%dalao博客 建图并没有什么难的,但是关键在于如何使字典序最小. 一个很显然的想法是先求出一个完美匹配,然后从x集合的第一个元素开始,如果该元素匹配的较小的一个,那么继续,如果是较小的一个,那么强制把它转换成较小的一个,然后在其之后,寻找增广路,如果能找到的话,就修改,如果没有,取消修改. 然而这样的时间复杂度比较高,我们可以采取一种比较高效的贪心. 倒着匹配 即从x集合的最后一个元素开始匹配,最后得到的就是字典序最小的. 那么为什么这样是对的呢? 我们可以发现,总…
传送门 我可能真的只会网络流……二分图的题一点都做不来…… 首先每个位置有两种取值,所以建一个二分图,只要有完美匹配就说明有解 考虑一下每一个位置,分别让它选择两种取值,如果都不能形成完美匹配,说明无解 然后考虑要让字典序最小.考虑一下匈牙利的过程,我们每一次如果遇到右边的点有匹配,我们都会让它把那个匹配给挤掉 那么我们考虑倒着做,这样的话每一次都必定是字典序小的挤掉字典序大的,可以保证最优 //minamoto #include<iostream> #include<cstdio>…