题意:给出$N$,试构造一个点数小于$500$的图,使得其中三元环的个数恰好为$N$。$N \leq 2 \times 10^6$
首先构造一个尽可能大的完全图,然后在这个完全图旁边加点、尽可能多的连边即可。这种方法不一定是最优的,但是是较优的
#include<bits/stdc++.h> using namespace std; ][]; int N , cnt; int main(){ cin >> N; ; i ; i--) ) * (i - ) / <= N){ N -= i * (i - ) * (i - ) / ; cnt = i; ; i <= cnt ; i++) ; j + i <= cnt ; j++) edge[i][j] = ; break; } ; j && N ; j--) ) / <= N){ N -= j * (j - ) / ; cnt++; ; i <= j ; i++) edge[i][cnt - i] = ; j++; } cout << cnt << endl; ; i <= cnt ; i++){ ; j + i <= cnt ; j++){ putchar(edge[i][j] + ); putchar(' '); } putchar('\n'); } ; }