sgu288:Best Tournament Schedule(构造)

题目大意: 个参赛选手,,要求选手之间两两都有且仅有一次对决。每一轮中一个选手至多可以对决一次,也就是每一轮选出若干对不相交的选手进行对决。现在要求出最少的对决轮数来结束比赛和此时的对决方案。

分析: 。原因可以自行脑补。 表示之间的对决发生在第几轮。那么我们就是要求每一行每一列不出现重复的数字。 ,毫无疑问是满足要求的。 ,那么此时它也是满足要求的。

AC code:

LL;typedef double DB;LD;;void open_init(){#ifndef ONLINE_JUDGEfreopen(“input.txt”, “r”, stdin);freopen(“output.txt”, “w”, stdout);#endifios::sync_with_stdio(0);}void close_file(){#ifndef ONLINE_JUDGEfclose(stdin);fclose(stdout);#endif}const int MAXN = 2009;int n, ans;int g[MAXN][MAXN];int main(){open_init();scanf(“%d”, &n);if(n > 1) ans = n-(n&1^1);else ans = 0;rep(i, 1, ans)rep(j, i+1, ans)g[i][j] = g[j][i] = (i+j)%ans+1;rep(i, ans+1, n)rep(j, 1, n-1)g[i][j] = g[j][i] = (j<<1)%ans+1;printf(“%d\n”, ans);rep(i, 1, n){rep(j, 1, n-1)printf(“%d “, g[i][j]);printf(“%d\n”, g[i][n]);}close_file();return 0;}

用爱生活,你会使自己幸福!用爱工作,你会使很多人幸福!

sgu288:Best Tournament Schedule(构造)

相关文章:

你感兴趣的文章:

标签云: