2018.08.18 NOIP模拟 travel(贪心)
Travel
题目背景
SOURCE:NOIP2015-SHY4
题目描述
小 A 要进行一次旅行。这回他要在序号为 1 到 n 的 n 个城市之间旅行。这 n 个城市之间共有 m 条连接两个城市的单行公路,对于第 i 条公路的风景有一个评分 ai。小 A 有一个要求:挑选旅行路线时经过某条路时看到的风景比上一条经过的公路的风景评分更高。小 A 想看到尽可能多的风景,请你告诉他他能找到的最长的满足他要求旅行路线有多长。(每条公路长度视为1,可以重复经过一个城市)
输入格式
第一行为两个整数数 n,m。
接下来 m 行,每行三个整数 xi,yi,ai 分别代表每条公路的起点序号、终点序号、风景分数。
输出格式
输出一个整数,为满足要求的最长路线的长度。
样例数据 1
输入
3 3
1 2 1
2 3 2
3 1 3
输出
3
备注
【样例说明】
最长路径为:(1->2->3->1)
【数据范围】
对 30% 的输入数据,n≤10;m≤50;ai≤100
对 60% 的输入数据,n≤1000;m≤5000;ai≤1000
对 100% 的输入数据,n,m≤300000;1≤ai≤100000
考试时数据太水被我一波瞎贪心跑过去了。
其实正解跟我写的差不多,只是更新状态的时候要用一个辅助数组(太懒了不想写)。
代码:
#include<bits/stdc++.h>
#define N 300005
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
int n,m,cnt=0,first[N],dp[N];
struct node{int u,v,w;};
priority_queue<node>q;
inline bool operator<(node a,node b){return a.w<b.w;}
int main(){
n=read(),m=read();
for(int i=1;i<=m;++i){
int u=read(),v=read(),w=read();
q.push((node){u,v,w});
}
while(!q.empty()){
node x=q.top();
q.pop();
dp[x.u]=max(dp[x.u],dp[x.v]+1);
}
int ans=0;
for(int i=1;i<=n;++i)ans=max(ans,dp[i]);
cout<<ans;
return 0;
}
2018.08.18 NOIP模拟 travel(贪心)的更多相关文章
- 2018.08.18 NOIP模拟 game(数位dp)
Game 题目背景 SOURCE:NOIP2015-SHY4 题目描述 Alice 和 Bob 正在玩一个游戏,两个人从 1 轮流开始报数,如果遇到 7 的倍数或者遇到的这个数的十进制表示中含 7 , ...
- 2018.08.18 NOIP模拟 snow(最大流)
Snow 题目背景 SOURCE:NOIP2015-SHY4 题目描述 有一天,TT 要去 ABC 家.ABC 的大门外有 n 个站台,用 1 到 n 的正整数编号,TT 需要对每个站台访问恰好一定次 ...
- 2018.08.29 NOIP模拟 movie(状压dp/随机化贪心)
[描述] 小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放.他希望连续看 L 分钟的电影.因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他 ...
- 2018.08.22 NOIP模拟 string(模拟)
string [描述] 给定两个字符串 s,t,其中 s 只包含小写字母以及*,t 只包含小写字母. 你可以进行任意多次操作,每次选择 s 中的一个*,将它修改为任意多个(可以是 0 个)它的前一个字 ...
- 2018.08.30 NOIP模拟 wall(模拟)
[问题描述] 万里长城是中国强大的标志,长城在古代的用途主要用于快速传递军事消息和抵御 外敌,在长城上的烽火台即可以作为藏兵的堡垒有可以来点燃狼烟传递消息. 现在有一段 万里长城,一共有 N 个烽火台 ...
- 2018.08.22 NOIP模拟 shop(lower_bound+前缀和预处理)
Shop 有 n 种物品,第 i 种物品的价格为 vi,每天最多购买 xi 个. 有 m 天,第 i 天你有 wi 的钱,你会不停购买能买得起的最贵的物品.你需要求出你每天会购买多少个物品. [输入格 ...
- 2018.08.21 NOIP模拟 xorand(01trie)
xorand 描述 有q次操作,每次操作是以下两种: 1. 加入一个数到集合中 2. 查询,查询当前数字与集合中的数字的最大异或值,最大and值,最大or值 输入 第一行1个正整数Q表示操作次数 接下 ...
- 2018.08.19 NOIP模拟 change(简单模拟)
Change 题目背景 SOURCE:NOIP2015-SHY-10 题目描述 Alice 和 Bob 又聚在一起了!他们已经厌倦了取石子游戏,现在他们热衷于切题.于是,Alice 找到了一道题让 B ...
- 2018.08.19 NOIP模拟 dp(二分+状压dp)
Dp 题目背景 SOURCE:NOIP2015-SHY-10 题目描述 一块土地有 n 个连续的部分,用 H[1],H[2],-,H[n] 表示每个部分的最初高度.有 n 种泥土可用,他们都能覆盖连续 ...
随机推荐
- 使用AngularJS处理单选框和复选框的简单方法
在复选框中,可以绑定ng-model给false或者true值,即可选中或清除选中状态 如下图 而在单选框里就相对复杂一点,单选框要选中一个,就要给相同的name属性,然后绑定相同的ng-model, ...
- border做三角符号
用border做三角符号以及其他图形 ;; border-width:20px 10px; border-style:solid; border-color:#ff3300 #ff3300 #ffff ...
- XE6 HTML设计器
XE6 自带的HTML编辑器很好用 File>New>Other>Web Documents>HTML Page 自动有code和Design,在Design标签可以拖放控件 ...
- 怎样把代码复制到word中并保持颜色
- js中使用cookie
function setcookie(name, value, expires, path, domain, secure) { var cookieText = encodeURIComponent ...
- WINRAR 自解压脚本命令及变量
自解压脚本命令 Path=d:\ ;绝对路径 ;Path=.\在当前文件夹中创建 ;Path=在“Program Files”中创建 ;在当前文件夹创建,无语句 Setup=释放后运行 Presetu ...
- Java LinkedList的实现原理
LinkedList是Java List类型的集合类的一种实现,此外,LinkedList还实现了Deque接口.本文基于Java1.8,对于LinkedList的实现原理做一下详细讲解. (Java ...
- <c:forEach>取得集合数量
这个问题曾经也困扰了我好久,不过以后都没有用过也都忘记了,不过今天在做项目 的时候又遇到了,花费了很久的时间都没有成功.也试了它的很多属性,例如:varStatus.last.${status.cou ...
- python引入模块时import与from ... import的区别(转)
import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定. 1 import datetime 2 3 print datet ...
- 条件语句;for循环 嵌套复习
//打印数字,0,1,8,10,12,每一个数单独占一行 //在全部数字打印完毕之后在打印数字的个数和所有数的和 int count = 0; int sum = 0; for (int i = 0; ...