A 略
B
主要是一定是“YES”的 这个可能有点卡,其次就是尽量对称即可
C
一直都是从前往后考虑,所以浪费了很多时间 ,后来换个思路,从后面往前考虑 这是破点
可以保证if(visit[j]!=-1) j 到 i 这个区间一定是没有被访问过的
#include#include #include using namespace std;int a[100004];int visit[300];int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { for(int i=0; i =a[i]-k+1&&j>=0; j--) { if(visit[j]!=-1&&visit[j]>=a[i]-k+1)//则可以进入这个小组 { for(int k=j+1; k<=a[i]; k++) { visit[k]=visit[j]; } flag=1; break; } else if(visit[j]!=-1&&visit[j]
D
对于一个给定的数组,找到能把这个数组分成n部分,其中n要最小(尽可能大地划分数组),而且每一对数在这一部分里是一个