D. Frozen Rivers

思路

AC(SPFA + two point)

#include <bits/stdc++.h>
using namespace std;
const LL INF = 0x3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 1e5 + 10;
int h[N], e[N], ne[N], idx;
LL tmp[N], dist[N], w[N];
bool leaf[N];
void add(int a, int b, int c) {e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}
void spfa() {memset(dist, 0x3f, sizeof dist);queue<int> Q;Q.push(1); dist[1] = 0;while (Q.size()) {int t = Q.front();Q.pop();LL mi = INF;for (int i = h[t]; i != -1; i = ne[i]) {if (w[i] < mi)mi = w[i];Q.push(e[i]);}for (int i = h[t]; i != -1; i = ne[i]) {int j = e[i];dist[j] = min(dist[j], dist[t] + mi + 2 *(w[i] - mi)); }}
}
bool check(int mid, LL p) {if (tmp[mid] > p) return 1;else return 0;
}
int main() {int t;scanf("%d", &t);while (t -- ) {int n;idx = 0;memset(leaf, 0, sizeof leaf);memset(h, -1, sizeof h);scanf("%d", &n);for (int i = 1; i < n; i ++ ) {int p, c;scanf("%d%d", &p, &c);add(p, i + 1, c); leaf[p] = 1;}int cnt = 0;spfa();for (int i = 1; i <= n; i ++ ) {if (leaf[i] == 0) tmp[++ cnt] = dist[i];}int q;sort(tmp + 1, tmp + cnt + 1);scanf("%d", &q);while (q -- ) {LL p;scanf("%lld", &p);int l = 0, r = cnt;while (l < r) {int mid = l + r + 1 >> 1;if (check(mid, p)) r = mid - 1;else l = mid;}printf("%d\n", l);}} return 0;
}

G. It is all about wisdom

思路

AC(SPFA + two point)

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int e[N], ne[N], h[N], wis[N], cost[N], dist[N];
int idx, n, m, k;
bool st[N];
void add(int s1, int s2, int c, int w) {cost[idx] = c, wis[idx] = w;e[idx] = s2, ne[idx] = h[s1], h[s1] = idx ++;
}
bool check(int midwis){memset(dist, 0x3f, sizeof dist);memset(st, 0, sizeof st);dist[1] = 0;queue<int> q;q.push(1);st[1] = 1;while (q.size()) {int t = q.front();q.pop();st[t] = 0;for (int i = h[t]; i != -1; i = ne[i]) {int j = e[i];if (dist[j] > dist[t] + cost[i] && dist[t] + cost[i] < k && wis[i] <= midwis) {dist[j] = dist[t] + cost[i];if (j == n) return 1;if (!st[j]) {q.push(j);st[j] = 1;}}}}return 0;
}
int main() {int t;scanf("%d", &t);while (t -- ) {memset(h, -1, sizeof h);idx = 0;scanf("%d%d%d", &n, &m, &k);for (int i = 1; i <= m; i ++ ) {int s1, s2, c, w;scanf("%d%d%d%d", &s1, &s2, &c, &w);add(s1, s2, c, w);add(s2, s1, c, w);}int l = 1, r = 1e9, ans = -1;while (l < r) {int mid = (l + r) / 2;if (check(mid)) {r = mid;ans = mid;}else l = mid + 1;}printf("%d\n", ans);} return 0;
}

ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015相关推荐

  1. 2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 Apare_xzc

    2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 by xzc,zx,lj 先 ...

  2. NOMURA Programming Contest 2021(AtCoder Regular Contest 121)

    文章目录 A - 2nd Greatest Distance B - RGB Matching C - Odd Even Sort D - 1 or 2 E - Directed Tree F - L ...

  3. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解

    Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...

  4. NEC Programming Contest 2021 (AtCoder Beginner Contest 229)

    终于开始补提了 重点 : C, E的倒着算, F的染色,G的相邻的转换: B - Hard Calculation #include <iostream> #include <alg ...

  5. TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228) ABCD

    A 题意: 有一个开关,每天s点开,t点关(可能在第2天或第n天),判断x点时开着还是关着. 思路: 按照是否需要隔夜分个类. #include<bits/stdc++.h> using ...

  6. NEC Programming Contest 2021(AtCoder Beginner Contest 229) B - Hard Calculation

    题目链接:B - Hard Calculation (atcoder.jp) Problem Statement You are given positive integers A and B. Le ...

  7. Atcoder TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228) B - Takahashi‘s Secret

    题目链接:B - Takahashi's Secret (atcoder.jp) Problem Statement Takahashi has N friends. They have nickna ...

  8. Atcoder TOYOTA SYSTEMS Programming Contest 2021(AtCoder Beginner Contest 228) C - Final Day

    题目链接:C - Final Day (atcoder.jp) Problem Statement N students are taking a 4-day exam. There is a 300 ...

  9. KYOCERA Programming Contest 2021 (AtCoder Beginner Contest 200) A~E 题解

    ABC200/KYOCERA2021 A~E [A - Century](https://atcoder.jp/contests/abc200/tasks/abc200_a) 题目大意 输入格式 输出 ...

  10. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) F.Zebraness

    题目链接 Problem Statement We have a grid with N horizontal rows and N vertical columns. Let (i,j) denot ...

最新文章

  1. 20155332 mybash的实现
  2. Zookeeper知识点详解
  3. 不显示调用super_让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第11篇
  4. Jmeter 使用脚本 生成html测试报告
  5. linux 扩展挂载盘大小_Linux 添加挂载硬盘(包含挂载大于2T以上硬盘)
  6. oracle 怎么附加数据库,Oracle 如何附加数据库
  7. DSAPI Wifi热点的扫描与连接
  8. java switch程序_Java 基础分支语句之程序流程控制switch-case
  9. DSP重新上电程序不能运行
  10. 最新ApkIDE少月版+JAVA环境变量一键配置软件合集
  11. 毕业季青春纪念册PPT模板
  12. VC 使用msxml6.dll动态链接库中的函数读写XML文件
  13. 文科如何晋级计算机职称,职称的档次是怎么确定来的?
  14. 原型制作与图解——墨刀工具
  15. win10系统怎么把python卸载干净_Win10系统卸载python软件失败提示0x
  16. apmserv 5.2.6 升级php,Windows + APMServ5.2.6/PHP5以上
  17. discuz论坛的抓取
  18. 通过加速计和地磁传感器实现方位角
  19. svn: E170001报错解决方法
  20. 3dsmax怎么添加uv坐标_012:多层贴图UVWMAP(UV坐标)技术

热门文章

  1. django如何连接Mysql中已有的数据库
  2. Java面试快问快答-Instrument机制
  3. RK3128-android7.1-物联网模块GM196
  4. 沁恒微USB蓝牙单片机CH573F初步熟悉
  5. 哈工大硕士生用 Python 实现了 11 种经典数据降维算法,源代码库已开放
  6. 计算机无法找到输出设备,电脑没声音找不到输出设备怎么办
  7. ALTREA cyclone IV e系列程序固化方法
  8. Jieba中文分词 (二) ——词性标注与关键词提取
  9. 房间类游戏中的房间ID管理
  10. JS 监听浏览器的回退 事件 [二〇一八年九月二十五日]