CF459E-DP

核心代码15行

思路

观察数据范围,我们建m层分层图跑最短路想到DP。

DP最大的特点就是无后效性。那么我们这一题哪个条件无后效性呢?

发现DP值一定从边权小于当前点的位置转移而来

这不就无后效性了?我们按边权将所有边排序即可。

然后,枚举边,将DP值记录到点上,每次用起始点的dp值加1更新到达点的dp值。最后输出dp值最大的即可。

然后,您会发现第一个样例过不去。

因为题目要求边权严格递增,所以我们需要同时将边权相同的边用上次的dp值更新,即我们需要临时记录一下。

样例非常良心。

实现

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cmath>
using namespace std;
inline int read(){
int w=0,x=0;char c=getchar();
while(!isdigit(c))w|=c=='-',c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
return w?-x:x;
}
namespace star
{
const int maxn=3e5+10;
int n,m,f[maxn],g[maxn];
struct edge{
int u,v,val;
inline bool operator < (const edge &zp)const{return val<zp.val;}
}e[maxn];
inline void work(){
n=read();m=read();
for(int i=1;i<=m;i++)e[i].u=read(),e[i].v=read(),e[i].val=read();
sort(e+1,e+1+m);
for(int i=1,j;i<=m;i=j+1){
j=i;
while(e[j+1].val==e[i].val)j++;
for(int k=i;k<=j;k++) g[e[k].u]=f[e[k].u],g[e[k].v]=f[e[k].v];//只有这些dp值要用
for(int k=i;k<=j;k++) f[e[k].v]=max(f[e[k].v],g[e[k].u]+1);
}
int ans=0;
for(int i=1;i<=n;i++) ans=max(ans,f[i]);
printf("%d",ans);
}
}
signed main(){
star::work();
return 0;
}

postscripts

目前rank1,可能只是因为写的人少。

是一道不错的DP练手题。

最新文章

  1. 混合使用UITabBarController和UINavigationController
  2. 黄聪:《跟黄聪学WordPress插件开发》
  3. nslookup命令
  4. nodejs学习笔记三——nodejs使用富文本插件ueditor
  5. texlive2015+texstudio
  6. Aspose.Word 操作word表格的行 插入行 添加行
  7. 56. 2种方法判断二叉树是不是平衡二叉树[is balanced tree]
  8. 六个前端开发工程师必备的Web设计模式/模块资源(转)
  9. 1346. Intervals of Monotonicity(dp)
  10. php 修改上传文件大小
  11. 3分钟学会sessionStorage用法(h5页面返回滚动到上次浏览器位置)
  12. JQ兼容各种JS库的写法
  13. JavaScript中的作用域和声明提前
  14. MSIL实用指南-创建方法和定义参数
  15. 剑指Offer——知识点储备-数据库基础
  16. 设置table的每竖的宽度
  17. JVM(二)—— 垃圾回收
  18. InvalidDataAccessResourceUsageException:mysql保留字引发的血案
  19. fillder--信息面板展示serverIP
  20. BZOJ 400题纪念

热门文章

  1. Java Object类中toString方法的重写
  2. ES6深拷贝与浅拷贝
  3. UF_LAYER 图层操作
  4. NX二次开发-曲线或边分析函数
  5. Jenkins用户权限管理-Role-based Authorization Strategy插件
  6. excel VBA构造函数就是这么简单
  7. Salesforce LWC学习(三十五) 使用 REST API实现不写Apex的批量创建/更新数据
  8. &lt;5人公司极简研发方案
  9. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
  10. 39、mysql数据库(视图)