题意:

一张由 n 个点,m 条边构成的有向无环图。每个点有点权 Ai。QQ 小方想知道所有起点为 1 ,终点为 n 的路径中最大的中位数是多少。

一条路径的中位数指的是:一条路径有 n 个点,将这 n 个点的权值从小到大排序后,排在位置 ⌊n2⌋+1 上的权值。

思路(官方题解):

考虑二分答案,我们需要验证路径最大的中位数是否 ≥mid 。

我们把所有的点权做 −1/1 变换,即 ≥mid 的点权变为 1 ,否则变为 −1 。

根据题面路径中位数的定义,我们可以发现,如果这条路径的中位数 ≥mid ,那么做了 −1/1 变换以后,这条路径上的点权和 ≥0 。

而我们现在需要知道的问题是路径最大的中位数是否 ≥mid ,也就是说,最大的路径点权是否 ≥0 。

跑一遍最长路就好了。而对于 DAG ,最长路只要 dp 一下,复杂度是保证 O(m) 。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<deque>
#include<set>
#include<vector>
#include<map>
#include<cmath>
#include<functional>#define fst first
#define sc second
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a))
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define lc root<<1
#define rc root<<1|1
#define lowbit(x) ((x)&(-x)) using namespace std;typedef double db;
typedef long double ldb;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PI;
typedef pair<ll,ll> PLL;const db eps = 1e-6;
const int mod = 1e9+7;
const int maxn = 1e6+100;
const int maxm = 1e6+100;
const int inf = 0x3f3f3f3f;int a[maxn];
int b[maxn];
vector<int>v[maxn];
int dp[maxn];
int n,m;
int c(int x, int mid){return a[x]>=mid?1:-1;
}
void dpp(int x, int va,int mid){//printf("%d %d %d\n",x,va,mid);if(va<=dp[x])return;dp[x] = max(dp[x],va);//if(x==n)return;for(int i = 0; i < (int)v[x].size(); i++){dpp(v[x][i], va+c(v[x][i],mid),mid);}return;
}
bool ck(int x){//x = b[x];for(int i = 1; i <= n; i++)dp[i]=-0x3f3f3f3f;dpp(1,c(1,x),x);if(dp[n]>=0)return true;return false;
}
int main(){scanf("%d %d",&n,&m);for(int i =1 ; i <= n; i++){scanf("%d", &a[i]);}for(int i = 1; i <= m; i++){int x, y;scanf("%d %d", &x, &y);v[x].pb(y);}//printf("%d",ck(5));int l = 0, r = 1e9;int ans=-1;while(l<=r){int mid = (r+l)>>1;//printf("%d %d %d\n",l,r,mid);if(ck(mid)){l = mid+1;ans=mid;}else r = mid-1;}printf("%d", ans);return 0;
}

转载于:https://www.cnblogs.com/wrjlinkkkkkk/p/10427173.html

EOJ Monthly 2019.2 E 中位数 (二分+中位数+dag上dp)相关推荐

  1. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)

    EOJ Monthly 2019.11 ∑i=1n∑a1=1i∑a2=1i∑a3=1i⋯∑ak−1i∑aki[gcd(a1,a2,a3,-,ak−1,ak,i)==1]=∑i=1n∑d∣iμ(d)⌊i ...

  2. 【EOJ Monthly 2019.02 - E】中位数(二分 ,中位数 ,−1/1变换,dp求解DAG最长路)

    题干: E. 中位数 单测试点时限: 10.0 秒 内存限制: 256 MB "你的地图是一张白纸,所以即使想决定目的地,也不知道路在哪里." QQ 小方最近在自学图论.他突然想出 ...

  3. 【EOJ Monthly 2019.02 - A】回收卫星(交互题型,二分)

    题干: 单测试点时限: 1.0 秒 内存限制: 256 MB "这个世上没有无用的齿轮,也只有齿轮本身能决定自己的用途." 就像太空中的卫星,虽然不计其数,但都各司其职. 但没有一 ...

  4. EOJ Monthly 2019.3 (based on March Selection) -D .宇恒棋

    D.宇恒棋 EOJ传送门 Q小方以前不会下宇恒棋,现在他会了,所以他急切的想教会你. 宇恒棋的规则是这样的:在一个 n×m 的棋盘上,QQ小方和你各有一枚棋子.你们轮流行动,每一次轮到一方的回合时,他 ...

  5. EOJ Monthly 2019.3 A. 钝角三角形(大力模拟)(重载set)

    题目链接 QQ 小方以前不会判断钝角三角形,现在他会了,所以他急切的想教会你. 如果三角形的三边长分别为 a, b, c (a≤b≤c),那么当满足 a2+b2<c2 且 a+b>c 的时 ...

  6. EOJ Monthly 2019.2 (based on February Selection) D.进制转换

    题目链接: https://acm.ecnu.edu.cn/contest/140/problem/D/ 题目: 思路: 我们知道一个数在某一个进制k下末尾零的个数x就是这个数整除kx,这题要求刚好末 ...

  7. EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】

    任意门:https://acm.ecnu.edu.cn/contest/140/problem/D/ D. 进制转换 单测试点时限: 2.0 秒 内存限制: 256 MB "他觉得一个人奋斗 ...

  8. 【EOJ Monthly 2019.01 - E】唐纳德先生与假骰子(假概率问题)

    题干: 单测试点时限: 6.0 秒 内存限制: 1024 MB 嗨,唐纳德先生又来了. 他又带了一枚假骰子,这个骰子的各个面的点数依然是 1,2,3,4,5,6 ,但是六个面向上的概率却不一定都是 1 ...

  9. 【EOJ Monthly 2019.02 - D】进制转换(思维,取模,高精度大数)

    题干: 单测试点时限: 2.0 秒 内存限制: 256 MB "他觉得一个人奋斗更轻松自在.跟没有干劲的人在一起厮混,只会徒增压力." QQ 小方决定一个人研究研究进制转换. 很快 ...

最新文章

  1. Linux 运维笔试题(一)
  2. 哪里可以找到python的免费教程-哪里可以找到比较靠谱的Python教程?
  3. 关于规则引擎一些基本理论的积累
  4. Spring对事务管理的支持的发展历程--转
  5. kubernetes1.30集群部署+dashboard+heapster
  6. nodejs——URL 基础API
  7. 通讯网关 api网关_API网关正在经历身份危机
  8. 本周任务asp.net 1.1老系统移植升级到asp.net 2.0,又是一个浩大的工程啊?
  9. 微信 iOS 版正式支持深色模式;谷歌宣布彻底取消I/O开发者大会;Visual Studio 2019 16.5发布|极客头条...
  10. dataframe 如何选中某列的一行_Spark中的RDD、DataFrame和DataSet讲解
  11. 分享33个超棒的海洋地貌风光图片
  12. golang 实现 syn_sent flood洪水攻击
  13. 京东敌不过阿里、腾讯岌岌可危,都是因为商业模式出了问题
  14. 路由器 OSPF 路由汇总配置
  15. 皮尔逊相关系数和检验P值
  16. 【文献学习】Analysis of Deep Complex-Valued Convolutional Neural Networks for MRI Reconstruction
  17. 详解自定义钉钉机器人推送消息(一) PHP篇
  18. 上溯造型和下溯造性(解耦合)
  19. java数字时钟_Java实现动态数字时钟
  20. 4G模块AT指令发送中英文短信详细流程

热门文章

  1. 20145335 《信息安全系统设计基础》第2周学习总结
  2. asp.net如何抓取其他网站的内容
  3. 【实习】同方威视南京研发中心招聘图像算法工程师
  4. 近期 AI 领域招聘、招生信息汇总
  5. 微软开源InnerEye:让医学影像AI普及化
  6. CV Code | 计算机视觉开源周报 20190505期
  7. mysql 实现非递归树_二叉树的非递归前序,中序,后序遍历算法
  8. 太棒了!输入文本直接生成流程图
  9. 面经 | 无论文、无实习拿下腾讯CV算法岗
  10. 腾讯开源最大规模多标签图像数据集,刷新行业数据集基准