原创OI试题

T1 换乘(metro)

题目背景

H3Z信息科学协会成员准备参加NOIP。他们准备从学校出发,乘坐地铁到达考场。但是,地铁线网错综复杂,换乘次数带来的问题困扰住了LzyCoding。作为信息科学协会的一名成员,你能写个程序来帮帮他吗?

问题描述

给定一个包含 \(n\) 个节点的地铁网络图(节点编号从 1 到 \(n\)),初始时没有任何连接。现在有 \(m\) 条地铁线路信息,每条线路连接两个节点并具有特定的权重 \(w\)

换乘定义:如果乘客先乘坐了一条权重为 \(w_1\) 的线路,接着乘坐了一条权重为 \(w_2\) 的线路,且 \(w_1 \neq w_2\),则称为发生了一次"换乘"。

给定学校的位置 \(s\) 和考场的位置 \(t\),请找出一条从 \(s\)\(t\) 的路径,使得整个行程中的换乘次数最少。

输入格式

第一行包含两个整数 \(n\)\(m\),分别表示节点数量和线路数量。

接下来的 \(m\) 行,每行包含三个整数 \(u, v, w\),表示节点 \(u\)\(v\) 之间有一条权重为 \(w\) 的线路。线路是双向的。

最后一行包含两个整数 \(s\)\(t\),表示起点和终点。

注意:图中可能存在重边(两个节点间有多条相同或不同权重的线路)和自环(节点连接到自身的线路)。

输出格式

输出一个整数,表示从 \(s\)\(t\) 的最少换乘次数。

如果不存在从 \(s\)\(t\) 的路径,输出字符串 "Again For OI"(不包含引号)。

特殊说明

  • 如果起点和终点相同,换乘次数为 \(0\)
  • 如果路径只包含一条边,不会发生换乘,换乘次数为 \(0\)

样例

输入样例 1

2 1
1 2 1
1 2

输出样例 1

0

输入样例 2

4 4
1 2 1
2 3 2
3 4 1
2 4 3
1 4

输出样例 2

1

样例 2 解释:路径 1→2→4 的换乘情况:1(权重1)→2(权重3),权重从1变为3,发生1次换乘。

数据范围与约束

对于 \(100\%\) 的数据:

  • \(1 \leq n \leq 10^5\)
  • \(1 \leq m \leq 2 \times 10^5\)
  • \(1 \leq u, v \leq n\)
  • \(1 \leq w \leq 10^6\)
  • \(1 \leq s, t \leq n\)

特别地,对于 $ 5% $ 的数据,保证不存在从 \(s\)\(t\) 的路径。

T2 英语作文(essay)

题目背景

在 H3Z 的 WHK 英语考试中,LzyCoding 需要写一篇英语作文。为了获得高分,他不仅要确保作文内容符合题目要求,还要精心选择单词来提升作文的"等级分"。然而,作文有严格的字母数限制,且需要使用特定数量的不同含义的单词来丰富文章内容。

在 LzyCoding 所学过的单词中,每个单词都有特定的字母数、等级分和含义分类。现在,他需要一个智能的程序来帮助他在满足所有约束条件的情况下,最大化作文的等级分。

题目描述

你需要写一篇英语作文,满足作文的总字母数(包括单词字母和单词间的空格)不超过 \(m\),且作文中需要包含 \(n\) 种不同含义的单词。对于第 \(i\) 种含义,有 \(c_i\) 个候选单词可供选择,每个候选单词有两个属性:一是字母数 \(a_j\),表示该单词包含的字母数量;二是等级分 \(v_j\),表示使用该单词能为作文带来的等级分。对于第 \(i\) 种含义,必须恰好使用 \(t_i\) 个单词来阐明写作内容。因为批卷老师讨厌同一个单词重复使用的现象,所以他规定同种含义的同种候选单词不能重复使用。此外,单词之间需要空格分隔,即如果有 \(k\) 个单词,则会产生 \(k-1\) 个空格,每个空格占用 \(1\) 个字母。

你的任务是选择单词组合,使得在满足所有约束条件的情况下,作文的总等级分最大。如果无法写出满足条件的作文,输出字符串 "After WHK" (不包含引号)。

输入格式

第一行包含两个整数 \(m\), \(n\),分别表示最大字母数和含义种类数;

接下来 \(3 \times n\) 行,每 \(3\) 行描述一种含义:

  • \(1\) 行:整数 \(c_i\),表示该含义的候选单词数量;
  • \(2\) 行:\(c_i\) 个整数 \(a_j\),表示每个候选单词的字母数;
  • \(3\) 行:\(c_i\) 个整数 \(v_j\),表示每个候选单词的等级分;

最后 \(1\) 行:\(n\) 个整数 \(t_i\),表示每种含义需要使用的单词数量。

输出格式

一个整数,表示最大等级分。如果无法完成作文,输出字符串 "After WHK" (不包含引号)。

样例

输入样例

10 2
2
4 3
1 2
2
4 5
3 1
1 1

输出样例

5

样例解释

  • 总字母限制:\(10\)
  • 共有 \(2\) 种含义;
  • \(1\) 种含义:\(2\) 个候选,字母数 \([4,3]\),等级分 \([1,2]\),需要 \(1\) 个单词;
  • \(2\) 种含义:\(2\) 个候选,字母数 \([4,5]\),等级分 \([3,1]\),需要 \(1\) 个单词;
  • 总单词数:\(2\),空格数:\(1\),实际可用于单词的字母数:\(10-1=9\)

最优选择:

  • \(1\) 种含义选择第 \(2\) 个候选(字母 \(3\),等级 \(2\));
  • \(2\) 种含义选择第 \(1\) 个候选(字母 \(4\),等级 \(3\));
    总字母:\(3+4+1=8 \leq 10\),总等级:\(2+3=5\)

数据范围

对于 \(100\%\) 的数据:

  • \(1 \leq m \leq 1000\)

  • \(1 \leq n \leq 50\)

  • 对于每种含义 \(i\)

    • \(1 \leq c_i \leq 100\)
    • \(1 \leq a_j \leq 100\)
    • \(1 \leq v_j \leq 100;\)
    • \(1 \leq t_i \leq \min(10, c_i)\)
  • 保证输入数据合法,所有数字均在整型范围内。

posted @ 2025-09-27 21:10  L-Coding  阅读(39)  评论(0)    收藏  举报