题意

给出一个有向图,走到每个节点有 \(m_i\) 的收益,每一条边要走一天,走 \(T\) 天的花费是 \(C\cdot T^2\),求从节点 \(1\) 开始并且在节点 \(1\) 结束的旅行的最大利润?(利润等于收益减去花费)

另外也可以不进行旅行,即零利润。

题解

注意到收益是线性增长,而花费是指数级增长,因此花费将逐渐超过收益。

以收益均为 \(1000\),\(C=1\) 为例,即收益最大化,成本最小化,运行时间最长。

可见 \(T=\sqrt{1000}\) 为最大值,可视为常数

那么这题的时间复杂度就是 \(O(nm)\) 了,在有利益的情况下拓展即可。

Code

#include<cstdio>
#include<cstring>
#include<algorithm>
const int MAXN=1000+5;
struct Edge{int u,v,next;};
long long dp[MAXN*2][MAXN];int n,m,p,c[MAXN],cnt,head[MAXN];Edge edge[MAXN*2],tmp[MAXN*2];
bool comp(Edge a,Edge b) {return c[a.v]<c[b.v];}
void AddEdge(int u,int v)
{
// printf("Add %d %d\n",u,v);
edge[++cnt].u=u;edge[cnt].v=v;edge[cnt].next=head[u];head[u]=cnt;
}
int main()
{
freopen("time.in","r",stdin);
freopen("time.out","w",stdout);
scanf("%d %d %d",&n,&m,&p);
int cmax=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&c[i]);
cmax=std::max(cmax,c[i]);
}
for(int i=1;i<=m;i++)
scanf("%d %d",&tmp[i].u,&tmp[i].v);
std::sort(tmp+1,tmp+m+1,comp);
for(int i=1;i<=m;i++)
AddEdge(tmp[i].u,tmp[i].v);
memset(dp,-0x3f3f3f,sizeof(dp));
dp[0][1]=0;
int i=0;bool moved=1;
while(moved)
{
moved=0;
int addcost=p*((i+1)*(i+1)-i*i);
if(addcost>cmax) break;
for(int j=1;j<=n;j++)
if(dp[i][j]>=0)
for(int k=head[j];k;k=edge[k].next)
{
//if(addcost<=c[edge[k].v])
{
//printf("Day %d From %d to %d, New: %lld\n",i,j,edge[k].v,std::max(dp[i+1][k],dp[i][j]+c[edge[k].v]-addcost));
dp[i+1][edge[k].v]=std::max(dp[i+1][edge[k].v],dp[i][j]+c[edge[k].v]-addcost);
moved=1;
}
}
i++;
}
long long ans=0;
for(int p=1;p<=i;p++)
ans=std::max(ans,dp[p][1]);
printf("%lld\n",ans);
return 0;
}

最新文章

  1. ABP总体介绍
  2. jquery的each()详细介绍
  3. “设计之变”--从iPhone应用到iPad应用
  4. Spring声明式事务管理与配置详解
  5. J2534 Pass-Thru Vehicle Programming ( SAE J1962 connector and Protocol )
  6. 如何在eclipse中安装Jess
  7. Android项目 手机安全卫士(代码最全,注释最详细)之十二 设置中心的界面
  8. UESTC - 1057 秋实大哥与花 线段树
  9. Python 2.7的字典实现简化版(C语言)
  10. arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)
  11. react 监听页面滚动
  12. ssm基础搭建步骤
  13. 查询css相关属性的网站
  14. POJ 2247 Humble Numbers
  15. python 读写json数据
  16. python-flask-SQLAlchemy-Utils组件
  17. ubuntu下载超快的一个站点
  18. MySQL5.6锁阻塞分析
  19. 线程 Thread Runnable 守护线程 join MD
  20. Python学习-19.Python的Http模块

热门文章

  1. 拿到别人的Django程序如何在本地RUN起来
  2. TOMCAT中文信息乱码改为GBK
  3. [WC2018]即时战略(LCT,splay上二分)
  4. package.json中的script选项作用
  5. Navicat连接远程主机(腾讯云服务器)的mysql失败,解决
  6. 「luogu3380」【模板】二逼平衡树(树套树)
  7. window下jenkins+allure+邮箱发送
  8. 连接mysql,oracle的命令 以及导入sql文件
  9. matplotlib学习(2)
  10. Educational Codeforces Round 82 C. Perfect Keyboard