Dima and Trap Graph

题意:Dima和Inna越来越喜欢对方,但是Dima的室友缺很没有热情出去玩,然后Dima就把他室友Seryozha骗进了陷阱里。现在Seryozha想要从陷阱里出来,每条路上有一个l,r, Seryozha在走路前可以选择一个X,然后每次通过一条路的时候都需要满足条件 l <= x <= r, 每次选定了一个X之后,这个X是一个定值,不会乱变,现求这样的X的数目一共有多少,如果为0就输出“Nick work Dima!”,不然就输出数目。

题解:在每个点开一个set,存一下每次访问到这个点的时候的左区间,右区间,如果访问过了,那就不需要再走了,因为结果肯定不会比完全覆盖的更优,当然如果现在的长度已经小于等于ans的长度了,那么也不再需要再走了,就算接下来的路都不限制区间,那么也不可能比答案更优。

 #include<iostream>
#include<vector>
#include<set>
#include<queue>
#include<cstring>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e3+;
typedef pair<int, int> pll;
struct Node
{
int b, l, r;
}tmp;
vector<Node> edge[N];
set<pll> len[N];
int n, m, ans = ;
void Add_edge(int a, int b, int l, int r)
{
tmp.b = b;
tmp.l = l, tmp.r = r;
edge[a].push_back(tmp);
}
void solve()
{
queue<Node> q;
tmp.b = , tmp.l = , tmp.r = INF;
q.push(tmp);
set<pll>::iterator it;
while(!q.empty())
{
tmp = q.front();
q.pop();
int id = tmp.b;
int l = tmp.l, r = tmp.r;
if(id == n)
{
ans = max(ans, r-l+);
continue;
}
if(r-l+ <= ans) continue;
for(int i = ; i < edge[id].size(); i++)
{
int ll = max(l, edge[id][i].l);
int rr = min(r, edge[id][i].r);
int t = edge[id][i].b;
if(ll > rr) continue;
bool flag = ;
for(it = len[t].begin(); it != len[t].end(); it++)
{
if((*it).first <= ll && (*it).second >= rr)
{
flag = ;
break;
}
}
if(flag) continue;
len[t].insert(pll(ll,rr));
tmp.b = t;
tmp.l = ll;
tmp.r = rr;
q.push(tmp);
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
int a, b, l, r;
cin >> n >> m;
for(int i = ; i <= m; i++)
{
cin >> a >> b >> l >> r;
Add_edge(a,b,l,r);
Add_edge(b,a,l,r);
}
solve();
if(ans == ) cout << "Nice work, Dima!\n";
else cout << ans << endl;
return ;
}

Codefroces 366 D Dima and Trap Graph (最短路)的更多相关文章

  1. Codeforces 336D Dima and Trap Graph 并查集

    Dima and Trap Graph 枚举区间的左端点, 然后那些左端点比枚举的左端点小的都按右端点排序然后并查集去check #include<bits/stdc++.h> #defi ...

  2. cf D. Dima and Trap Graph

    http://codeforces.com/contest/366/problem/D 遍历下界,然后用二分求上界,然后用dfs去判断是否可以. #include <cstdio> #in ...

  3. cf 366D D. Dima and Trap Graph (计算所有线段共同覆盖的某段区间)

    http://codeforces.com/problemset/problem/366/D 题意:给出n个点,m条边,a,b,ll,rr分别代表点a,点b相连,点a和点b的区间范围(ll,rr),然 ...

  4. Codefroces 366 C Dima and Salad(dp)

    Dima and Salad 题意:一共有n种水果,每种水果都有一个ai, bi,现求一个最大的ai总和,使得ai之和/对应的bi之和的值等于K. 题解:将bi转换成偏移量,只要偏移到起点位置,就代表 ...

  5. Codeforces 715B. Complete The Graph 最短路,Dijkstra,构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF715B.html 题解 接下来说的“边”都指代“边权未知的边”. 将所有边都设为 L+1,如果dis(S,T ...

  6. GBX的Graph(最短路)

    Problem B: Graph Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 1  Solved: 1 [cid=1000&pid=1&am ...

  7. HDU-4725 The Shortest Path in Nya Graph 最短路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 如果直接建图复杂度过大,但是考虑到每层之间的有效边很少,只要在每层增加两个虚拟节点n+i和2*n ...

  8. 2018牛客网暑假ACM多校训练赛(第十场)F Rikka with Line Graph 最短路 Floyd

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.n ...

  9. TTTTTTTTTTT 400D Dima and Bacteria 细菌 最短路

    题意: 题目大意:给出n,m和k,表示有n个细菌,m种仪器和k种细菌,给出k种细菌的数量ci,然后每个细菌按照种类排成一排(所以有第i种细菌的序号从∑(1≤j≤i-1)cj + 1 到∑(1≤j≤i) ...

随机推荐

  1. 【iOS】stringWithFormat 保留小数点位数 float double

    以前就见过,如下: text = [NSString stringWithFormat:@"%.1f", percentageCompleted]; 但一直没在意.刚一时好奇,查了 ...

  2. js 实现 联动

    使用jQuery实现联动效果 应用场景:收货地址 1.准备三个下拉框 <select class="changeArea" id='province'> <opt ...

  3. modbus-tcp协议讲解

    MODBUS功能码简介 代码 中文名称 位操作/字操作 操作数量 01h 读线圈状态 位操作 单个或多个 02h 读离散输入状态(只能读到0或1) 位操作 单个或多个 03h 读保持寄存器(保持寄存器 ...

  4. Iphone使用过程中遇到的问题

    Q1:同一个Apple ID不同设备之间的通话记录保持同步 解决方法: Step1:"设置"--"电话"--"在其他设备上通话"--选择关闭 ...

  5. 转载 | float 清除浮动的7种方法

    什么叫浮动:浮动会使当前标签脱离文档流,产生上浮的效果,同时还会影响周边元素(前后标签)及父级元素的位置和width,height属性.下面用一个小例子来看一看浮动的全过程:1.首先我们新建一个网页, ...

  6. WebService1

    一.什么是WebService(来源百度百科) Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述. ...

  7. 微信小程序如何动态增删class类名达到切换tabel栏的效果

    微信小程序和vue还是有点差别的,要想实现通过动态切换class来达到切换css的效果,请看代码: //wxml页面: <view class="tab"> <v ...

  8. 约会安排 HDU - 4553(线段树区间查询,区间修改,区间合并)

    题目: 寒假来了,又到了小明和女神们约会的季节.  小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会.与此同时,也有很多基友找他开黑, ...

  9. css3实现loading效果--当页面加载过程中显示Loading的进度条,全部加载完成之后进度条消失

    一个页面等图片资源全部加载完成,会需要很长时间,用户体验会很差,所以我们需要loading来掩盖这个漫长的过程! emmm,定时器?写个定时器还要清除,万一造成内存泄露?定时器之间还会互相影响,呼呼呼 ...

  10. (二十二)c#Winform自定义控件-半透明窗体

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...