hihoCoder#1139 二分·二分答案

原题地址

挺简单一道题,结果因为一时傻逼写错一个小地方,导致WA成狗了_(:з」∠)_

代码:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <queue>
 4
 5 using namespace std;
 6
 7 #define MAX_V 10008
 8 #define MAX_E 200008
 9
10 int N, M, K, T;
11 int f[MAX_V];
12 bool v[MAX_V];
13 int n[MAX_E];
14 int w[MAX_E];
15 int t[MAX_E];
16 int max_w = 1;;
17 int min_w = 1000000;
18
19 bool check(int l) {
20   queue<pair<int, int> > q;
21   memset(v, 0, sizeof(v));
22   q.push(pair<int, int>(1, K));
23   while (!q.empty()) {
24     pair<int, int> p = q.front();
25     q.pop();
26     if (p.first == T && p.second >= 0)
27       return true;
28     if (p.second == 0 || v[p.first])
29       continue;
30     v[p.first] = true;
31     for (int i = f[p.first]; i != 0; i = n[i]) {
32       if (w[i] > l || v[t[i]])
33         continue;
34       q.push(pair<int, int>(t[i], p.second - 1));
35     }
36   }
37   return false;
38 }
39
40 int find(int l, int r) {
41   int res = r;
42   while (l <= r) {
43     int m = (l + r) / 2;
44     if (check(m)) {
45       res = m;
46       r = m - 1;
47     }
48     else
49       l = m + 1;
50   }
51   return res;
52 }
53
54 int main() {
55   memset(n, 0, sizeof(n));
56   scanf("%d%d%d%d", &N, &M, &K, &T);
57   for (int i = 0, j = 0; i < M; i++) {
58     int a, b, c;
59     scanf("%d%d%d", &a, &b, &c);
60     min_w = min(min_w, c);
61     max_w = max(max_w, c);
62     j++;
63     w[j] = c;
64     t[j] = b;
65     n[j] = f[a];
66     f[a] = j;
67     j++;
68     w[j] = c;
69     t[j] = a;
70     n[j] = f[b];
71     f[b] = j;
72   }
73   if (T == 1)
74     printf("0\n");
75   else
76     printf("%d\n", find(min_w, max_w));
77   return 0;
78 }
时间: 2024-08-10 01:03:14

hihoCoder#1139 二分·二分答案的相关文章

【hihoCoder 1139】 二分&#183;二分答案

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后终于准备出海捞船和敌军交战了. 在这个游戏里面,海域是N个战略点(编号1..N)组成,如下图所示 其中红色的点表示有敌人驻扎,猫头像的的点表示该地图敌军主力舰队(boss)的驻扎点,虚线表示各个战略点之间的航线(无向边). 在游戏中要从一个战略点到相邻战略点需要满足一定的条件,即需要舰队的索敌值大于等于这两点之间航线的索敌值需求. 由于

hiho week 38 P1 : 二分&#183;二分答案

P1 : 二分·二分答案 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后终于准备出海捞船和敌军交战了.在这个游戏里面,海域是N个战略点(编号1..N)组成,如下图所示其中红色的点表示有敌人驻扎,猫头像的的点表示该地图敌军主力舰队(boss)的驻扎点,虚线表示各个战略点之间的航线(无向边).在游戏中要从一个战略点到相邻战略点需要满足一

Brownie Slicing(二分枚举答案)

描述 Bessie has baked a rectangular brownie that can be thought of as an RxC grid (1 <= R <= 500; 1 <= C <= 500) of little brownie squares.The square at row i, column j contains N_ij (0 <= N_ij <= 4,000) chocolate chips.Bessie wants to par

hiho week 37 P1 : 二分&#183;二分查找之k小数

P1 : 二分·二分查找之k小数 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的 船,但是已有的N(1≤N≤1,000,000)个船位都已经有船了.所以Nettle不得不把其中一艘船拆掉来让位给新的船.Nettle思考了很久, 决定随机选择一个k,然后拆掉稀有度第k小的船. 已知

#1128 : 二分&#183;二分查找 ( 两种方法 先排序在二分O(nlogN) + 直接二分+快排思想O(2N) )

#1128 : 二分·二分查找 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Nettle最近在玩<艦これ>,因此Nettle收集了很多很多的船(这里我们假设Nettle氪了很多金,开了无数个船位).去除掉重复的船之后,还剩下N(1≤N≤1,000,000)种不同的船.每一艘船有一个稀有值,任意两艘船的稀有值都不相同,稀有值越小的船越稀有,价值也就越高. Nettle现在通过大建又造出了一艘船,他想知道这艘船是不是重复的.如果是重复的,那么这艘船在Nettle所

hiho#1133 : 二分&#183;二分查找之k小数

#1133 : 二分·二分查找之k小数 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回里我们知道Nettle在玩<艦これ>,Nettle的镇守府有很多船位,但船位再多也是有限的.Nettle通过捞船又出了一艘稀有的船,但是已有的N(1≤N≤1,000,000)个船位都已经有船了.所以Nettle不得不把其中一艘船拆掉来让位给新的船.Nettle思考了很久,决定随机选择一个k,然后拆掉稀有度第k小的船. 已知每一艘船都有自己的稀有度,Nettle现在把所有

ACM学习历程—Hihocoder 1139 二分&#183;二分答案(bfs)

http://hihocoder.com/problemset/problem/1139 这题提示上写的是二分,但是感觉不二分应该也可以,至少题目是AC的... 二分的思想就是二分答案的值,看能不能在k步内,得到这个答案值,可以采用bfs来判定. 不二分的话,就是需要一个dis[]数组来保存在前k步内,每个点的最小索敌值,因为bfs在往后的过程中step是越来越大的,所以前面能达到更小的,显然不会重复再跑大的,然后bfs的过程中更新即可.类似于spfa,但是没有对队列去重. 代码: #inclu

用二分枚举答案题

以二分算法枚举答案的方法非常高效,枚举所需的时间复杂度只需O(logN) 设x为答案,check(x)只有真假两种取值. 能够使用二分枚举算法的条件: 存在一个X,当x小于X时和x大于X时,check(x)真假值不一样. 二分枚举即能够找出真假之间的边界,这个就是所求在满足题意下的最值了. 如果x是浮点数,那么边界的取值注意精度即可. const double eps=1e-7; while(l+eps<r) { mid=(l+r)/2; if(check(mid)) l=mid; else r

POJ 2112—— Optimal Milking——————【多重匹配、二分枚举答案、floyd预处理】

Optimal Milking Time Limit:2000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 2112 Description FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 <= C <= 20