UValive4195 Heroes of Money and Magic
斜率优化
想骂人了,马格吉最后调了半小时
TMD造数据的人是SB吧?
我写 while(scanf("%d%d",&n,&m)!=EOF&&n)
然后就TMD无限WA...WA...WA...
尼玛 改成while(scanf("%d%d",&n,&m),n)
就过了,就过了!!!
沃日,浪费我时间是吧,坑爹是吧
艹
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<string>
#include<cstring>
#define Clear(x,i) memset(x,i,sizeof(x))
#define re(i,l,r) for(int i=(l);i<=(r);i++)
#define rre(i,r,l) for(int i=(r);i>=(l);i--)
using namespace std;
template <typename Q>
void inin(Q &ret)
{
ret=;int f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=;ch=getchar();}
while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
ret=f?-ret:ret;
}
int n,m,a[],sum[],cost[],x[][],y[][],num[];
int f[][],c;
int cross(int a,int b,int xx,int yy)
{
return (x[b][c]-x[a][c])*(yy-y[a][c])-
(xx-x[a][c])*(y[b][c]-y[a][c]);
}
int main()
{
while(scanf("%d%d",&n,&m),n)
{
m++;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
cost[i]=cost[i-]+sum[i-]*a[i];
}
num[]=;
c=;
x[][]=y[][]=;
for(int j=;j<=m;j++)
{
c^=;
num[c]=;
for(int i=,k=;i<=n;i++)
{
while(k<num[!c]&&(x[k+][!c]-x[k][!c])*sum[i]>y[k+][!c]-y[k][!c])k++;
f[i][c]=-sum[i]*x[k][!c]+y[k][!c]+cost[i];
int xx=sum[i],yy=f[i][c]+xx*xx-cost[i];
while(<num[c]&&cross(num[c]-,num[c],xx,yy)<=)num[c]--;
x[++num[c]][c]=xx;
y[num[c]][c]=yy;
}
}
printf("%d\n",f[n][c]);
}
return ;
}
UValive4195 Heroes of Money and Magic的更多相关文章
- 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) H Heroes Of Might And Magic (隐含dp)
问题是求一个方案,实际隐含一个dp.法力是递减的,所以状态是DAG,对于一个确定的状态,我们贪心地希望英雄的血量尽量大. 分析:定义状态dp[i][p][h]表示是已经用了i的法力值,怪兽的位置在p, ...
- 别人整理的DP大全(转)
动态规划 动态规划 容易: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ...
- 黑科技项目:英雄无敌III Mod <<Fallen Angel>>介绍
英雄无敌三简介(Heroes of Might and Magic III) 英3是1999年由New World Computing在Windows平台上开发的回合制策略魔幻游戏,其出版商是3DO. ...
- dp题目列表
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- [转] POJ DP问题
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- poj动态规划列表
[1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...
- POJ动态规划题目列表
列表一:经典题目题号:容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1191,1208, 1276, 13 ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
随机推荐
- AES和RSA加解密的Python用法
AES AES 是一种对称加密算法,用key对一段text加密,则用同一个key对密文解密, from Crypto import Random from Crypto.Hash import SHA ...
- maven jdk 版本配置
一种是配置 pom.xml,一种是配置 settings.xml. 方式一:settings.xml 配置 打开 %maven%/conf/settings.xml 文件并编辑它(%maven% 表示 ...
- WebStorm 11的安装与激活
之所以选择WebStorm 11的这个版本主要是因为他的激活比较方便. WebStorm官网上目前已经不是11版本了,这意味着你得通过其他途径下载WebStorm 11(如:度娘). 下载安装完之后, ...
- java代码理解
public int maxProfit(int k, int[] prices) { int pl = prices.length; int nothin ...
- poj1426_kuagnbin带你飞专题一
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 30659 Accepted: 127 ...
- Java课程寒假之开发记账本软件(网页版)之四
一.实现基础功能之一(删除) 在删除的功能实现之前,要明白删除的条件是什么,一开始我是以去向和时间作为条件删除,但是删除的语句好像有问题,好像是因为出现了非法字符(应该是中文吧,不太清楚,因为这不是我 ...
- Java 中数据库连接池的比较
见 原文,现阶段建议使用 https://github.com/brettwooldridge/HikariCP
- oracle 11g R2(静默安装)
参考博客地址:https://blog.csdn.net/jameshadoop/article/details/48223645 https://www.abcdocker.com/abcdocke ...
- table中内容过长,table改变的问题
在看效果时发现在Chrome中的table已经不是原来设置的宽度了,而其他浏览器是好的,经过百度发现是单元格内容过多造成的,但这时候给td设置宽度已经不适用了,此时就要给table设置 table{t ...
- 剑指offer——python【第43题】左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...