CCF201809-4 再卖菜(100分)【DFS】
试题编号: 201809-4
试题名称: 再卖菜
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。
第一天,每个商店都自己定了一个正整数的价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自己的价格。具体的,每家商店都会将第二天的菜价设置为自己和相邻商店第一天菜价的平均值(用去尾法取整)。
注意,编号为1的商店只有一个相邻的商店2,编号为n的商店只有一个相邻的商店n-1,其他编号为i的商店有两个相邻的商店i-1和i+1。
给定第二天各个商店的菜价,可能存在不同的符合要求的第一天的菜价,请找到符合要求的第一天菜价中字典序最小的一种。
字典序大小的定义:对于两个不同的价格序列(a1, a2, …, an)和(b1, b2, b3, …, bn),若存在i (i>=1), 使得ai<bi,且对于所有j<i,aj=bj,则认为第一个序列的字典序小于第二个序列。
输入格式
输入的第一行包含一个整数n,表示商店的数量。
第二行包含n个正整数,依次表示每个商店第二天的菜价。
输出格式
输出一行,包含n个正整数,依次表示每个商店第一天的菜价。
样例输入
8
2 2 1 3 4 9 10 13
样例输出
2 2 2 1 6 5 16 10
数据规模和约定
对于30%的评测用例,2<=n<=5,第二天每个商店的菜价为不超过10的正整数;
对于60%的评测用例,2<=n<=20,第二天每个商店的菜价为不超过100的正整数;
对于所有评测用例,2<=n<=300,第二天每个商店的菜价为不超过100的正整数。
请注意,以上都是给的第二天菜价的范围,第一天菜价可能会超过此范围。
问题链接:CCF201809-4 再卖菜
问题简述:(略)
问题分析:用DFS来解决,需要剪枝来避免重复搜索。
程序说明:(略)
参考链接:(略)
题记:原始代码来自仙客传奇团队。
100分的C++语言程序如下:
/* CCF201809-4 再卖菜 */#include <bits/stdc++.h>using namespace std;const int P = 100 + 5;
const int N = 300 + 1;
int n, a[N], b[N], vis[N][P][P];void dfs(int d)
{if (d == n + 1) {if (b[n] != (a[n-1] + a[n]) / 2) return;cout << a[1];for (int i = 2; i <= n; i++)cout << " " << a[i];cout << endl;exit(0);} else {for (a[d] = 3 * b[d - 1] - a[d - 1] - a[d - 2];a[d] <= 3 * b[d - 1] + 2 - a[d - 1] - a[d - 2]; a[d]++)if (a[d] > 0 && vis[d][a[d]][a[d - 1]] == 0) {vis[d][a[d]][a[d - 1]] = 1;dfs(d + 1);}}
}int main()
{std::ios::sync_with_stdio(false);std::cin.tie(NULL);cout.tie(NULL);cin >> n;for (int i = 1; i <= n; i++) cin >> b[i];memset(vis, 0, sizeof vis);for(a[1] = 1; a[1] <= 2 * b[1]; a[1]++)for(a[2] = 2 * b[1] - a[1]; a[2] <= 2 * b[1] + 1 - a[1]; a[2]++)if (a[2] > 0) dfs(3);return 0;
}
CCF201809-4 再卖菜(100分)【DFS】相关推荐
- CCF201809-4 再卖菜
问题描述: 试题编号: 201809-4 试题名称: 再卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一 ...
- [差分约束] AcWing-393 雇佣收银员 AcWing-2128 狡猾的商人 AcWing-3265 再卖菜
差分约束的大概样子 (大概) 差分约束一般是由特殊的n元一次不等式组组成的,它包含N个变量X1-Xn和M个约束条件,而且每个约束条件都是由两个变量做差组成的,形如,其中的ck是常数,它需要我们找到一组 ...
- 180904 再卖菜 ccf
思路 dfs+去重 关键 满分的关键在于不同的前缀可能会遇到相同的情况,要直接排除这些情况,避免重复计算(单纯dfs只有80分) 实现 这里采用数组f来记录各种情况,通过traceback函数回溯 1 ...
- CCF 差分约束--201809再卖菜
问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个正整数的价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己 ...
- CCF201809-4 再卖菜
问题描述: AC代码: 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include ...
- [csp-201809-4]再卖菜 差分约束or记忆化搜索
先更新第一个做法:差分约束 转化成最长路,求出的每一个解是满足差分方程的最小值 spfa求最短路 对于边(x->y) 有: 1 if(dis[y] > dis[x] + a[i].d) d ...
- CSP认证201809-4 再卖菜[C++题解]:差分约束、前缀和
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 对于a0,a1,...,ana_0, a_1,...,a_na0,a1,...,an,经过计算相邻的数的平均值得到b0,b1, ...
- 用计算机写试卷反思,100分试卷反思怎么写
当我们考得了100分或者达不到100分,就会反思这次我们到底是怎么才考得了100分或者因为因为考不到100分,下次我还能不能再继续考100分,为此学习啦小编为大家整理了几篇考了100分试卷的反思范文, ...
- ## CSP认证 201809-1 卖菜(C语言)(100分)
试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店 ...
最新文章
- awk命令中执行多条shell命令
- Python技术分享:numpy库的安装教程
- 程序员面试不完全指南
- 2017计算机考试题上机,2017年计算机二级上机考试试题及答案
- zoj3494BCD Code(ac自动机+数位dp)
- php 设置页面最大执行时间 set_time_limit max_execution_time
- 新建连接mysql编码选择_redhat5.432位安装mysql5.6.17数据库及创建数据库实例、配置编码...
- Web前端可以转行做游戏吗?
- 企业级NFS网络文件共享服务
- Linux 安装Python3
- python建模用什么库_Python 建模库介绍 - 树懒学堂
- 怕被发垃圾邮件?用临时邮箱来注册账号
- 关于Excel的几点高级应用
- 我的第一次diy装机记录——小白的装机篇
- 基于C语言设计的一个医院叫号系统
- 布局练习——网易新闻
- 资金核对平台的发展历程
- 推荐8个值得推荐的神器软件和网站
- BI神器Power Query(20)-- PQ自适应目录
- C#应用程序与MATLAB联合编程
热门文章
- DevExpress统计图TextPattern说明
- 关于ArcObjects图层编辑的读写编辑锁
- 读程序员网游专题云风的文章有感
- JS中prototype、__proto__以及原型链
- 应用随机过程张波商豪_学术简报五相逆变器非正弦双随机空间矢量脉宽调制策略...
- android百度定位代码,android开发:百度地图及定位的演示代码
- 阿里php开发规范,【PHP开发规范】老生常谈的PSR开发规范你懂多少?
- mimes.php,php – Laravel文件上传验证
- 代理模式 委派模式 策略模式_委派模式和策略模式
- OpenCV精进之路(二十三):实例——Bag of Features(BoF)图像分类实践