201809-4

再卖菜

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int n;
int a[303];
int b[303];
bool flag=false;
void dfs(int k,int now,int pre,int pre1){//已经遍历到第k个了.pre表示前1个,pre1表示前两个
if(flag)
return;
if(k>n){
return;
}
if(k==n){
if((now+pre+pre1)/3!=a[k-2])
return;
else b[k-2]=pre;
if((now+pre)/2!=a[k-1])
return;
else {
b[k-1]=now;
flag=true;
return;
}
}else if(k==2){
if((now+pre)/2!=a[k-2])
return;
else b[k-2]=pre;
}else if(k!=1){
if((now+pre+pre1)/3!=a[k-2])
return;
else b[k-2]=pre;
}
for(int i=1;i<=298;i++){
dfs(k+1,i,now,pre);
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
dfs(0,0,0,0);
for(int i=0;i<n-1;i++){
cout<<b[i]<<" ";
}
cout<<b[n-1]<<endl;
//system("pause");
return 0;
}

CCF(再卖菜60分)爆搜+记忆化搜索+差分约束的更多相关文章

  1. ccf再卖菜

    https://blog.csdn.net/imotolove/article/details/82777819 记忆化搜索,还不太理解..

  2. 问题 C: 调酒壶里的酸奶 广搜或深搜+记忆化搜索

    问题 C: 调酒壶里的酸奶 时间限制: 1 Sec  内存限制: 128 MB提交: 284  解决: 97[提交] [状态] [命题人:外部导入] 题目描述 最近小w学了一手调酒的技巧,这么帅的操作 ...

  3. ccf 再买菜 搜索 dfs

    //递推关系式:(b[n-1]+b[n]+b[n+1])/3=a[n] //所以b[n+1]=3*a[n]-b[n-1]-b[n],或b[n+1]=3*a[n]-b[n-1]-b[n]+1,或b[n+ ...

  4. CCF-CSP题解 201809-4 再卖菜

    碎碎念..近视加老花,还以为第二天除了第二家范围在100以内别的都不确定,于是x**算的记搜复杂度超时了.还鼓捣着什么差分区间最长路,虽然有大神用差分区间做出来了,然而自己并没有看懂. 其实就是一个记 ...

  5. 再谈记忆化搜索 HDU-1078

    最近做DP题目,发现无论是LCS,还是有些题目涉及将动态规划的路径打印出来,而且有时候还要按格式输出,这个时候,记忆化搜索显得尤其重要,确实,记忆化搜索使用优化版本的动态规划,用起来思路清晰,非常方便 ...

  6. HDU 4597 Play Game(记忆化搜索,深搜)

    题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...

  7. CCF 201809-1 卖菜

    题目: 问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己 ...

  8. [csp-201809-4]再卖菜 差分约束or记忆化搜索

    先更新第一个做法:差分约束 转化成最长路,求出的每一个解是满足差分方程的最小值 spfa求最短路 对于边(x->y) 有: if(dis[y] > dis[x] + a[i].d) dis ...

  9. ccf 201809-4 再卖菜

    这题一开始不知道剪枝这种操作,只会傻傻地dfs. 然后dfs递归写80分超时,非递归写70分超时(纳尼?我一直以为非递归算法在时间上会更优秀一些,为什么会这样?!!) 剪一下枝就都能过了 #inclu ...

随机推荐

  1. Codeforces Round #695 (Div. 2) C. Three Bags (贪心,思维)

    题意:有三个背包,每个背包里都用一些数字,你可以选择某一个背包的数字\(a\),从另外一个背包拿出\(b\)(拿出之后就没有了),然后将\(a\)替换为\(a-b\),你可以进行任意次这样的操作,使得 ...

  2. Codeforces Round #631 div1C(或者div2E) Drazil Likes Heap 题解

    题目链接:https://codeforces.com/contest/1329/problem/C 或者:https://codeforces.com/contest/1330/problem/E ...

  3. 【noi 2.6_2000】&【poj 2127】 最长公共子上升序列 (DP+打印路径)

    由于noi OJ上没有Special Judge,所以我是没有在这上面AC的.但是在POJ上A了. 题意如标题. 解法:f[i][j]表示a串前i个和b串前j个且包含b[j]的最长公共上升子序列长度 ...

  4. 2019 Multi-University Training Contest 5——permutation 2

    传送门 题意: t组输入,之后每组例子有三个数n.x.y代表在一个以x为开头y为结尾的长为n的数组里面,开头和结尾数据已经固定,让你从1--n中找其他数据填入数组中 (每个数据不能重复使用),使它满足 ...

  5. CF1462-E1. Close Tuples (easy version)

    题意: 给出一个由n个数字组成的数组,先让你找出符合下列条件的子集的数量: 每个子集包含的数字个数为m = 3 这三个数字中的最大值减去最小值不超过k = 2 思路: 首先对给出的数组进行排序,现在假 ...

  6. 梨子带你刷burp练兵场(burp Academy) - 服务端篇 - Sql注入配套漏洞讲解笔记

    目录 Sql注入 什么是Sql注入呢? Sql注入有哪些例子? 检索隐藏数据 打破应用逻辑 利用Union进行跨库查询 如何确定利用Union的注入攻击所需的列数呢? 如何确定Union的查询结果中哪 ...

  7. forEachRemaining()方法的用法

    forEachRemaining()是java1.8新增的Iterator接口中的默认方法对于这个方法,官方文档是这么描述的:Performs the given action for each re ...

  8. 洛谷p2216 多次单调队列,扫描矩阵中的最大值减去最小值最的固定大小子矩阵

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; int ...

  9. Laravel Homestead 安装 使用教程详解!

    1 Laravel Homestead 1 安装: 1 下载: http://www.vagrantup.com/downloads.html 1 配置: 1 1 测试: 1 1 ********** ...

  10. Android 如何设置 WebView 的屏幕占比

    Android 如何设置 WebView 的屏幕占比 由于 Android 适用于具有各种屏幕尺寸和像素密度的设备,因此您在设计网页时应将这些因素纳入考虑范围,以便您的网页始终以合适的尺寸显示. We ...