2018年10月31日普级组 解题报告

首先第一题是个很明显的水题切掉了,第二题发现都是1,于是就输出了1,竟然有50!第三题打了贪心40,总分190


T1 婚礼上的小杉

排序题,略掉吧。。。
话说我是本题唯一一个 O ( n ) O(n) O(n)过的


T2 玩诈欺的小杉

给定变化规则,求最终矩阵
这是经典搜索题的变例,操作的方式是影响到前后两行,前后一列,由于经典的方法——枚举第一行的状态会导致解法不唯一(不能确定其他行的状态),于是我们考虑枚举第一列的状态。

枚举第一列的操作状态以后,根据前一列的操作与目标棋盘该列的状态确定下一列的操作(这里我们必须使用位运算,否则面对 20 × 20 20\times 20 20×20的数据肯定超时),最后确定最后一列操作后的状态是否符合目标,若符合则为一个解法。这里有一个小技巧,不断推出每一列的操作状态,若第 M + 1 M+1 M+1列(实际不存在该列)的操作为不进行任何操作,那么这确定为一个解法
代码略


T3 拼拼图的小杉

d p dp dp练习题
由于拼图放进集合必须是有顺序的,于是这个问题满足了无后效性,这告诉了我们应该要DP,至于怎么DP,其实有很多方式,下面是我的一种方式。

令c[i,j]=(a,b)表示前i个拼图选出j个最少要用a+1个集合,最后一个集合已经放了b个拼图块才能放得下。

c [ i , j ] = m i n { c [ i − 1 , j ] , c [ i − 1 , j − 1 ] + a [ i ] } c[i,j]=min\{c[i-1,j],c[i-1,j-1]+a[i]\} c[i,j]=min{c[i1,j],c[i1,j1]+a[i]}
其中
c [ i − 1 , j − 1 ] + a [ i ] = ( c [ i − 1 , j − 1 ] . a , c [ i − 1 , j − 1 ] . b + a [ i ] ) c[i-1,j-1]+a[i]=(c[i-1,j-1].a , c[i-1,j-1].b+a[i]) c[i1,j1]+a[i]=(c[i1,j1].a,c[i1,j1].b+a[i]) ( c [ i − 1 , j − 1 ] . b + a [ i ] &lt; = T ) (c[i-1,j-1].b+a[i]&lt;=T) (c[i1,j1].b+a[i]<=T)

否则 ( c [ i − 1 , j − 1 ] . a + 1 , a [ i ] ) (c[i-1,j-1].a+1 , a[i]) (c[i1,j1].a+1,a[i]) ( c [ i − 1 , j − 1 ] . b + a [ i ] &gt; T ) (c[i-1,j-1].b+a[i]&gt; T) (c[i1,j1].b+a[i]>T)
最后 A n s = m a x { i ∣ c [ n , i ] &lt; M } Ans=max\{i|c[n,i]&lt;M\} Ans=max{ic[n,i]<M}

O ( n 2 ) O(n^2) O(n2)


T4 想越狱的小杉

也就是对每个点,找一条原点出发的路径,使其最小边最大。

用类似最短路的算法,只在判断更优的时候稍微改变判定方式,就能得到解。

O ( n 2 ) O(n^2) O(n2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值