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

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

其实什么反转什么的,可以不用去管他,对于长度小于二分答案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. linux增加swap空间的方法小结

    起因及背景 近期编译AOSP(android 10.0)是总是遇到内存溢出,查了半天,无果.猜测增加下swap空间大小是否能解决,随即尝试下,果然是如此. 当然,还有其他作法,比如直接增加主机的内存( ...

  2. LOJ 3160: 「NOI2019」斗主地

    题目传送门:LOJ #3160. 简要题意: 有一个长度为 \(n\) 的序列 \(a\),初始时 \(a_i=i\) 或 \(a_i=i^2\),这取决于 \(\mathrm{type}\) 的值. ...

  3. Educational Codeforces Round 78 (Rated for Div. 2) A. Shuffle Hashing

    链接: https://codeforces.com/contest/1278/problem/A 题意: Polycarp has built his own web service. Being ...

  4. Scrapy笔记(1)- 入门篇

    Scrapy笔记01- 入门篇 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说, ...

  5. JS的ES7支持

    1.指数运算符(幂): ** 2.Array.prototype.includes(value) : 判断数组中是否包含指定value console.log(2**4); let arr = [2, ...

  6. [RN] React Native 自定义导航栏随滚动渐变

    React Native 自定义导航栏随滚动渐变 实现效果预览: 代码实现: 1.定义导航栏 NavPage.js import React, {Component} from 'react'; im ...

  7. c# HttpClient的HTTP/2支持

    HTTP/2 是 HTTP 协议的主要修订版.HTTP/2 的一些显著功能是支持标头压缩和通过同一连接完全多路复用流.虽然 HTTP/2 保留了 HTTP 的语义(HTTP 标头.方法等),但它在数据 ...

  8. 不刷新网页修改url链接:history.pushState()和history.replaceState()新增、修改历史记录用法介绍

    最近遇到了在不刷新页面的情况下修改浏览器url链接的需求,考虑到可以通过history.pushState()解决.现在将我理解的一些内容分享一下,不对的地方欢迎大家指出. 在使用方法前首先需要了解它 ...

  9. 使用canvas实现图片预览、缩放(压缩)以及生成文件下载

    参考 https://www.runoob.com/html/html5-canvas.html https://www.cnblogs.com/yuanzhiguo/p/8288822.html h ...

  10. 搭建git服务器配置gitolite[迁移原来的gitolite工程]

    参考 https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664 http://www.worldhello.net/gotgit ...