zoukankan      html  css  js  c++  java
  • Pashmak and Buses(构造)

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

    题意:n个人, k辆车, d天,每天将所有 任意人安排到k辆车, 问怎样安排, 可时不存在 2人或2人以上 d天都在一起。

    题解:可以构造一个数组A, n行d列,0<a[i][j] <= k. 不存在两行完全相等,由此可得 k^d < n 可以构造以个k进制数, 从0 加到n   

              不得不说智商是硬伤T T,看了赛后题解才恍然大悟。

     1 /***Good Luck***/
     2 #define _CRT_SECURE_NO_WARNINGS
     3 #include <iostream>
     4 #include <cstdio>
     5 #include <cstdlib>
     6 #include <cstring>
     7 #include <string>
     8 #include <algorithm>
     9 #include <stack>
    10 #include <map>
    11 #include <queue>
    12 #include <vector>
    13 #include <set>
    14 #include <functional>
    15 #include <cmath>
    16 
    17 #define Zero(a) memset(a, 0, sizeof(a))
    18 #define Neg(a)  memset(a, -1, sizeof(a))
    19 #define All(a) a.begin(), a.end()
    20 #define PB push_back
    21 #define inf 0x3f3f3f3f
    22 #define inf2 0x7fffffffffffffff
    23 #define ll long long
    24 using namespace std;
    25 //#pragma comment(linker, "/STACK:102400000,102400000")
    26 void get_val(int &a) {
    27     int value = 0, s = 1;
    28     char c;
    29     while ((c = getchar()) == ' ' || c == '
    ');
    30     if (c == '-') s = -s; else value = c - 48;
    31     while ((c = getchar()) >= '0' && c <= '9')
    32         value = value * 10 + c - 48;
    33     a = s * value;
    34 }
    35 const int maxn = 1005;
    36 int ret[maxn][maxn];
    37 int n, k, d;
    38 
    39 
    40 
    41 int main() {
    42     //freopen("data.out", "w", stdout);
    43     //freopen("data.in", "r", stdin);
    44     //cin.sync_with_stdio(false);
    45     cin >> n >> k >> d;
    46     bool flag = false;
    47     int tmp = 1;
    48     for (int i = 0; i <= d; ++i) 
    49     if (tmp < n) tmp *= k;
    50     else {
    51         flag = true;
    52         break;
    53     }
    54     if (!flag) {
    55         cout << -1 << endl;
    56         return 0;
    57     }
    58     int jz = 0;
    59     for (int i = 2; i <= n; ++i) {
    60         jz = 1;
    61         for (int j = 1; j <= d; ++j) {
    62             ret[i][j] = (ret[i - 1][j] + jz) % k;
    63             if (ret[i][j] < ret[i - 1][j]) jz = 1;
    64             else jz = 0;
    65         }
    66     }
    67     for (int i = 1; i <= d; ++i) {
    68         for (int j = 1; j < n; ++j) {
    69             printf("%d ", ret[j][i] + 1);
    70         }
    71         printf("%d
    ", ret[n][i] + 1);
    72     }
    73     return 0;
    74 }
  • 相关阅读:
    windows XP 下的DTRACE 跟踪 学习
    copy to tmp table
    快麦
    SQL SERVER BOOK
    启锐电子面单驱动
    grep---find
    mysql中kill掉所有锁表的进程
    sqlserverinternals.com
    从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA
    解析MYSQL BINLOG二进制格式
  • 原文地址:https://www.cnblogs.com/yeahpeng/p/3927987.html
Copyright © 2011-2022 走看看