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 ...
随机推荐
- 带着canvas去流浪系列之八 碰撞【华为云技术分享】
[摘要] canvas动画-碰撞仿真 示例代码托管在:http://www.github.com/dashnowords/blogs 经过前面章节相对枯燥的练习,相信你已经能够上手canvas的原生A ...
- 一起来学习.net core程序使用中介者模式:MediatR插件
中介者模式是一种常见的设计模式,旨再降低程序的耦合性,因为传统的三层模式层层之间需要显示的调用,必须上层依赖下层,耦合性很高,为了解耦,将所有的指令单独放在一个位置处理,其他位置均通过这个位置来间接的 ...
- C#子线程执行完后,调用主线程的方法
private delegate void CheckVersionNumber_CallBack(string str);//定义一个为委托 用于 检测版本 //检测版本private void m ...
- 《MySQL实战45讲》学习笔记1——MySQL的基础架构
在<极客时间>订阅了<MySQL实战45讲>专栏,总觉得看完和没看一样
- Win10安装IIS并配置ASP.NET 4.0
这几天新购置了电脑家用,自家电脑上上了win10+Ubuntu.解决了双系统的一些坑之后,今天准备给win10装IDE了(虽然想在Ubuntu下搞搞React/Python之类的,但我骨子里还是个.N ...
- SpringMVC+EasyUI实现页面左侧导航菜单
1. 效果图展示 2. 工程目录结构 注意: webapp下的resources目录放置easyui和js(jQuery文件是另外的) 3. 代码 index.j ...
- ASP.NET CORE 中使用AutoMapper进行对象映射
ASP.NET CORE 中使用AutoMapper进行对象映射 1.什么是AutoMapper? AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DT ...
- Axios 各种请求方式传递参数(非axios api 请求方式)
get delete 方法较为不同 get请求方式将需要入参的数据作为 params 属性的值,最后整体作为参数传递 delete请求方式将将需要入参的数据作为 data 属性的值,最后整体作为参数传 ...
- 分享整理vue.js在日常工作中用到的组件,帮助你在vue应用中快速开发
Vue-Echarts vue-echarts是封装后的vue插件, 基于 ECharts v4.0.1+ 开发,依赖 Vue.js v2.2.6+,功能一样的只是把它封装成vue插件 这样更方便以v ...
- FreeRTOS 任务通知模拟事件标志组
实验 //设置事件位的任务 void eventsetbit_task(void *pvParameters) { u8 key; while(1) { if(EventGroupTask_Handl ...