这个题目说的是有n个人,有k辆巴士,有m天,每天都要安排n个人坐巴士(可以有巴士为空),为了使得这n个人不会成为朋友,只要每两个人在这m天里坐的巴士至少一天不相同即可。

要你求是否有这样的安排方法,如果有,输出具体的安排方案,每个人每天坐那辆车。

挺不错的题目,我压根没想到。。真的,虽然知道之后惊呼原来如此简单,但一开始确实想岔了。现在一看这题目,很清晰,每个学生在这m天中坐的车辆,就会形成一个由m个数字组成的序列(数字为1-k代表巴士编号),按照题目要求,只需要学生的那个序列是独一无二的即可。

那么,我们只要把题意转化为 求n个不同的m个数字组成的序列(只要有一个数字不同即为不同),那么我们把这个序列,认为是一个 m位的k进制的数不就行了,每次从111111.。

开始枚举,一直枚举到kkkkkk。。。结束啊啊。。。哎,真的很机智的题诶

当然一开始可以直接乘一下判断m个k进制的数是否>=n,不满足直接输出-1,满足就用类似高精度加法把序列求出来再输出即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std;
LL n,k,d;
int ans[][];
int main()
{
while (scanf("%I64d%I64d%I64d",&n,&k,&d)!=EOF)
{
LL tmp=k;
for (LL i=;i<=d;i++){
tmp=tmp*k;
if (tmp>=n) break;
}
if (tmp<n){
puts("-1");
continue;
}
for (int i=d;i>=;i--) ans[][i]=;
ans[][d]=;
for (int i=;i<=n;i++){
int c=;
ans[i][d]=ans[i-][d]+;
if (ans[i][d]>k){ans[i][d]=;c++;}
for (int j=d-;j>=;j--){
ans[i][j]=ans[i-][j]+c;
if (ans[i][j]>k){
c=;
ans[i][j]=;
}
else c=;
}
}
for (int i=;i<=d;i++){
printf("%d",ans[][i]);
for (int j=;j<=n;j++){
printf(" %d",ans[j][i]);
}
puts("");
}
}
return ;
}

Codeforces 459C Pashmak and Buses 机智数学题的更多相关文章

  1. CodeForces - 459C - Pashmak and Buses

    先上题目+: C. Pashmak and Buses time limit per test 1 second memory limit per test 256 megabytes input s ...

  2. codeforces 459C Pashmak and Buses 解题报告

    题目链接:http://codeforces.com/problemset/problem/459/C 题目意思:有 n 个 students,k 辆 buses.问是否能对 n 个students安 ...

  3. codeforces 459C Pashmak and Buses(模拟,组合数A)

    题目 跑个案例看看结果就知道了:8 2 3 题目给的数据是 n,k,d 相当于高中数学题:k个人中选择d个人排成一列,有多少种不同的方案数,列出其中n中就可以了. #include<iostre ...

  4. CodeForces 459C Pashmak and Buses(构造)题解

    题意:n个人,k辆车,要求d天内任意两人都不能一直在同一辆车,能做到给出构造,不能输出-1 思路:我们把某一个人这d天的车号看成一个d位的数字,比如 1 1 2 3代表第一天1号车.第二天1号车.第三 ...

  5. cf 459c Pashmak and Buses

    E - Pashmak and Buses Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I ...

  6. codeforces #261 C题 Pashmak and Buses(瞎搞)

    题目地址:http://codeforces.com/contest/459/problem/C C. Pashmak and Buses time limit per test 1 second m ...

  7. CF459C Pashmak and Buses (构造d位k进制数

    C - Pashmak and Buses Codeforces Round #261 (Div. 2) C. Pashmak and Buses time limit per test 1 seco ...

  8. cf459C Pashmak and Buses

    C. Pashmak and Buses time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. codeforces 459D - Pashmak and Parmida&#39;s problem【离散化+处理+逆序对】

    题目:codeforces 459D - Pashmak and Parmida's problem 题意:给出n个数ai.然后定义f(l, r, x) 为ak = x,且l<=k<=r, ...

随机推荐

  1. 新建Django 项目完整流程

    1) 在桌面或者其他文件 新建项目名称 (mkdir 新建文件夹) 2)进入文件夹  pipenv --python3(用命令提示粘贴复制, 自己这样写经常有问题) 3) 启动虚拟环境  pipenv ...

  2. JavaScript中的变量定义和声明

    变量声明旨在分配内存,定义为这个分配的内存分配一个值.

  3. SpingBoot学习(一)

    一.概述 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包, ...

  4. #写一个登陆的程序 ( 1.最多登录失败3次 2.登陆成功,提示欢迎XX登录,今天的日期是XXX,程序结束 3.要检验输入是否为空,账户和密码不能为空 4.账户不区分大小写)

    import datetime import MySQLdb today=datetime.datetime.today() username=str(input('请输入账户:')) passwd1 ...

  5. burpsuite下载安装及基本配置

    jdk安装 根据电脑安装对应jdk版本 点此下载jdk 下载完成得到如下exe文件 配置Java环境变量 计算机右键-->属性-->高级系统设置-->环境变量 点击环境变量--> ...

  6. [Android]ListView中分割线的设置

    1.在布局文件中ListView元素中通过属性设置 android:divider="#fffff"  分割线颜色 android:dividerHeight="1px& ...

  7. jumperserver安装

    参照官网地址进行安装 https://jumpserver.readthedocs.io/zh/master/setup_by_centos.html 在安装的时候踩了一个坑 Python 模块安装中 ...

  8. Outer()函数

    转载:https://bbs.pinggu.org/thread-7078237-1-1.html R语言中的outer()函数,名为内积函数,但是他执行的功能并不是解析几何中的内积.那该函数到底发挥 ...

  9. Android:用代码修改一行文字中某几个字的颜色

    TextView changeVideoQualityTxt = (TextView) rootView.findViewById(R.id.enter_wireless_display_txt); ...

  10. sklearn学习笔记(1)--make_blobs函数及相应参数简介

    make_blobs方法: sklearn.datasets.make_blobs(n_samples=100,n_features=2,centers=3, cluster_std=1.0,cent ...