codeforces #261 C題 Pashmak and Buses(瞎搞),

來源:互聯網
上載者:User

codeforces #261 C題 Pashmak and Buses(瞎搞),

題目地址:http://codeforces.com/contest/459/problem/C

C. Pashmak and Busestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

Recently Pashmak has been employed in a transportation company. The company has k buses and has a contract with a school which has n students. The school planned to take the students to d different places for d days (each day in one place). Each day the company provides all the buses for the trip. Pashmak has to arrange the students in the buses. He wants to arrange the students in a way that no two students become close friends. In his ridiculous idea, two students will become close friends if and only if they are in the same buses for all d days.

Please help Pashmak with his weird idea. Assume that each bus has an unlimited capacity.

Input

The first line of input contains three space-separated integers n, k, d (1 ≤ n, d ≤ 1000; 1 ≤ k ≤ 109).

Output

If there is no valid arrangement just print -1. Otherwise print d lines, in each of them print n integers. The j-th integer of the i-th line shows which bus the j-th student has to take on the i-th day. You can assume that the buses are numbered from 1 to k.

Sample test(s)input
3 2 2
output
1 1 2 1 2 1 
input
3 2 1
output
-1
Note

Note that two students become close friends only if they share a bus each day. But the bus they share can differ from day to day.

這題就是求一全排列。因為要求每一天的都不相同,所以最多是k^d種。如果要輸出的話,最簡單的方法就是進行全排列唄。。。。要注意。。如果用的跟我的求全排列方法一樣的話,那需要注意中間的cnt值是會很大的,但是由於最多隻需要輸出n種,所以如果大於n的話就直接讓他等於n+1。

代碼如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64LL mp[3100][3100];int main(){    LL n, k, d, i, j, cnt, h, flag=0, x, y;    scanf("%I64d%I64d%I64d",&n,&k,&d);        memset(mp,0,sizeof(mp));        cnt=1;        for(i=1;i<=d;i++)        {            for(j=1;j<=n;j++)            {                if((j-1)%cnt==0)                {                    mp[i][j]=mp[i][j-1]+1;                    if(mp[i][j]>k)                    {                        mp[i][j]=1;                        if(i==d)                        {                            flag=1;                            break;                        }                    }                }                else                    mp[i][j]=mp[i][j-1];            }            if(j!=n+1)                break;            cnt*=k;            if(cnt>1000)                cnt=1001;        }        if(flag)        {            printf("-1\n");        }        else        {            for(i=d;i>=1;i--)            {                for(j=1;j<=n;j++)                {                    printf("%I64d ",mp[i][j]);                }                printf("\n");            }        }    return 0;}



codeforces問題: codeforces比賽怎攻擊別人?

對某一題,首先你自己要先過TEST。然後回到比賽的PROBLEM列表,把這題後面的鎖鎖上(鎖上了就不能再提交了,所以沒把握就別鎖了),然後到ROOM裡面,你就可以看別人代碼了,下面有HACK按鈕,點一下,輸入你覺得他錯的範例。
 
codeforces上怎看測試資料

進入比賽,點MY SUBMISSIONS,然後再點#號下面的運行編號,就可以看到測試資料了
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.