(第一弹)CJ内测

Day 1:


Pro.1 EX魔术球问题

网络流24题魔术球的数据加强版。


手玩小数据后不难发现一种放置策略,并且感觉这种策略至少是比较优的。


经过推导这种策略所能放的球数为 (n^2-1)/2+n ,所以这至少是下界了。


能否更多呢?考虑[(n^2+1)/2, (n^2+1)/2+n]这n+1个数,任意两个之和都在n^2~(n+1)^2,故n行肯定塞不下,所以这也是上界。


分析最优策略规律,构造并证明策略,是解决一些最优方案问题的突破口。


Pro.2 矩阵

给定矩阵每行每列的最大值求方案数。


这题模型变换非常重要!思考后发现交换行或列原问题仍然等价,于是我们不妨给行列按最大值从大到小排序,得到新矩阵。


称每个格子的最大可能值为h[i],发现经过排序处理后的每一块h[i]=H的格子集合都是L型。


我们按H从大到小考虑每一L块,发现对某一块L端点处的行列,最大值只能从这个L中产生。


发现直接计数不方便,考虑用取补思想,进一步发现要用容斥原理。先算所有情况,减去有一行一列不满足的,加上一行两列和两行一列的……


枚举x行y列不提供最大值,那么 ans[i] = Σ C[a][x] * C[b][y] * v^e1 * (v+1)^e2 * (-1)^(x+y)。


巧妙利用模型无后效有序化来简化模型,容斥原理处理某些无法直接计数的问题。


Pro.3 NIM

选n个不超过L的质数(可以相同),要求它们xor起来等于0,求方案数。


普通Dp是很好想的,矩阵乘法也不难写,但正解稍有些理性愉悦。


f[i,j]表示i个数xor为j的方案数,那么: ( 下面开始蒯图 =- = ||



序列分组转换为递归子问题,分治求解。



Day 2:


Pro.1 光之大陆

求N个有标号的点的连通图且满足任一点不在俩环上的图的个数。


非常巧妙的计数题啊,利用了prufer性质和设而不求的思想…… Orz pty, Orz PP ……


原图肯定由若干环互相连边成树而组成,那么对于每棵树来说,其方案数有:W = π S[i]^d[i] 。注意这里讨论的环是有编号的。


有编号生成树,想到prufer序列。令 T = π S[i],a[1~n-2]为prufer序列 ,那么 W = T * Σ (S[a[1]]*S[a[2]]……*S[a[n-2]]) = T * N^(n-2)


设计状态f[i,j]表示i个点分j组,对应的ΣT的值。转移的时候,枚举最后一个环的大小m,则有:

f[i,j] = Σ f[i-m, j-1] * m * (m-1)!/2 * C(n-1, m-1)    划线部分是重点,为神马是C(n-1,m-1)而不是C(n,m)捏?这便是这个算法不算重的精髓。

在这里我们规定把编号最大的点放进我们枚举的环里面——这样新加入的环一定不会在原图中出现过——而原图是没有算重的。思想有点像数学归纳法。


树的计数有两大神器Prufer、基尔霍夫,将树的计数转换为和度有关的问题,再用Prufer统计。

计数算重是十分蛋疼的,为了不算重可以考虑加入标志性元素。


Pro.2 数字游戏

1到n这些自然数无缝隙排一排,奇数位上面是+,偶数位上面是-,求最后的结果。


数位统计类问题的基本思想

1.区间加减法思想。

2.分段求解思想。

3.观察得规律思想。


本题跟区间没关系,所以就考虑2、3了。

首先,假设n是5位数,那么先求出1~9999的结果,关于这个么,1~9、1~99、1~999都是有规律的……

那么接下来的数位数都相同了,于是分奇偶位数讨论,按位算贡献,最后求和就行了。


数位统计类问题的思考方式:区间分解-->分段计数(Dp or 组合数学), 暴力打表-->找规律。


Pro.3 贝壳

提交答案类题目,大概就是给n个带权点,以及m个形如" if (not)cho[i] &&(||) (not)cho[j]  then +val"的设定(cho[i]表示是否选点i),求最大权值。


提交答案题一般这么

1.小数据用暴搜 ( = = 废话

2.中等数据或小数据无关联组合用近似算法 ( 0.0 退火

3.大数据么……考虑靠谱算法吧,什么网络流、贪心啊。


关于数据处理,一般可以用排序,找最大最小的几个,以及各种按性质分组什么的。


总之要善于分析数据特点,针对每类数据写程序,不能乱……


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值