• codeforces 459 C. Pashmak and Buses(思维)


    题目链接:http://codeforces.com/problemset/problem/459/C

    题意:有n个人,k辆车,d天要求没有两个人在d天都坐在一起。输出坐的方法。

    题解:这题很有意思,首先在这d天里每个人都有一个序列那就是每天坐哪辆车。然后为了满足题意只要他们

    的序列都是独一无二的就行。也就是说k辆车,d天总共有k^d次方的坐法,所以最多能提供k^d个人。然后

    就是怎么输出了,这有一个技巧,只要构成d位的k进制数就行。然后遍历1~n依次加1即可。

    #include <iostream>
    #include <cstring>
    using namespace std;
    int a[2000][2000];
    int main() {
        int n , k , d;
        cin >> n >> k >> d;
        int flag = 0;
        long long sum = 1;
        for(int i = 1 ; i <= d ; i++) {
            sum *= k;
            if(sum >= n) {
                flag = 1;
                break;
            }
        }
        if(flag) {
            for(int j = 1 ; j <= d ; j++) {
                a[1][j] = 1;
            }
            for(int i = 2 ; i <= n ; i++) {
                int tmp = 0;
                for(int j = d ; j >= 1 ; j--) {
                    if(tmp) {
                        a[i][j] = a[i - 1][j];
                        continue;
                    }
                    if(a[i - 1][j] + 1 <= k) {
                        a[i][j] = a[i - 1][j] + 1;
                        tmp = 1;
                    }
                    else {
                        a[i][j] = 1;
                    }
                }
            }
            for(int i = 1 ; i <= d ; i++) {
                for(int j = 1 ; j <= n ; j++) {
                    cout << a[j][i] << ' ';
                }
                cout << endl;
            }
        }
        else {
            cout << -1 << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    day06
    day05
    day04
    day03
    day02
    day01
    python-study-42
    OI 知识总览 算法篇 之 图论
    OI 知识总览 算法篇 之 基础算法
    [CSP2019-JX] 散步 解题报告
  • 原文地址:https://www.cnblogs.com/TnT2333333/p/6774766.html
Copyright © 2020-2023  润新知