2016.10.15【初中部 NOIP提高组 】模拟赛C
来源:互联网 发布:java 连续登录天数 编辑:程序博客网 时间:2024/05/16 10:57
现在才AK,我的心啊……
T1:
题目大意:
两头公牛之间至少有有k头奶牛的组合有多少种?
dp.
设f[i]表示到前i头牛能组成的方案数.
分类讨论:
对于i<=k,则不可能放两只公牛,公牛放一只有i种,不放公牛也算一种,合起来就是i+1种
对于i>k,可以放n多只公牛,那么很明显,如果第i个为母牛,则方案数为f[i-1],若放公牛则方案数为f[i-k-1](这样子才能去重)
T2:
题目大意:
给你一堆计算公式,让你求一个最终的最优值。
分析:
注意,这些计算公式有一个特点,那就是根据下标的位置来计算的。
没看懂题的就可以ctrl+w了……
那么,设一个最容易想到的状态:
f[i,j]表示前i个数选j个数的最优值,且第i个必选。
则对于前i个数,因为计算值与下标有关,所以我们还需枚举一个下标k,前k个数的值可以直接通过状态值求出。
而k+1到i-1需要计算得出值,设为sum(这也需要个循环)
f[i,j]=min{sum+f[k,j-1]}
这样就可以求解最优值了.
注意当我们对状态f[i,j]是否为最优值时,对于i+1到n的还要再算出来,这些也是需要费用的,费用也很容易算出来,直接按照公式第三步按部就班就Ok了.
时间复杂度将近O(n^4)
当然,还可以优化时间.
不先枚举个数j,先枚举k,然后求一个区间的值,记为sum,则可以为O(n³)
T3:
显然对于两种下车的奶牛(a,b),(c,d),若c>a,d<b,则如果车满的话肯定踢掉a,b
按照此思路然后用个邻接表求一下好了
具体取法如下:
如果当前前面上车的奶牛数为x,现在需要上车的奶牛加上x大于了总载量,则肯定先载到满之后在看余下的是否能代替一些牛。
T4:
连负边,走一遍spfa,注意:如果某一个点经过的次数“过多”就是出现了负环,输出无解即可。
- 2016.10.15【初中部 NOIP提高组 】模拟赛C
- 2016.10.04【初中部 NOIP提高组 】模拟赛C题解
- 2016.10.06【初中部 NOIP提高组 】模拟赛C
- 2016.10.06【初中部 NOIP提高组 】模拟赛C
- 2016.10.07【初中部 NOIP提高组 】模拟赛C
- 2016.10.07【初中部 NOIP提高组 】模拟赛C题解
- 2016.10.29【初中部 NOIP提高组 】模拟赛C题解
- 2016.10.29【初中部 NOIP提高组 】模拟赛C题解
- 2016.10.29【初中部 NOIP提高组 】模拟赛C题解
- 2016.10.29【初中部 NOIP提高组 】模拟赛C
- 2016.10.29【初中部 NOIP提高组 】模拟赛C
- 2016.10.29【初中部 NOIP提高组 】模拟赛C
- 2016.07.15【初中部 NOIP提高组 】模拟赛C
- 2016.07.15【初中部 NOIP提高组 】模拟赛C
- 2016.07.15【初中部 NOIP提高组 】模拟赛C
- 2016.08.15【初中部 NOIP提高组 】模拟赛C题解
- 2016.08.15【初中部 NOIP提高组 】模拟赛C
- 2016.08.15【初中部 NOIP提高组 】模拟赛C题目
- 字符编码与字符集的区别
- OC__part11.3
- Mybatis实现多对多映射的查询
- 数组的最小值
- Fast-forward合并和普通合并
- 2016.10.15【初中部 NOIP提高组 】模拟赛C
- 初识嵌入式
- 总结28
- SpringMVC常用注解
- 消息队列的相关知识
- Java和PHP在Web开发方面的比较
- Android图片加载框架——Picasso和Glide
- Windows::ServicingAPI::CCDF
- 洛谷P1101 单词方阵