题目

这道题做了几个小时了都没有做出来,首先是题意搞了半天都没有弄懂,难道真的是因为我不打游戏所以连题都读不懂了?

反正今天是弄不懂了,过几天再来看看。。。

题意:一个人从1点出发到T点去打boss,这个人有两个属性值,防御值和战斗值,这两个值成反比,为了打赢boss我们要使战斗值最大,于是乎防御值就要最低,但是也不能太低,于是乎这个界限在哪,这就是我们要求的。每条路上都有一个索敌值,防御值必须>=索敌值 才能通过。从1点到T点有很多条通路,我们要找的是:这每一条通路中索敌值最大的中索敌值最小的,感觉这句话有点绕,具体解释看下图:

1号节点是起点,5号是终点,从1到5有三条通路:1->2->5; 1->3->5; 1->4->5; 对应路径中最长的路段长度分别是:3;5;4;因此在{3,5,4}中最小值3是正确值。

所以这道题是用二分求,最大化最小值。

#include <bits/stdc++.h>
using namespace std; int n,m,k,t;
const int Max = 10005;
int vis[Max]; struct edge{
int x,w;
};
vector<edge> v[Max]; int bfs(int dis)
{
memset(vis,0,sizeof(vis));
queue<int> q;
q.push(1);
while(!q.empty())
{
int cur = q.front();
q.pop();
if(cur==t) return true;
if(vis[cur]==k)
continue;
int l = v[cur].size();
for(int i=0;i<l;i++)
{
int tmp = v[cur][i].x;
if(vis[tmp]||v[cur][i].w>dis)
continue;
vis[tmp]=vis[cur]+1;
q.push(tmp);
}
}
return false;
} int main()
{
int a,b,c;
while(~scanf("%d%d%d%d",&n,&m,&k,&t))
{
int a,b,c,maxn=0;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
edge tmp;
tmp.x = b; tmp.w = c;
v[a].push_back(tmp);
tmp.x = a;
v[a].push_back(tmp);
maxn = max(maxn,c);
}
int mid,l=0,r=maxn;
while(l<=r)
{
mid = (l+r)/2;
if(bfs(mid)){
r=mid-1;
}else{
l=mid+1;
}
}
printf("%d\n",l);
}
return 0;
}

hihocoder 二分·二分答案【二分搜索,最大化最小值】 (bfs)的更多相关文章

  1. 二分算法的应用——最大化最小值 POJ2456 Aggressive cows

    Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Description Far ...

  2. poj 3258"River Hopscotch"(二分搜索+最大化最小值问题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有 N 块岩石,从中去掉任意 M 块后,求相邻两块岩石最小距离最大是多少? 题解 ...

  3. POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)

    POJ 2456 题意 农夫约翰有N间牛舍排在一条直线上,第i号牛舍在xi的位置,其中有C头牛对牛舍不满意,因此经常相互攻击.需要将这C头牛放在离其他牛尽可能远的牛舍,也就是求最大化最近两头牛之间的距 ...

  4. POJ 3258 River Hopscotch(二分查找答案)

    一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...

  5. hihocoder hiho第38周: 二分·二分答案 (二分搜索算法应用:二分搜索值+bfs判断可行性 )

    题目1 : 二分·二分答案 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后 ...

  6. poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分

    poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分 题目链接: nyoj : http://acm.nyist.net/JudgeOnline/ ...

  7. POJ_2456_Agressive_cows_(二分,最大化最小值)

    描述 http://poj.org/problem?id=2456 有n个小屋,线性排列在不同位置,m头牛,每头牛占据一个小屋,求最近的两头牛之间距离的最大值. Aggressive cows Tim ...

  8. POJ3285 River Hopscotch(最大化最小值之二分查找)

    POJ3285 River Hopscotch 此题是大白P142页(即POJ2456)的一个变形题,典型的最大化最小值问题. C(x)表示要求的最小距离为X时,此时需要删除的石子.二分枚举X,直到找 ...

  9. codeforce 1070 E Getting Deals Done(二分求最大化最小值)

    Polycarp has a lot of work to do. Recently he has learned a new time management rule: "if a tas ...

随机推荐

  1. andorid 计算器

    avtivity_main.xml <?xml version="1.0" encoding="utf-8"?> <GridLayout xm ...

  2. Java.FamousBlogs

    本文总结在工作/学习中发现的Java相关的blogs. 1. java code geeks (jcg) http://www.javacodegeeks.com/join-us/jcg/ 2. ht ...

  3. *jQuery选择器总结(原创:最全、最系统、实例展示)

    jquery选择器包括四部分:一.基本选择器二.层次选择器三.过滤选择器四.表单元素选择器 一.基本选择器1.ID选择器:$('#myDiv');2.类选择器:$('.className');3.元素 ...

  4. Tinyos学习笔记(三)

    读取Telosb内部传感器数据,并在计算机上显示. senseC.nc代码如下: #include "Timer.h" #include "sense.h" # ...

  5. 不立flag了……

    当天刚说再也不想下这游戏了,后来和女友聊了会天视了会屏又动摇了..后悔和她那么计较这些小事,可能玩游戏时生气时就想不起来那么多事了吧..于是游戏过两天就又下回来了.. 这两天培训课程也是很快的感觉,昨 ...

  6. 【密码学】轻松理解“加盐”的原理与java实现

    转自:https://blog.csdn.net/DavidHuang2017/article/details/80283469 一.什么是加盐? 1.背景 现在很多公司后台以hash值形式存储用户密 ...

  7. AJAX-DOM事件

    1.DOM事件 1.select的onchange事件 当选项框中的内容发生改变时需要出发的事件.2.Ajax 1.名词解释 1.同步 在一个任务进行中,不能开启其它的任务. 同步访问:浏览器在向服务 ...

  8. JNI,RegisterNative参数解析

    Register native method - 数据类型和method descriptor 使用JNI时,为了使得虚拟机可以找到在C/C++ code中定义的native方法,有两种机制可以用,一 ...

  9. java学习第六周

    这是暑假学习的第六周,在这周我练习了老师给的例题,还是有一些地方看不懂,这周我对那些不懂的地方用看视频来进行解答,以及进行第二次复习. 下周我会对Java进行更加详细的复习,做好笔记,在LeetCod ...

  10. 2019.01.08 bzoj3809: Gty的二逼妹子序列(莫队+权值分块)

    传送门 题意:多组询问,问区间[l,r]中权值在[a,b]间的数的种类数. 看了一眼大家应该都知道要莫队了吧. 然后很容易想到用树状数组优化修改和查询做到O(mnlogamax)O(m\sqrt nl ...