Buy Fruits-(构造)
https://ac.nowcoder.com/acm/contest/847/C
输入描述:
仅一行一个整数 n(1≤n≤100000) n(1≤n≤100000)。
输出描述:
输入
8
输出
6 3 7 2 0 5 1 4
说明
输入
10
输出
8 4 9 1 3 0 6 2 5 7
说明
答案可能不止一种。
解题:
起点是0,传送到(n-1)号店,再传送到1号店,再传送到n-2号店,再传送到2号店,以此类推,直到n/2传送回0。
数组jump存储传送到的店号,数组存储传送门的编号,i表示当前水果店
(i+door[i])%n=jump[i]
逆推door[i]:
(i+door[i])/n=x;
door[i]=x*n+jump[i]-i;
手撸n为偶数的情况,前后跳。
比如:n=8
下标i: 0 1 2 3 4 5 6 7
jump[i]:7 6 5 4 0 3 2 1
door[i]:7 5 3 1 0 6 4 2
显然n/2前面的x都为0,n/2后面的x都为1,n/2特判。
手撸n为奇数的情况,举例n=3,5,撸不出来。直接输出-1。
提交一发wa后想到特判n=1的情况。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int n;
int jump[];///传送到的店号
int door[];///传送门的编号 int main()
{
while(cin>>n)
{
if(n==)
printf("0\n");
else if(n%)
printf("-1\n");
else
{
int len=n/;
for(int i=;i<n;i++)
{
if(i<len)
{
jump[i]=n--i;
}
else if(i==len)
jump[i]=;
else
jump[i]=n-i;
}
for(int i=;i<n;i++)
{
if(i<len)
{
door[i]=jump[i]-i;
}
else if(i==len)
door[i]=;
else
door[i]=n+jump[i]-i; }
/*打印观察规律
for(int i=0;i<n;i++)
if(i!=n-1)
printf("%d ",i);
else
printf("%d\n",i);
for(int i=0;i<n;i++)
if(i!=n-1)
printf("%d ",jump[i]);
else
printf("%d\n",jump[i]);
*/
for(int i=;i<n;i++)
if(i!=n-)
printf("%d ",door[i]);
else
printf("%d\n",door[i]);
}
}
return ;
}
Buy Fruits-(构造)的更多相关文章
- Can peel peel solve pesticide problem
Can peel peel solve pesticide problem? Middle peasants medicinal modern agriculture more and more, t ...
- Codeforces Round #381 (Div. 2) A B C 水 构造
A. Alyona and copybooks time limit per test 1 second memory limit per test 256 megabytes input stand ...
- CodeForces 12C Fruits
Fruits Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- 魔法方法:构造和析构 - 零基础入门学习Python041
魔法方法:构造和析构 让编程改变世界 Change the world by program 构造和析构 什么是魔法方法呢?我们来系统总结下: - 魔法方法总是被双下划线包围,例如__init__ - ...
- Pronunciation Guide for 25 Common Fruits
Pronunciation Guide for 25 Common Fruits Share Tweet Share Tagged With: Vocabulary Words Know how to ...
- 解题报告Best Time to Buy and Sell Stock with Cooldown
题目 Say you have an array for which the ith element is the price of a given stock on day i. Design an ...
- UVA 1151 Buy or Build MST(最小生成树)
题意: 在平面上有n个点,要让所有n个点都连通,所以你要构造一些边来连通他们,连通的费用等于两个端点的欧几里得距离的平方.另外还有q个套餐,可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相 ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- 一步步构造自己的vue2.0+webpack环境
前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...
随机推荐
- Linux命令中service的用法
用途说明 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等.相关的命令还包括chkconfig.ntsysv等,c ...
- Python之路【第二十五篇】:数据库之pymysql模块
数据库进阶 一.pymysql模块 pymysql是Python中操作Mysql的模块,其使用的方法和py2的MySQLdb几乎相同. 二.pymysql模块安装 pip install pymysq ...
- Go在windows下执行命令行指令
需要在Go写的服务里面调用命令行或者批处理,并根据返回的结果做处理. 在网上搜索了一翻,验证成功,现记录如下: cmd := exec.Command("cmd") // cmd ...
- FusionInsight大数据开发---MapReduce与YARN应用开发
MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...
- 论文笔记:LightGBM: A Highly Efficient Gradient Boosting Decision Tree
引言 GBDT已经有了比较成熟的应用,例如XGBoost和pGBRT,但是在特征维度很高数据量很大的时候依然不够快.一个主要的原因是,对于每个特征,他们都需要遍历每一条数据,对每一个可能的分割点去计算 ...
- Entity Framework 学习系列(2) - MySql Database First 开发方式
目录 写在前面 环境 下载MySQL连接工具 创建Databse First 1.创建控制台 2.创建数据库 3.安装 MySQL.Data 和MySQL.Data.Entity 3.在项目中添加数据 ...
- kubernetes(k8s)集群安装calico
添加hosts解析 cat /etc/hosts 10.39.7.51 k8s-master-51 10.39.7.57 k8s-master-57 10.39.7.52 k8s-master-52 ...
- 理解 Kubernetes 的亲和性调度
这次给大家介绍下k8s的亲和性调度:nodeSelector.nodeAffinity.podAffinity.Taints以及Tolerations用法. 一般情况下我们部署的 POD 是通过集群自 ...
- Spring Boot 的自动配置探究、自制一个starter pom
//TODO @Conditional @Condition
- vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例”解决方案
vs2017添加引用提示“找不到 Microsoft.VisualStudio.Shell.Interop.IVsReferenceManager 服务的实例” 不知道是不是安装时候的问题?解决方法: ...