Interactive Problems(交互式问题) 2016.6.9

本文介绍了编程竞赛中的一种特殊类型——交互式问题。在交互式问题中,输入数据可能由解法程序动态生成,解法与交互器进行数据交换。解决这类问题时要注意输出数据的flush操作,以确保数据及时传递。由于输入/输出速度较慢,测试交互式问题解法较为困难。CodeForces等平台会提供交互式问题,但自定义调用无法完全模拟交互过程。文章列举了两个例子,如Guess the Number和Bear and Prime 100,分别讲解了解题思路。
摘要由CSDN通过智能技术生成

参考:http://codeforces.com/blog/entry/45307

在编程竞赛中(包括CodeForces)有时你会看到交互式问题

在这种类型的问题中,对于你编程的输入数据,或许不被预先决定,而是由你的解法专门构造

Jury 写了一个特殊的程序 -- 交互器,它的输出被转变为你的解法的输入,并且你的程序的输出被发送到交互器的输入

换句话说,你的解法和交互器交换数据,并且我决定输出什么基于 “交流的历史”


当你写一个交互式问题的解法,记住 “如果你要输出一些数据,也许这些数据首先被放到内部缓冲区,不被直接转移到交互器”  是重要的

为了防止这种情况,每次你输出一些数据,必须用特殊的 flush 操作


交互式问题有一些特征

  • 交互式问题中的输入/输出运行的要比平常问题慢,所以建议使用 scanf / printf
  • 通常,人工测试交互式问题的解法比较困难,因为测试的时候参与者需要担任交互器的角色
  • “自定义调用” 标签不了解问题的交互器,所以你不能充分的测试你的解法
  • CodeForces的比赛中有时候会出现交互式的问题,Hack 数据的格式将在问题的声明中给出

(感觉这波翻译用处不是很大。。。而且菜的抠脚


例题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值