CCF(再卖菜60分)爆搜+记忆化搜索+差分约束

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;
}

原文地址:https://www.cnblogs.com/GarrettWale/p/11428882.html

时间: 2024-10-09 17:56:10

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

HDU--1142--A Walk Through the Forest--深广搜/DP/最短路径/记忆化搜索

A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5948    Accepted Submission(s): 2191 Problem Description Jimmy experiences a lot of stress at work these days, especial

hdu1579 Function Run Fun(深搜+记忆化)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1579 Problem Description We all love recursion! Don't we? Consider a three-parameter recursive function w(a, b, c): if a <= 0 or b <= 0 or c <

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

题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的分值.//解题思路:记忆化搜索,状态出来就非常水,dp[fl][fr][sl][sr][flag],//表示第一堆牌上边取到fl,下面取到fr,同样sl,sr为第二堆牌,flag为第几个人在取.//如果是第一个人,dp既要尽量大,如果是第二个人,那么肯定尽量小. http://www.2cto.co

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

先更新第一个做法:差分约束 转化成最长路,求出的每一个解是满足差分方程的最小值 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N=3100; 5 struct node{ 6 int x,y,d,next; 7 }a[2*N]; 8 int n,al,first[N],b[N],s[N]; 9 bool vis[N]; 10 queue<int> q; 11 12 void ins(int x,int

ccf 201809-4 再卖菜

这题一开始不知道剪枝这种操作,只会傻傻地dfs. 然后dfs递归写80分超时,非递归写70分超时(纳尼?我一直以为非递归算法在时间上会更优秀一些,为什么会这样?!!) 剪一下枝就都能过了 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 typedef long long ll; 6 int a[300],b[300]; 7 bool vis[30

CCF-再卖菜-20180904

可以说这道题出的不错,我是用动态规划做的 ( 严谨点说应该是记忆化搜索,我是递归版本,非递归我不会啊... 题意分析: x1  x2  x3 已知 x1+x2=t1或t1+1 x1+x2+x3=t2 | t2+1 | t2+2 x2+x3=t3 |  t3+1 如果我们从x1=1 开始搜索, 那么组成了一颗搜索树 每次有三次分叉, 一共有100层  3^100 太吓人了 还好的是 t1,t2,t3 数据规模不大 我们可以合并很多重复的状态,经行记忆化搜索 那么这道题核心就在于对状态的定义了: 我

有一种恐怖,叫大爆搜

到目前这个阶段,大爆搜做了好几个,有必要做一下小的总结了. 玛雅游戏:出门左转 http://www.cnblogs.com/Loser-of-Life/p/7247413.html的A 斗地主:出门右转http://www.cnblogs.com/Loser-of-Life/p/7259858.html的B 天鹅会面:出门直行http://www.cnblogs.com/Loser-of-Life/p/7295770.html的A 引水入城:链接:http://cogs.pro/cogs/pr

关于爆搜

关于爆搜 ? (这还用说,讲者太菜了) ? 爆搜通常是没有思路时一个 优秀 玄学的解题方法,但同样是搜索,我们所的分数却相差甚远,即搜索的优化问题; 前言 ? 这是很基础的东西,这里只作为回顾. ? 讲着实力不足,请不要D讲者; BFS ? BFS,广度优先搜索,用于逐层拓展的工具,可以有效地通过比较同一层之间的结果进行有效地减枝,而相比之下DFS的减枝就比较玄学,故能用BFS时,BFS的时间复杂度一般比DFS要低很多; ? BFS也是SPFA的实现基础 虽然SPFA已经死了 . ? BFS有双

富二代用微信卖菜,结果悲剧

在黄凯偌大的办公桌上,一只干巴巴的苹果甚是惹眼:拳头大小,表皮发黄,一道道皱褶就像岁月的沟壑,透出点沧桑的味道. "这是我过年时放在这里的,虽然脱水严重,但一点没有腐烂.明显用过防腐剂,还打过蜡."面对记者,1989年出生的黄凯侃侃而谈,"我每天对着这个苹果,就是希望用它来提醒自己,要做安全放心的产品." 10天前,微信卖菜平台正式上线.作为投资者,黄凯打算用四五年时间,改变和他同样年轻的一批金华人的生活习惯:微信点点,健康的蔬菜水果和厨房佐料,就会自动送上门来.