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 ...
随机推荐
- centos7修改宝塔面板端口6666无法访问
相信你看到我这篇随笔的时候已经查阅了不少资料了吧 先看看我和我朋友的对话吧 原因,想修改宝塔默认面板端口8888为6666,用的阿里云服务器,并且在安全组添加了6666端口 然后无法访问,想到linu ...
- k8s-Namespace(命名空间)
k8s-Namespace(命名空间) Namespace(命名空间)是Kubernetes系统中的另一个非常重要的概念,通过将系统内部的对象“分配”到不同的Namespace中,形成逻辑上分组的不同 ...
- Oracel 数据库表操作
表结构操作 创建表 create table tableName (id varchar2(36) primary key, name varchar2(36), age number(12,2), ...
- arguments 使用
function test(){ var paramsNum = arguments.length; var sum = 0; for(var i = 0;i<paramsNum;i++){ c ...
- Asp.Net 技术
Asp.Net 技术Nuget 管理器Spring.NET 框架Spring.core 包 微服务Consul .NetCore 框架:Spring.net Nhibernate 框架Dapper.n ...
- 在.Net Core中使用Swagger制作接口文档
在实际开发过程中后台开发人员与前端(移动端)接口的交流会很频繁.所以需要一个简单的接口文档让双方可以快速定位到问题所在. Swagger可以当接口调试工具也可以作为简单的接口文档使用. 在传统的asp ...
- DOM创建节点
1.DOM--document object model 常用的节点类型: 元素节点:(标签) 属性节点:(标签里的属性) 文本节点:(文本节点) 2,document有个属性叫nodetype,返回 ...
- Java 8 in Action
https://www.cnblogs.com/HelloDeveloper/p/11404523.html /** * @param args */public static void main(S ...
- 指定细则 Small
根据HTML5,small表示细则一类的旁注(side comment). “通常包括免责声明.注意事项.法律限制.版权信息等.有时我们还可以用它来表示署名,或者满足许可要求.” small通常是行内 ...
- Shell 选择排序
举例 #!/bin/bash echo "please input a number list:" read -a arrs for((i=0;i<${#arrs[@]};i ...