#P12937. [NERC 2019] DevOps Best Practices
[NERC 2019] DevOps Best Practices
Description
Daisy 是 RainyDay 公司的一名高级软件工程师。她刚刚为产品实现了三个新功能:第一个功能使产品能够运行,第二个功能使产品运行得更快,第三个功能使产品运行得更正确。公司鼓励对新功能进行至少一些测试,因此 Daisy 指派她的实习生 Demid 为这些新功能编写测试用例。
有趣的是,这三个功能在 Demid 的开发服务器(编号为 1)上通过了所有测试,但在其他某些服务器上可能会测试失败。
Demid 完成任务后,Daisy 指派你将这三个功能部署到公司的所有 台服务器上。对于每个功能 和每台服务器 ,Daisy 会告诉你她是否希望将功能 部署到服务器 上。如果她希望部署,即使功能 在服务器 上测试失败也必须部署;如果她不希望部署,则不能部署。
公司有两种重要的部署工具:持续部署(CD)和持续测试(CT)。CD 可以在多对服务器之间建立有向图形式的连接,而 CT 可以配置在某些服务器上。
如果从服务器 到服务器 配置了 CD,那么每当 接收到新功能 时,系统会启动以下部署流程将 部署到 :
- 如果功能 已经部署在服务器 上,则不进行任何操作。
- 否则,如果服务器 未配置 CT,则 会直接将功能 部署到 ,不进行测试。
- 否则,服务器 会对功能 运行测试。如果测试失败,则不进行任何操作;如果测试通过,则将功能 部署到 。
你需要配置 CD/CT 系统,之后 Demid 会将所有三个功能部署到他的开发服务器上。你的 CD/CT 系统必须确保每个功能仅被部署到 Daisy 指定的服务器集合。
由于公司计算资源有限,你最多只能建立 条 CD 连接。
Input Format
第一行包含一个整数 ()——公司服务器的数量。
接下来的 行,每行包含三个整数。第 行的第 个整数为 表示 Daisy 希望将第 个功能部署到第 台服务器,否则为 。
再接下来的 行,每行包含三个整数。第 行的第 个整数为 表示第 个功能在第 台服务器上测试通过,否则为 。
Demid 的开发服务器编号为 。数据保证 Daisy 希望将所有三个功能部署到服务器 1,且所有三个功能在服务器 1 上测试通过。
Output Format
如果无法在最多建立 条 CD 连接的情况下配置 CD/CT 系统,则输出一行 Impossible。
否则,输出的第一行应为 Possible。
第二行应包含 个用空格分隔的整数——CT 的配置。第 个整数为 表示你在第 台服务器上设置了 CT,否则为 。
第三行应包含一个整数 ()——你设置的 CD 连接数量。
接下来的 行,每行描述一条 CD 连接,包含两个整数 和 (;),表示从服务器 到服务器 建立了自动部署通道。
3
1 1 1
1 0 1
1 1 1
1 1 1
0 0 0
1 0 1
Possible
1 1 1
2
3 2
1 3
2
1 1 1
0 0 1
1 1 1
1 1 0
Impossible
Hint
第一个样例测试的 CD/CT 系统配置如下图所示。

翻译由 DeepSeek V3 完成
京公网安备 11011102002149号