摘要:
qwq 阅读全文
摘要:
传送门 求ax%b = 1,即ax - by = 1; 很明显这是一个exgcd的形式。 那么要做这道题,首先需要gcd和exgcd的算法作铺垫。 gcd(辗转相膜法): exgcd就是在求出gcd的基础上,求出ax+by = gcd(a,b)的一组x,y的解: 这个算法的原理如下: 当b=0时,g 阅读全文
摘要:
传送门 一眼就能看出来是个并查集 但是并不会写... 看了一下题解说是并查集求最小环qwq 所以,每次加入第i个小同学,判断如果他要告诉的小同学k最后会告诉他(也就是转回来了), 就说明出现了一个环,这时更新一下最小环; 否则就记一下他要告诉的小同学fa[x](为下一个环做铺垫) (如果已经找到环就 阅读全文
摘要:
传送门 阅读全文
摘要:
传送门 首先 这是一个并查集= = 这道题其实明白了还挺简单的qwq 思路: 因为只看仇恨值最大的一对儿,所以把他们从大到小排序,越大的就尽量分开,直到不能再分为止qwq q[x]表示x最大的敌人(x对q[x]的仇恨值最大); 如果x已经有了最大的敌人q[x],那么y就该跟q[x]分到一起;否则q[ 阅读全文
摘要:
题目 一道神奇的题qwq 首先看题很容易想到把所有的点存下来然后暴力枚举...于是RE 20分 所以要找一种不用开那么大的数组的解法(然而我自己是不可能想出来的qwq 注意一个地方,人数为奇数的位置“最多也仅有一个”,说明奇偶性只根据这一个点改变 ……也就是说,用前缀和的方法表示的时候,奇数点之前都 阅读全文
摘要:
题目qwq (第一道蓝题) 先把第一个序列每个数出现的顺序记下来(数字本身不用记), 然后第二个序列的每个数都对照它的顺序,这样只要得到一个升序的序列就行了qwq 如果遇到出现顺序在前面的数,就用二分法找一下它的位置,然后把原来存下来的顺序覆盖掉 #include<cstdio> using nam 阅读全文
摘要:
题目 (第一道绿题) 有点像最大子矩阵qwq 用前缀和存图,l,r代表横向的一段区间,区间和就是a[r]-a[l-1] 然后用一个k从上到下dp...因为每次l,r变化的时候原来的k就没有用了,所以k开一个表示第几行的一维数组,把最大值记下来就行qwq 特殊的是如果为0是不能选择的...改成-∞就可 阅读全文