USACO January Contest Gold Time is Mooney 题解
题意
给出一个有向图,走到每个节点有 \(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;
}
USACO January Contest Gold Time is Mooney 题解的更多相关文章
- USACO 2016 January Contest, Gold解题报告
1.Angry Cows http://www.usaco.org/index.php?page=viewproblem2&cpid=597 dp题+vector数组运用 将从左向右与从右向左 ...
- 【二分+拓扑排序】Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348
目录 Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 MEA ...
- [USACO 2018 Feb Gold] Tutorial
Link: USACO 2018 Feb Gold 传送门 A: $dp[i][j][k]$表示前$i$个中有$j$个0且末位为$k$的最优解 状态数$O(n^3)$ #include <bit ...
- [USACO 2018 Jan Gold] Tutorial
Link: USACO 2018 Jan Gold 传送门 A: 对于不同的$k$,发现限制就是小于$k$的边不能走 那么此时的答案就是由大于等于$k$的边形成的图中$v$所在的连通块除去$v$的大小 ...
- [USACO 2017 Dec Gold] Tutorial
Link: USACO 2017 Dec Gold 传送门 A: 为了保证复杂度明显是从终结点往回退 结果一开始全在想优化建边$dfs$……其实可以不用建边直接$multiset$找可行边跑$bfs$ ...
- USACO 2006 November Gold Corn Fields
USACO 2006 November Gold Corn Fields 题目描述: Farmer John has purchased a lush new rectangular pasture ...
- USACO 2013 November Contest Gold 简要题解
Problem 1. Empty Stalls 扫两遍即可. Problem 2. Line of Sight 我们发现能互相看见的一对点一定能同时看见粮仓的某一段.于是转换成有n段线段,问有多少对线 ...
- USACO 2015 December Contest, Gold Problem 2. Fruit Feast
Problem 2. Fruit Feast 很简单的智商题(因为碰巧脑出来了所以简单一,一 原题: Bessie has broken into Farmer John's house again! ...
- USACO 2016 US Open Contest, Gold解题报告
1.Splitting the Field http://usaco.org/index.php?page=viewproblem2&cpid=645 给二维坐标系中的n个点,求ans=用一个 ...
随机推荐
- jquery Ajax标准规范写法
$.ajax({ url:"http://www.xxx",//请求的url地址 dataType:"json",//返回的格式为json async:true ...
- CSS制作二级菜单时,二级菜单与一级菜单不对齐
效果如图: 部分代码如图: <li><a href="#" target="_blank">关于我们</a> <ul& ...
- Java入门笔记 08-注解
1. 注解:通过 @interface 关键字进行定义2. 元注解:是一种基本注解,但是它能够应用到其它的注解上面.@Retention:解释说明了这个注解的的存活时间.取值如下: Retention ...
- Node.js 服务端处理图片
Node 服务端处理图片 服务端进行图片处理是很常见的需求,但是Node在这一块相对来说比较薄弱.找了几个比较常见的模块来解决问题. gm GraphicsMagick for node 使用Open ...
- 前端必学---JavaScript数据结构与算法---简介
前端必学---JavaScript数据结构与算法---简介 1. 数据结构: 数据结构是相互之间存在一种或者多种特定关系的数据元素的集合.---<大话数据结构> 1.1 数据结构的分类 1 ...
- <img>标签显示本地路径的图片的.NET解决方案
今天朋友问了我一个奇怪的需求:项目中要求图片上传到工作目录,上传后要在网页中通过<img>显示出来.图片上传后显示,在开发中常见的做法是将它图片上传到网站目录下(upload/),如果保存 ...
- html 中js 如何给字符串加换行符
var str = 你好'+"\n"+ '世界'; 这种写法在html中是会被识别为"你好\n世界" 那么如何保证其这么写会被识别,只需要在该div的样式中加入 ...
- pdf.js的使用 (3)真实项目分享
需求:a.jsp页面要做一个pdf的预览功能,我采用layer.open()弹窗的形式来预览pdf 1.在a.jsp点击文件然后弹出窗口(其实是弹出b.jsp) var lay=layer.open( ...
- ANSYS单元应用简介1
目录 1. LINK单元 2. BEAM单元 3. PLANE单元 4. SHELL单元 5. SOLIDE单元 6. COMBIN单元 ANSYS中的单元针对不同的应用对象,有着不同的选择方法,下面 ...
- 360网安学习笔记——Web安全原理与实践
网络安全 基本技能: 1.编程语言 2.计算机网络 3.操作系统 4.office 专业技能 1.web安全 2.网络安全 3.渗透测试 4.代码审计 能力提升 1.书籍 2.站点 3.安全平台 We ...