对于我这种菜鸡来说还是挺有迷惑性的。

在考场发现答案问的是跟最值有关的数量,想到二分,结果果然具有单调性,考虑二份答案+验证

其实什么反转什么的,可以不用去管他,对于长度小于二分答案mid的道路,不去考虑

只要是在图中出现了环,就一定不行

所以这道题变成了判环的问题,tarjan和dfs均可

AC code

#include<bits/stdc++.h>
#define re register
#define inc(i,j,k) for(re int i=j;i<=k;++i)
#define dec(i,j,k) for(re int i=j;i>=k;--i)
#define ra(i,u) for(re int i=head[u];i;i=e[i].nxt)
using namespace std;
const int maxn=200010;
const int maxm=300010;
inline int read()
{
re int x=0,f=1; char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();}
while(ch>='0'&&ch<='9') {x=x*10+(ch^48); ch=getchar();}
return x*f;
}
int head[maxn],dfn[maxn],low[maxn],sta[maxn],scc[maxn],tong[maxn];
int cnt,n,m,tot,top,maxx=-1,num;
bool vis[maxn];
struct node
{
int to,nxt,w;
}e[maxm];
inline void add(int u,int v,int w)
{
e[++cnt].to=v;
e[cnt].nxt=head[u];
e[cnt].w=w;
head[u]=cnt;
}
bool flag=0;
inline void tarjan(int x,int k)
{
dfn[x]=low[x]=++tot;
sta[++top]=x;
ra(i,x)
{
if(e[i].w<=k) continue;
re int v=e[i].to;
if(!dfn[v])
{
tarjan(v,k);
low[x]=min(low[x],low[v]);
}
else if(!scc[v]) low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
scc[x]=++num;
++tong[num];
while(sta[top]!=x)
{
scc[sta[top--]]=num;
++tong[num];
/*if(tong[num]>=2)
{
flag=1; return;
}*/
}
--top;
}
}
inline void clear()
{
inc(i,1,n)
{
dfn[i]=low[i]=sta[i]=scc[i]=0;
vis[i]=0;
}
memset(tong,0,sizeof(tong));
tot=0; top=0; num=0;
return;
}
inline bool check(int x)
{
clear();
// flag=0;
inc(i,1,n)
{
if(!dfn[i])
{
tarjan(i,x);
// cout<<"QAQ"<<endl;
// if(flag==1) return 0;
}
}
inc(i,1,num)
{
if(tong[i]>=2) return 0;
}
return 1;
}
int main()
{
// freopen("test6.in","r",stdin);
int l=0,r=2e9,ans=2e9;
n=read(); m=read();
re int xx,yy,zz;
inc(i,1,m)
{
xx=read(); yy=read(); zz=read();
add(xx,yy,zz); maxx=max(maxx,zz);
}
l=0,r=maxx,ans=maxx;
while(l<=r)
{
re int mid=(l+r)>>1;
// cout<<mid<<endl;
if(check(mid)) ans=mid,r=mid-1;
else l=mid+1;
// cout<<ans<<endl;
}
cout<<ans<<endl;
}

我居然最开始数组开小了。。。 这就是考试睡觉的下场,写的代码前后断片。。

HeRaNO's NOIP CSP Round Day 2 T2 PESTC的更多相关文章

  1. HeRaNO's NOIP CSP Round Day 2 T3 ginkgo

    睡醒后我第一眼:这不主席树裸题吗? 先统计dfs序,把树上问题转化为区间问题 区间大于等于某个数的个数...主席树模板? #include<bits/stdc++.h> #define r ...

  2. HeRaNO's NOIP CSP Round Day 2 T1 building

    考试的时候居然睡着了... T1的60分做法很明显,3^n枚举每个状态并进行验证 (考试剩十分钟结束的时候我开始打,,不到五分钟就写完了? 暴力(60分) #include<bits/stdc+ ...

  3. NOIP&CSP PJ 难度刷题记录

    前言 本来不想写前言的(>人<:) 这只是 mjl 给我们布置的作业,并不是我自己在刷题! 不保证所有代码的正确性,它们仅仅是通过了所有数据点而已. 1.模拟板块 整体难度:红~黄(模拟不 ...

  4. NOIP&CSP 考前 Dev-cpp 的选项问题和考试心态

    (进入考场后您将获得一个崭新的 \(Dev-cpp\),没有中文,没有编译选项,没有缺省源:我还将获得一个崭新的脑子,没有心态,没有智商,没有调试能力--) 中文 \[Step1 \] \[Step2 ...

  5. NOIP 2013 提高组 day1 T2 火柴排队 归并 逆序对

    描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度.现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:∑i=1n(ai−bi)2∑i=1n(ai−bi) ...

  6. 【NOIP 2017】宝藏 D2 T2

    参考From 传送门 写的很清晰了 AC code: #include <bits/stdc++.h> using namespace std; const int MAXN = 12; ...

  7. NOIP模拟赛(by hzwer) T2 小奇的序列

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...

  8. 括号树 noip(csp??) 2019 洛谷 P5658

    洛谷AC通道 本题,题目长,但是实际想起来十分简单. 首先,对于树上的每一个后括号,我们很容易知道,他的贡献值等于上一个后括号的贡献值 + 1.(当然,前提是要有人跟他匹配,毕竟题目中要求了,是不同的 ...

  9. [Noip 2018][标题统计 龙湖斗 摆渡车 对称二叉树]普及组题解

    啊喂,都已经9102年了,你还在想去年? 这里是一个Noip2018年PJ第二题打爆的OIer,错失省一 但经过了一年,我学到了很多,也有了很多朋友,水平也提高了很多,现在回看当时: 今年的Noip ...

随机推荐

  1. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)

    Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...

  2. Leetcode79 Word Search

    题目描述 Given a 2D board and a word, find if the word exists in the grid. The word can be constructed f ...

  3. django crm2

    1.模糊查询 由于Q的可以传递字符串属性,可以进行拼接__contains 进行搜索 2.未报名筛选,未报名的存储在models的 enroll_status_choices中,存储的是 enroll ...

  4. JAVA并发-join

    概念 join方法,一种特殊的wait,当前运行线程调用另一个线程的join方法,当前线程进入阻塞状态直到调用join方法的线程结束,再继续执行. 一般情况下,都是主线程创建一个子线程,子线程调用jo ...

  5. v2.3.0

    v2.3.1 大版本2,小版本3,fixbug 1

  6. I/O管理杂记

    这是一篇杂记,记录了操作系统层面与I/O管理的零散知识点,用于温习使用.由于I/O管理是一个很大的范畴,后续会不断按照自己的生产需求来补充用的到的知识点.计算机系统是人造系统,没有绝对的对错(相对于自 ...

  7. vue响应数据的原理

    vue最大的特点就是数据驱动视图. vue的数据改变,页面一定发生改变?不一定. 当操作引用类型的数据,动态添加属性时,页面不会发生改变. vue响应式数据原理(也叫数据绑定原理.双向数据绑定原理): ...

  8. 为什么要使用 Go 语言?Go 语言的优势在哪里?

    golang主要特性 1.语法简单 舍弃语法糖,严格控制关键字 C++语法糖之多,令人发指,而C又太过于底层,容易出现自己造轮子的情况,如何在两者之间取舍,是每一个转向golang的工程师曾经思考过的 ...

  9. async和await对promise异步方案的改进,以及使用注意事项

    async.await相比原生promise的有优势: 1.更加简洁,await一个promise即可,那么会自动返回这个promise的resolve值,无需在then函数的回调中手动取值,彻底解决 ...

  10. 三天精通Vue教程

    在这里更新作为后端工程师想要快速掌握Vue需要看的重点内容,三天精通教程,加油! 学前摘要 ES6的常用语法 Vue的常用语法