793div2 E 可上 CF 看本题解。 建模不多说,你会把排列拆成若干个轮换,然后对于长为 \(k\) 的轮换,会且仅会用 \(k-1\) 次交换(因为题目保证用的次数是最少的)。 把这些交换抓出来建图,会得到一个森林,你需要给每条边定向,使得每棵树的拓扑序都可以和原轮换循环同构。 考虑如果满足一个 \(i
WintersRain大佬太巨了 很多dp技巧 1 既然可以瞎**动 不如规定让相邻的动(废话) 2既然可以左右动 不如只让往右动 在 f[i] 处就处理好 i 与 i+1 产生的操作数 这样转移只用管一边 设 f[i[[j][k] 为到第 i 个盘子 一共 j 个小球 第 i 个盘子有 k 个 并已经与 i+1 产生交
G 简单叙述一下吧:类似 散步 那道题,只不过要用线段树维护不能上暴力。简单说一下线段树的思想,维护区间速度的最值,因为在左边的速度最大——维护一个不上升的序列; Sakura_Lu现在的马蜂还行,去看他的应该能看懂。link F(Shifting String) *Polycarp 找到了字符串
python写入csv 用Excel打开乱码的解决方法 来自:https://blog.csdn.net/gwruiki/article/details/123645329,感谢作者。 主要是因为编码格式不对,不能使用encoding='utf-8',改为encoding='GB18030'即可下面展示样例。 with open('1.csv', 'w', newline='
E. Bring Balance time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Alina has a bracket sequence s of length 2n, consisting of n opening brackets '(' and n closing brackets ')'. As
Description 计算满足下列条件的 \([m\times n]0/1\) 矩阵的数量: 每行后 \(n-k\) 列至少有一个 \(1\) 每行互不相同 \(1\sim p\) 列共有奇数个 \(1\),\(k+1\sim k+q\) 列共有奇数个 \(1\) 行之间无序 \(1\le k<n\le 10^9,m\le 10^6\) Solution 先不考虑最后一个限制,最后
D - String Deletion 贪心、链表 要想操作次数最大,设当前已经删到了第 i 个字符,那第一步操作就要找到 i 后面第一个有连续0/1的串,删掉其中一个 找到 i 后面第一个有连续0/1的串:将这些可以被删去的位置记录到 set 里,二分找到 i 后面第一个,找到了就删去 删去元素后可用链表来维护当
D - Ceil Divisions 构造 方法1 可考虑先把除了 1,2,k 的所有数跟 n 搞一下,这个一定是花 n - 4 次让除了 k,n 都满足条件 现在就让 n,k 变成 1 一直让 n 跟 k 搞,需要 \(\lceil log_kn\rceil\)次 一直让 k 跟 2 搞,需要 \(\lceil log_2k\rceil\) 次 求出 \(\lceil log_kn\rceil+\lceil
题意:由1到N个节点组成一个环,从节点1开始,每隔k个节点有一个餐馆(1也有餐馆) 现给出4个数据n,k,a,b n为餐馆的数量,k为餐馆之间的间隔距离,a为起始位置距离最近餐馆的距离,b为走了一步(步数未知)后距离最近餐馆的距离 思路:这题的未知数是每步所走路径l,我们可以把它先设为未知量l 对于走回原点
Problem - 1684C - Codeforces 题意: 现在有一个n*m的棋盘,每个棋子有一个值,你可以交换两列棋盘的棋子位置,使得每一行的棋子从左到右为非递减。 题解: 只需要判断一行不满足的即可,因为如果最后有答案,那么每一行的交换一定是相同的,所以判断一行即可。分两种情况,连续两个递减,连续三个
目录引言flag寄存器标志位介绍ZF标志,零标志位PF标志,奇偶标志位SF标志,符号标志位CF标志位,进位标志位OF标志,溢出标志位adc指令sbb指令cmp指令无符号数比较有符号数比较检测比较结果的条件转移指令根据无符号数比较结果进行转移的条件转移指令根据有符号数比较结果进行转移的条件转移
Problem - 1679C - Codeforces 题意:当t=1加入一个点,每个点可以影响一行和一列,t=2删除某个点,t=3判断这个矩形内的每个点是否都可以影响。 思路:开始时直接暴力,T了,然后看了看题解,学习了一波树状数组 Orz。 #include<bits/stdc++.h> using namespace std; typedef long long ll; ty
D - Present 位运算 + 思维 + 二分(双指针) 按位考虑,第 \(k\) 位是 0 还是 1 只跟前 \(k\) 位有关,因此算第 \(k\) 位的答案时可对 \(a\) 数组的元素 \(\mod 2^{k+1}\) 赋给 \(b\) 若 \(b_i+b_j\) 第 \(k\) 位是 \(1\), 则 \(a_i+a_j\) 的值域为 \([2^k,2^k-1],\;[2^k+2^{k+1},2^{k+
D - Substring 拓扑排序 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cmath> #include <queue> using namespace std; typedef long long ll; const int N = 3e5 + 10; int n, m; string s; v
C - Fox And Names 拓扑排序 要自定义字典序使给出的字符串是按字典序递增的顺序 可对于前后两个字符串可找到一组字母间的关系,转化为差分约束问题 #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cmath> #include <queue> using name
C - Berland Regional 算贡献 表面上若从 \(1\) 到 \(n\) 枚举 \(k\), 再枚举每个学校对第 \(k\) 个答案的贡献,复杂度为 \(O(n^2)\) 但因为一共只有 \(n\) 个学生,设每个学校有 \(cnt_i\) 个学生,那么每个学校最多只会对前 \(cnt_i\) 个答案有贡献,所以所有学校加一起对这 \(n\) 个答
D - Inconvenient Pairs 思维 不方便的点对就是类似于,这种在同一行块或同一列块的两个点,他们的距离一定大于曼哈顿距离 其中红色为横向点对,紫色为纵向点对 所以可按 y 递增排序,找到每一个行块有多少个点,这一行块中的点对贡献为:\(\binom {cnt}2-\sum\binom {同一列的点的数量}2\)
CF:进位标志。它记录运算时从最高有效位产生的进位值或借位值。最高有效位有进位或借位时 CF=1,否则 CF=0。 OF:溢出标志。在运算过程中,如运算结果已超出了机器能表示的数值范围(指有符号数)称为溢出,此时 OF=1,否则 OF=0。 进位标志 CF 和溢出标志 OF 是两个不同性质的标志,不能混淆。
D - Shuffle 组合数学 记当前枚举的区间从第 i 个 1 到 第 i + k - 1 个 1,记 j = i + k - 1, 那这些 1 可以随意排列的区间为 \([pos[i-1]+1, pos[j+1]-1]\), 设为 \([l,r]\), 这个区间对答案的贡献为 \(\binom {r-l+1}k\) 但是和上一个区间会有重复,重复的数量为 \(\binom {pos[j
比赛链接 A题 Tokitsukaze and All Zero Sequence(思维) 给定一个长度为 \(n\) 的数列 \(\{a_n\}\)。 我们可以进行若干次操作,每次操作都选定两个位置 \(i.j\),随后: 若 \(a_i=a_j\),可以选择将 \(a_i\) 或 \(a_j\) 变为 0 若 \(a_i\not=a_j\),可以选择将 \(a_i,a_j\) 都变为 \(\min(a
比赛链接 A题 Prof. Slim(签到) 给定一个长度为 \(n\) 的数列 \(\{a_n\}\)(保证 \(a_i\not=0\)),我们可以对其进行若干次操作,每次操作都可以任意选择不同两项并交换他们的符号。 问,能否通过若干次操作,使得整个数列变为单调不降数列? \(n\leq 10^5,|a_i|\leq 10^9\) 我们观察发现两个性
最后一个小时脑力大爆发,生生的把规律找出来了,还看出来几个错误的地方,我真是个天才啊哈哈哈哈 遗憾的是,第一题和第二题只会最最最最基础的暴力 但是猜第一题结论的时候属实是给我爽了一会...... T1 魔法球 其实二分是非常显然的,但是check的时候出现了一点点小问题 我一直都在想实际
链接 AK后因细节fst之痛…… [G] 题意: 给一个有向无环图,现要删除一些边使得删除后所有点的入度和出度都减小了(如果是0则不变),求删边后“可爱”点集最大能有多少点。“可爱”点集是其中任意两点间都存在(至少)一条路径的点集。点数、边数均 \(\leq 2*10^5\) 。 分析: 删边的操作可以具
4.28 D1. Mocha and Diana (Easy Version) Problem - 1559D1 - Codeforces 难度:1400,类型:连通图,暴力,并查集 题意 已知两个无向图(简称图一和图二),都有n个点,图一有m1条边,图二有m2条边。请问可以最多共同加多少边使得两个图变成无向无环图 分析 鉴于n取值为1~1e3,
2.1.3 BFS中的双向广搜和A-star:https://www.acwing.com/video/455/ ps:为了督促自己学习新算法,开启每日acwing,如果顺利的话,暑假前可以把提高课刷完,然后暑假继续学习进阶课,学习过程中可以顺便看oiwiki,其他的算法学习方式感觉就没必要了,先把acwing搞定再说。 记录方式和cf一样,先把两