luogu P5371 [SNOI2019]纸牌】的更多相关文章

传送门 打麻将+1(雾 有顺子这种东西...注意到以某个位置为开头的顺子数量最多为2,那么有个想法就是枚举以每个位置为开头的顺子个数,然后每个位置的刻子的取法个数为\(\lceil\frac{\text{剩下的牌数}}{3}\rceil\),乘起来,然后每种情况的和就是答案 所以设\(f_{i,j,k}\)表示放到\(i\)牌,有\(j\)个\(i-1,i,i+1\)以及\(k\)个\(i,i+1,i+2\)的方案.转移枚举下一位放多少顺子(注意最后两个位置只能放0个),然后乘上刻子的取法个数进…
题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 $1$ 堆上取的纸牌,只能移到编号为 $2$ 的堆上:在编号为 $N$ 的堆上取的纸牌,只能移到编号为 $N-1$ 的堆上:其他堆上取的纸牌,可以移到相邻左边或右边的堆上. 现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都…
题目很简单,但是可以学一学贪心策略 把纸牌均匀分布,从左往右推掉不用的纸牌 #include <iostream> using namespace std; int main() { int a,p=0,js=0; cin>>a; int q[a]; for(int y=0;y<a;y++) { cin>>q[y]; p+=q[y]; } p/=a; for (int y=0;y<a;y++)q[y]-=p; for (int y=0;y<a;y++)…
传送门 Description 有一副纸牌.牌一共有\(n\)种,分别标有 \(1,2,...,n\),每种有\(C\)张.故这副牌共有\(nC\)张. 三张连号的牌(\(i,i+1,i+2\))或三张相同的牌 \((i,i,i)\) 可以组成一叠.如果一组牌可以分成若干(包括零)叠,就称其为一组王牌. 你从牌堆中摸了一些初始牌.现在你想再挑出一些牌组成一组王牌,请问有多少种可能组成的王牌呢?答案对\(998244353\)取模. 两组牌相同当且仅当它们含有的每一种牌数量都相同. Solutio…
题目 如果\(P>Q\)的话我们先交换一下\(P,Q\). 我们先枚举所有满足第一个条件的数,对于\(x\equiv a_i(mod\ P)\),设\(x=a_i+kP(k\in[0,\lfloor\frac{T-a_i}P\rfloor])\). 然后能够产生贡献的数就是\(x\%Q\in B\)的数. 而且我们知道,当\(Q|kP\)时\(x\%Q\)就会产生循环,也就是说对\(k\)而言,\(M=\frac Q{(P,Q)}\)是循环节. 所以我们可以将计算\(k\in[0,\lfloor…
传送门 有匹配次数限制,求最小代价,这显然是个费用流的模型.每个点暴力和前面的点连匹配边,边数是\(n^2\)的. 然后发现可以转化成一个set,每次加入一个点,然后入点对set里面的出点连边.这个set可以用主席树实现,然后就主席树优化连边,点数边数都是\(nlogn\)的,然后就能过了 注意这里连边要把一个点入点拆成两个\(a_i,-a_i\),出点同理,然后假设\(a_i\)在set的第\(p\)位,\(a_i\)在负权值主席树上连区间\([1,p-1]\),\(-a_i\)在正权值主席树…
传送门 显然要写一个排序,那只要考虑cmp函数怎么写就行了.第\(i\)个字符串和第 \(j\)个,首先前\(min(i,j)-1\)个字符是相同的,然后就是要比较后缀\(min(i,j)\)和\(min(i,j)+1\),先求lcp(要对\(max(i,j)-min(i,j)\)取\(min\)),如果两个后缀往后跳lcp的位置字符不一样就可以得到结果了. 然后可以用SA求lcp 然后我T了,但是可以发现所有lcp都是相邻两个后缀的,所以这个可以\(O(n)\)递推 #include<algo…
LOJ#3098. 「SNOI2019」纸牌 显然选三个以上的连续牌可以把他们拆分成三个三张相等的 于是可以压\((j,k)\)为有\(j\)个连续两个的,有\(k\)个连续一个的 如果当前有\(i\)张牌,且\(i >= j + k\) 那么可以\((j,k)\rightarrow (k,(i - j - k) \% 3)\) 可以用矩阵乘法优化,每遇到一个有下限的牌面的就再特殊造一个矩阵转移 #include <bits/stdc++.h> #define fi first #def…
传说中的网络流24题之一,我刷的第二题菜. 据说这种东西做完了就可以有质的飞越?不过看着这些Luogu评级就有点蒙蔽. 首先我们看一下题目发现这不是均分纸牌的加强板吗,但是那个环的操作极大地限制了我的思想. 我们考虑用费用流求解. 首先拆点,把每一个仓库拆成两个,一个\(x_i\)表示供给别人的货物,一个\(y_i\)表示别人供给的货物.然后建立超级源点\(S\)和超级汇点\(T\). 我们可以很容易地知道:每一个仓库最后剩下的货物数量必定是总货物数量的平均数. 然后就很简单了.我们将所有的货物…
https://www.luogu.org/problem/show?pid=1031#sub 题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上:在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上:其他堆上取的纸牌,可以移到相邻左边或右边的堆上. 现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多. 例如 N=4,4…