CSP 201809-4 再卖菜 dfs

news/2024/6/17 18:23:06 标签: c++, 深度优先

原题链接:CSP 201809-4 再卖菜
学习博客:ccf再卖菜

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=310;
int t;

int a[N],b[N];
bool f[N][N][N];//储存状态信息,也就是dfs的n,x,y
//分别是搜到第n天,b[n-1](求到了第n-1天的菜价),b[n](求到了第n天的菜价)
void dfs(int n,int x,int y)
{
    if(f[n][x][y])  return;
    f[n][x][y]=1;
    if(n==t-1)//最后一天菜价特殊处理,所以n只用等于t-1就够了
    {
        if((3*a[n]-x)/2==a[t] || (3*a[n]-x+1)/2==a[t] || (3*a[n]-x+2)/2==a[t])
        {
            for(int i=1;i<=n;i++)
                cout<<b[i]<<" ";
            for(int i=0;i<3;i++)
            {
                if((3*a[n]-x+i)/2==a[t])
                {
                    cout<<(3*a[n]-x-y+i);
                    exit(0);
                }
            }
        }
        return ;
    }
    for(int i=0;i<3;i++)
    {
        b[n+1]=3*a[n]-x-y+i;
        if(b[n+1]>=1)
            dfs(n+1,y,b[n+1]);
    }
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0); std::cout.tie(0);
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=2*a[1];i++)
    {
        b[1]=i,b[2]=2*a[1]-i;
        dfs(2,i,b[2]);
        //b[1]=i,b[2]=2*a[1]-i+1;
        //dfs(2,i,b[2]);
    }
    return 0;
}

http://www.niftyadmin.cn/n/1265111.html

相关文章

漏洞利用原理(初级)

其他类型的软件漏洞格式化串漏洞printf中的缺陷用printf读取内存数据用printf向内存写数据格式化串漏洞的检测和防范SQL注入攻击SQL注入原理攻击PHPMySQL网站攻击ASPSQL Sever网站注入攻击的检测与防范其他注入方式Cookie注入&#xff0c;绕过马奇诺防线Xpath注入XSS攻击脚本“…

CSP 201809-5 线性递推式 20分

原题链接&#xff1a;CSP 201809-5 线性递推式 #include <bits/stdc.h> using namespace std; const int N1e510; const int MAXN2*N; const int mod998244353;long long k[N]; long long a[MAXN]; int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(…

蓝桥杯 回文日期 emmm

原题链接&#xff1a;蓝桥杯 回文日期 emmmm这道题&#xff0c;就是有那么一点点坑。。。 首先要判断数字是否满足日期格式&#xff08;原来闰年2月才是29天&#xff0c;非闰年2月是28天&#xff0c;我给记反了。。。&#xff09; 然后肯定很多人看到对于所有评测用例&#xff…

蓝桥杯 数字三角形 dp

原题链接&#xff1a;蓝桥杯 数字三角形 对于题意中“向左下走的次数与向右下走的次数相差不能超过 1”的理解&#xff1a; 当n为奇数时&#xff0c;只有最后一行&#xff08;奇数个数&#xff09;的最中间一个数可以作为终点&#xff1b; 当n为偶数时&#xff0c;只有最…

漏洞利用原理(高级)

堆保护堆保护机制的原理攻击堆中存储的变量利用chunk重设大小攻击堆利用Lookaside表进行堆溢出参考文献堆保护机制的原理 微软在堆中添加的安全校验操作&#xff1a; PEB randomSafe Unlink&#xff1a;改写了操作双向链表的代码&#xff0c;在XP SP2后会提前验证堆块前向指针…

漏洞挖掘技术

漏洞挖掘技术简介漏洞挖掘概述动态测试技术SPIKE原理示例beSTORM静态代码审计参考文献漏洞挖掘概述 工业界主要采用Fuzz测试&#xff0c;Fuzz的主要目的是“crash”、“break”和“destroy”。 学术界则倾向于对源码进行静态分析&#xff0c;比如&#xff1a;数据流分析、类型…

关于逆向工程

关于逆向工程逆向工程代码逆向工程逆向分析的方法静态分析动态分析源代码、十六进制代码、汇编代码“打补丁”与“破解”参考文献逆向工程 逆向工程&#xff08;RE&#xff09;&#xff1a;一般指通过分析物体、设备或系统了解其结构、功能以及行为等&#xff0c;掌握其中的原…

IA-32寄存器基础

IA-32寄存器基础CPU寄存器基本程序运行寄存器通用寄存器段寄存器指令状态与控制寄存器指令指针寄存器参考文献CPU寄存器 寄存器&#xff1a;是CPU内部用来存放数据的小型存储区域 基本程序运行寄存器 通用寄存器 通用寄存器均为32位&#xff08;4字节&#xff09;&#xff…