好斗的牛 问题描述 你有109个牛棚,从左到右一字排开。你希望把N头牛安置到牛棚里。麻烦的是,你的牛很好斗,如果他们附近有其他的牛,他们就会不安分地去挑事。其中,第i头牛的攻击范围是(ai,bi),这意味着,如果他的左边ai个牛棚或右边bi个牛棚里有其他牛,他就会去挑事。 你想留下连续的一段牛棚,并把其他牛棚都卖掉。请问你最少需要留下多少牛棚,才能保证至少存在一种方案能够把所有的N头牛都安置进剩余的牛棚里,且没有牛会挑事? 输入描述 第一行 1 个正整数N。 接下来一行N个用空格隔开的正整数a1,...,aN。 接下来一行 个用空格隔开的正整数b1,...,bN。 输出描述 输出一行一个整数,表示你最少需要留下多少牛棚。 特别提醒 在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。 样例输入1: 2 1 2 1 2 样例输出1: 4 样例解释1: 你可以留下 个牛棚,并如此安排你的牛: 样例输入2: 3 1 2 3 3 2 1 样例输出2: 7 数据规模 对于20的测试点,保证N=2; 对于另外20的测试点,保证N=3; 对于80的测试点,保证N≤8; 对于所有测试点,保证N≤9,ai,bi≤1000。

正确答案:N<=9,枚举牛的全排列。按某排列从左到右放牛,相邻两棚距离取max(左牛b,右牛a),总棚数=1+各间距之和,取所有排列最小值
试卷来源:202403 CCF-GESP编程能力等级认证C++六级真题