hdu4671Backup Plan

http://acm.hdu.edu.cn/showproblem.php?pid=4671

这个高端的题意啊 看了N久啊

n>m时  直接第一列按顺序来 第二列为M+1

else  第一列顺序来 第二列 按第一组为N  第二组为N-1  依次分配

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 using namespace std;
 7 #define N 110
 8 int f[110][110],a[110][110],x[110];
 9 int main()
10 {
11     int i,j,k,n,m;
12     while(cin>>n>>m)
13     {
14         memset(f,0,sizeof(f));
15         if(n>m)
16         {
17             for(i = 1; i <= m ; i++)
18             {
19                 a[i][1] = i;
20                 f[i][i] = 1;
21             }
22             for(i = 1 ; i <= m ; i++)
23             {
24                 a[i][2] = m+1;
25                 f[i][m+1] = 1;
26             }
27             for(i = 1; i <= m ; i++)
28             {
29                 printf("%d %d",a[i][1],a[i][2]);
30                 for(j = 1; j  <= n ; j++)
31                 {
32                     if(!f[i][j])
33                     printf(" %d",j);
34                 }
35                 puts("");
36             }
37         }
38         else
39         {
40             int j = 1;
41             for(i = 1; i <= m ; i++)
42             {
43                 f[i][j]  = 1;
44                 a[i][1] = j++;
45                 if(j>n)
46                 j = 1;
47             }
48             for(i = 1; i <= n ; i++)
49             x[i] = n;
50             j = 1;
51             for(i = 1; i <= m ; i++)
52             {
53                 int o = a[i][1];
54                 if(o == x[j])
55                 x[j]--;
56                 if(x[j]<1) x[j] = n;
57                 f[i][x[j]] = 1;
58                 a[i][2] = x[j]--;
59                 if(x[j]<1)
60                 x[j] = n;
61                 j++;
62                 if(j>n) j = 1;
63             }
64             for(i = 1; i <= m ; i++)
65             {
66                 printf("%d %d",a[i][1],a[i][2]);
67                 for(j = 1; j  <= n ; j++)
68                 {
69                     if(!f[i][j])
70                     printf(" %d",j);
71                 }
72                 puts("");
73             }
74         }
75     }
76     return 0;
77 }
View Code

 

转载于:https://www.cnblogs.com/shangyu/p/3256651.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值