二分搜尋 HihoCoder1139

2022-09-01 15:54:16 字數 1655 閱讀 2300

題目描述:

由於自己「想得太多」,導致自己讀了半天題才理解了題意。我還以為索敵值會隨著每一次到達戰略點而減小,結果題意是索敵值是固定了的,並不會改變。

如下是我對題目中第乙個案例的分析:

每個圓圈代表乙個戰略點的編號,邊上的值代表每兩個戰略點之間所需索敵值。

開始時nettle在1,他只需要3個索敵值就能到達5了,如圖:從戰略點1到達戰略點5只需要 3 個索敵值,因此答案 3 滿足條件,再從戰略點2到戰略點5只需要 2 個索敵值,答案3大於2,因此答案 3 滿足條件。所以,nettle需要的最少索敵值為3,經1---->2---->5路線,可以消滅boss。

**實現:

#include #include 

#include

#include

#include

using

namespace

std;

const

int maxn =1e6;

const

int inf = 1000000+10

;int

n,m,k,t;

struct

edge;

struct

node;

edge e[maxn*2];///

所有的邊

edge now[maxn*2];///

滿足k>=val的邊

vectorg[maxn];///

滿足k>=val的邊對應的點

bool

used[maxn];

typedef pair

p;queue

q;int

cmp(edge a, edge b)

bool bfs(int num,int k)

q.push(p(num,k));

used[num]=true

;

while(!q.empty())

for(int i=0;i)}}

}return

false;}

bool c(int

x)

///滿足鎖敵值為x的邊存在now陣列裡面

for(int i=0;i<2*m;i++)

}for(int i=0;i));

}if(bfs(1,k))

return

false;}

void

solve()

else

}printf(

"%d\n

",ub);

}int

main()

sort(e,e+2*m,cmp);

solve();

}return0;

}

Hihocoder 1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

hihoCoder 1128 二分 二分查詢

原題位址 一開始沒搞懂題目是想幹什麼,於是寫了乙個掃一遍的 a了,如下 1 include 2 3using namespace std 45 intmain 18 printf d n found lt 1 1 19 20return0 21 做到後面一題的時候才明白題目是什麼意思,如下 1 in...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...