转自 CSND

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410
                                     转载请注明出处:http://blog.csdn.net/wangjian8006

题目大意: 对于连续的整数和的串s1和s2,s1与s2不相交,使得s1+s2最大
解题方法: DP。
 lt[i]代表以第i个元素结尾的串最大值
 rt[i]代表以第i个元素开头的串的最大值
 那么设置一个rtm[i]代表取后i个元素之中最大连续子串的和

很显然,lt[i]=max(a[i],lt[i-1]+a[i]);
 rt[i]=max(a[i],rt[i+1]+a[i]);
 rtm[i]=max(rtm[i+1],rt[i]);

此题与poj2593一模一样,但是要将MAXV改成10010就可以A了

 #include <iostream>
using namespace std;
#define max(a,b) a>b?a:b
#define MAXV 50010
#define inf -10010 int lt[MAXV],rt[MAXV],a[MAXV],rtm[MAXV]; int main(){
int t,n,i,temp;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=;i<=n;i++)
scanf("%d",&a[i]); temp=inf;lt[]=a[];rt[n]=a[n];
for(i=;i<=n;i++){
lt[i]=max(a[i],lt[i-]+a[i]);
}
for(i=n-;i>=;i--){
rt[i]=max(a[i],rt[i+]+a[i]);
} rtm[n]=rt[n];
for(i=n-;i>=;i--)
rtm[i]=max(rtm[i+],rt[i]); int ma=inf;
for(i=;i<=n;i++){
ma=max(ma,lt[i-]+rtm[i]);
}
printf("%d\n",ma); }
return ;
}

最新文章

  1. 【转】WPF防止界面卡死并显示加载中效果
  2. linux系统下sendmail的搭建
  3. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
  4. &quot;unresolved external symbol __imp__WSACleanup@0&quot;
  5. Vue.js学习 Item9 – 表单控件绑定
  6. C# JSON字符串序列化与反序列化
  7. android AsyncTask异步下载并更新进度条
  8. XCode4中的文本查找和文本替换功能
  9. HW6.12
  10. 通过修改 Apache 的配置文件 htaccess 文件实现自定义404页面
  11. Qt的信号槽,一个老MFC的经验
  12. vuejs 相关资料
  13. 集智人工智能学习笔记Python#0
  14. 关于一体机外卖单不打印外卖单号FAQ(适用正餐6.0.09,轻餐4.0.6.1,轻餐4.0.6.2)
  15. Ubuntu下添加Samba用户名与密码
  16. JS全局对象的属性
  17. 接口测试3A原则
  18. js 当前时区
  19. 小Z的袜子(hose)
  20. 20145339 Exp5 MS11_050

热门文章

  1. FileUpload.PostedFile 为null异常 NullReferenceException
  2. mysql_connect(): Headers and client library minor version mismatch.
  3. web测试工具总结
  4. nginx内网代理为外网地址
  5. poj 3601 Tower of Hanoi
  6. CentOS7 防火墙操作
  7. 用jQuery来绑定事件的3种方法和区别
  8. linq中where与skipwhile区别
  9. Java - 避免不必要的对象
  10. spring的事务管理配置