第三届全国大学生算法设计与编程挑战赛 只有:B,D,E,G,I,K,L 正⽂ B: 思路:⼆分 ⼆分给出⼀个mid,让第⼀个数 r 为max(a[1]-d,0),以后的数⾄少是 r+1,⽽且太⼩就直接返回NO,也就是 if( a[i]-mid < r+1) return 0; 因为递增,r最⼩为 r+1。因为差值⼩于mid,r最⼩为 a[i]-mid ,所以 r=max(r+1,a[i]-mid); 总代码: 1 int check(int d){ 2 int r=max(0,a[1]-d); 3 fo(2,n){ 4 if(a[i]+d 2 #include 3 using namespace std; 4 #define fo(a,b) for(int i=a;i<=b;i++) 5 #define inf 0x3f3f3f3f 6 #define ll long long 7 #define M 10000