【动态规划】XMU 1560 新ACM规则

题目链接:

  http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1560

题目大意

  给定n(n<=200)个任务及每个任务的耗时,问m(m<=200)时间能够获得的最大收益(收益为解决连续任务数的平方的和,具体例子见题目)

题目思路:

  【动态规划】

  设f[i][j]表示前i个任务,当前时间为j的最优值。

  枚举第i个任务是前有几个和i连续的任务,状态转移方程很好推。

  时间复杂度比O(n3)小很多,大概O(n2)级别。

 1 //
 2 //by coolxxx
 3 //
 4 #include<iostream>
 5 #include<algorithm>
 6 #include<string>
 7 #include<iomanip>
 8 #include<memory.h>
 9 #include<time.h>
10 #include<stdio.h>
11 #include<stdlib.h>
12 #include<string.h>
13 #include<stdbool.h>
14 #include<math.h>
15 #define min(a,b) ((a)<(b)?(a):(b))
16 #define max(a,b) ((a)>(b)?(a):(b))
17 #define abs(a) ((a)>0?(a):(-(a)))
18 #define lowbit(a) (a&(-a))
19 #define sqr(a) ((a)*(a))
20 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
21 #define eps 1e-8
22 #define J 10000
23 #define MAX 0x7f7f7f7f
24 #define PI 3.1415926535897
25 #define N 204
26 using namespace std;
27 int n,m,lll,ans,cas;
28 int a[N],sum[N];
29 int f[N][N];
30 int main()
31 {
32     #ifndef ONLINE_JUDGE
33 //    freopen("1.txt","r",stdin);
34 //    freopen("2.txt","w",stdout);
35     #endif
36     int i,j,k;
37     scanf("%d",&cas);
38     while(cas--)
39 //    while(~scanf("%s",s1))
40 //    while(~scanf("%d",&n))
41     {
42         scanf("%d%d",&n,&m);
43         memset(sum,0,sizeof(sum));
44         memset(f,0,sizeof(f));
45         for(i=1;i<=n;i++)
46         {
47             scanf("%d",&a[i]);
48             sum[i]=sum[i-1]+a[i];
49         }
50         for(i=1;i<=n;i++)f[i][a[i]]=1;
51         for(i=1;i<=n;i++)
52         {
53             for(j=0;j<=m;j++)f[i][j]=max(f[i][j],f[i-1][j]);
54             for(j=a[i];j<=m;j++)
55             {
56                 f[i][j]=max(f[i][j],f[i][j-1]);
57                 for(k=i;k && j>=sum[i]-sum[k-1];k--)
58                 {
59                     f[i][j]=max(f[i][j],f[k-1][j-sum[i]+sum[k-1]]+sqr(i-k+1));
60                 }
61             }
62         }
63         printf("%d\n",f[n][m]);
64     }
65     return 0;
66 }
67
68
69 /*
70 //
71
72 //
73 */

时间: 2024-10-17 11:31:49

【动态规划】XMU 1560 新ACM规则的相关文章

道路运输车辆卫星定位系统标准符合性检测 ----新规则、新方法

道路运输车辆卫星定位系统标准符合性检测 ----新规则.新方法 全称叫道路运输车辆卫星定位系统标准符合性检测或道路运输车辆卫星定位系统标准符合性审查,口语(或简称)为过检.交通部过检.平台过检.平台测试等等,符合性审查分硬件和平台,硬件就是即是车载终端,平台即运营平台,平台分企业平台.政府平台,企业平台分经营性与非经营性平台,政府平台分市级平台与省级平台.在这里讨论的是平台符合性审查,而非硬件. 此博文只介绍2015年恢复检测之后,采取的新测试规则,新测试方法.关于符合性审查的更详细说明,请参看

acm学习指引

一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第一阶段:练经典常用算法,下面的每个算法打上十到二十遍,同时自己精简代码.因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Floyd.Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.

配置管理 ACM 在高可用服务 AHAS 流控降级组件中的应用场景

应用配置管理(Application Configuration Management,简称 ACM)是一款应用配置中心产品.基于ACM您可以在微服务.DevOps.大数据等场景下极大地减轻配置管理的工作量,同时保证配置的安全合规.ACM 有着丰富的使用场景,本文将介绍其在 AHAS 流控降级 中的应用. 什么是 AHAS 流控降级AHAS 流控降级 是面向分布式服务架构的专业流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统保护等多个维度帮助您保障服务的稳定性,同时提供强大的聚合监控

针对Red Hat Enterprise Linux 6.5 的防火墙详细讲解,iptables(netfilter)规则的

防火墙基础 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙).基于Linux内核编码实现,具有非常稳定的性能和高效率,因此获得广泛使用. 在Linux系统中,netfilter和iptables都用来指Linux防火墙. netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于"内核态"(Kernel Space,又称为内核空间)的防火墙功能体系. iptables:指的是

iptables防火墙过滤规则

iptables  包过滤 防火墙 firewall  防火墙工作在网络边缘(主机边缘)对于进出的网络数据包进行规则排查,并在匹配某规则时由规则定义的处理进行处理的功能组件 防火墙类型 根据工作区域不同分为: OSI 的第三层,即网络层的防火墙 OSI 的第七层,即应用层的防火墙 ,或者代理服务器/网关 网络层的防护墙:包过滤器 在网络层 对数据进行条件是选择,根据访问控制表(ACL),即检查每个数据的源地址,目的地址,端口号,协议状态等. 针对端口 代理服务防火墙 代理服务会把同过或者服务控制

【甘道夫】通过Mahout构建推荐系统--通过IDRescorer扩展评分规则

通过Mahout构建推荐系统时,假设我们须要添?某些过滤规则(比方:item的创建时间在一年以内),则须要用到IDRescorer接口,该接口源代码例如以下: package org.apache.mahout.cf.taste.recommender; /** * <p> * A {@link Rescorer} which operates on {@code long} primitive IDs, rather than arbitrary {@link Object}s. * Thi

SNF快速开发平台--规则引擎介绍和使用文档

设计目标: a) 规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b) 能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c) 运算速度快 d) 有良好的展现效果,能够在售前阶段帮助销售 e) 提供良好的调试和诊断手段,便于配置规则 可以把以前固定写的业务逻辑,特别不确定的那种和变化比较多的写到规则中去.这样在实施时不同客户有各种各样的需求,可以按需配置,并不能修改程序代码,这样就更灵活. 并且我们实现的日志跟踪调试,运算符.条件语

Linux iptables:规则组成

<Linux iptables:规则原理和基础>介绍了iptables的四表五链,简单说就是不同的网络层数据包会经过哪几个挂载点,在每个挂载点可以在哪张表进行规则定义. 本篇沿着这个思路,更具体的介绍一条iptables规则的组成. Linux iptables:规则组成 这是iptables一条规则的基本组成,也是iptables定义规则的命令格式: 第一列是iptables命令: 第二列指定规则所在的表,常用的是nat和filter表: 第三列是命令,常用命令如下: -A 在指定链的末尾添

Java 5 、6、 7中新特性

JDK5新特性(与1.4相比)[转] 1 循环 for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是: for (int i = 0; i < array.length; i++){ type variable = array[i];    body} for (int i = 0; i < arrayList.size(); i++){type variable = (type) ar