ACM 遗憾题!!
来源:互联网 发布:proteus单片机教程 编辑:程序博客网 时间:2024/05/17 22:04
Codeforces 467 C George and Job
做题感悟:这题其实不难,想的太多的,思路有点乱。
解题思路:
状态压缩方程: dp[ i ] [ j ] = max( dp[ i -1 ] [ j ] , dp [ i - m ] [ j-1 ] + sum[ i ] - sum[ i - m ] ) ; sum[ i ] 为前 i 项和 ,dp[ i ] [ j ] 代表选到第 i 个选择了 k 段的最大值,因为每一步都是最优的,so ~ 到达第 i 个的时候只要考虑,拿或者不拿就可以了。
代码:
#include<iostream>#include<sstream>#include<map>#include<cmath>#include<fstream>#include<queue>#include<vector>#include<sstream>#include<cstring>#include<cstdio>#include<stack>#include<bitset>#include<ctime>#include<string>#include<iomanip>#include<algorithm>using namespace std ;#define INT __int64const double INF = 99999999 ;const double esp = 0.0000000001 ;const double PI = acos(-1.0) ;const int mod = 3 ;const int MY = 100000 + 5 ;const int MX = 5000 + 3 ;int n ,m ,k ;INT sum[MX] ,dp[MX][MX] ;int main(){ while(~scanf("%d%d%d" ,&n ,&m ,&k)) { sum[0] = 0 ; for(int i = 1 ;i <= n ; ++i) { cin>>sum[i] ; sum[i] += sum[i-1] ; } for(int i = m ;i <= n ; ++i) for(int j = 1 ;j <= k ; ++j) dp[i][j] = max(dp[i-1][j] ,dp[i-m][j-1] + sum[i]-sum[i-m]) ; cout<<dp[n][k]<<endl ; } return 0 ;}
URAL 2000 Grand Theft Array V
做题感悟:这题很水很水,比赛时竟然两个人都没做出来,首先要仔细读题,然后确认题目无误后认真调试代码,还有就是想数据的时候别想当然的去想,每一组数据都要手推一下,谨记!!!!!
解题思路:
两者必定是先取两者公共的部分,然后自己一边的必定属于自己,注意两者在同一点的时候就可以了。
代码~~>
0 0
- ACM 遗憾题!!
- 遗憾
- 遗憾
- 遗憾
- 遗憾
- ?遗憾?
- 遗憾
- 遗憾
- ~遗憾~~
- 遗憾
- 记第五届山东省ACM程序设计比赛——遗憾并不是遗憾
- 河南省第八届ACM大学生程序设计竞赛的遗憾
- 遗憾并不遗憾
- [转帖] 遗憾
- 没有遗憾
- 原创 遗憾
- 不要遗憾
- 遗憾一点
- 无限级分类--获取子分类
- 高效率三大法则总结
- EL和JSTL
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- 清空 DB2 表中数据的几种方法
- ACM 遗憾题!!
- android联系人中英文混合排序
- html jquery 控制 table 排序
- 后台批量分配物料--interface
- u盘文件乱码怎么恢复,小牛数据恢复
- 黑马程序员---c语言入门疑难点----指针
- vi简介
- iOS开发之微信聊天工具栏的封装
- nginx-rrd监控nginx 使用说明