首页 > 编程语言 >2024年GPLT团体程序设计比赛L2-D吉利矩阵题解

2024年GPLT团体程序设计比赛L2-D吉利矩阵题解

时间:2024-04-21 20:22:56浏览次数:29  
标签:剪枝 int 题解 矩阵 DFS 2024 L2 搜索 row

只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(IOI赛制),当时这道题是我不剪枝DFS拿了4分,压线拿铜牌!
考完试一做,发现是个大水题(bushi)
主要原理:DFS(深度优先搜索) + 剪枝
名言:学搜索核心就是学剪枝
废话不说了,见代码

点击查看代码
//原理:DFS + 剪枝
#include <bits/stdc++.h>
using namespace std;
int k,n;//k为要求的行列和,n为方格大小
int row[5];//row为已经填好数的某行的和
int col[5];//col同理
//神之一笔:剪枝.(1)如果n-1定了,最后一个不用管了,一定为k - row[x](列同理).(2)枚举可填数的时候可以限定范围,维护行列和不超过k
int ans;//记录答案
void DFS(int x,int y)//核心DFS
{
    if(y > n-1)//如果要换行了
    {
        x++;//换行
        y = 1;//重置y
    }
    if(x == n)//如果到了底行,进行特判(之前的行列和(左上角的n-1矩阵)满足<=k,但是不能保证最后的行列和<=k,故要特判)
    {
        //其实由数学推算:最后右下角的代表数是一致的,故sumr与sumc一个就够了,没观察出也没关系,两个不影响
        int sumr = 0,sumc = 0;//初始化为0
        for (int i = 1;i<=n-1;i++) sumc += (k - row[i]);//累加之前行
        for (int i = 1;i<=n-1;i++) sumr += (k - col[i]);//累加之前列
        if(sumc <= k&&sumr <= k) ans++;//如果<=k,答案合法,+1
        return;//切记,一定要返回
    }
    for (int i = 0;i<=k-row[x]&&i<=k-col[y];i++)//限制性枚举,维护左上角矩阵行列和<=k,记住从0开始
    {
        row[x] += i;//累加行
        col[y] += i;//累加列
        DFS(x,y+1);//递归搜索
        row[x] -= i;//删去
        col[y] -= i;//删去
    }
}
int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>k>>n;//输入
    DFS(1,1);//搜索
    cout<<ans<<"\n";//输出
    return 0;
}


好了,其实就是这么简单(bushi),这道题确实是练搜索剪枝的好题

标签:剪枝,int,题解,矩阵,DFS,2024,L2,搜索,row
From: https://www.cnblogs.com/cuijunjie18/p/18149439

相关文章

  • 2024年第九届CCCC团体程序设计天梯赛 游记
    Preface第一次打4C,不得不说中国大学生膀胱容量竞赛名不虚传下午一点半开始的比赛结果早上八点过就要起床去坐校车,结果起晚了早饭都没吃就被迫雨中冲刺了到了美丽的成信大后就开始消磨时间,和祁神来了把激情军旗,直接引来集训队十几人观战午饭竟然有中式自助,我直接狠狠炫了两盘,......
  • Atcoder ABC 350 全题解
    题外话别以为博主之前几场ABC都咕咕咕了,最近状态不好,这次ABC终于回来了(也有可能是题目变容易了,有图为证)P.S.请耐心看到最后!!否则后果自负!!!AB这年头谁不会AB啊当然有。不学OI的人。C考虑选择排序,依次将$1,2,3\cdots$与它们应该在的位置进行交换。那如果真的......
  • 题解:CF17D Notepad
    由于首位不能是\(0\),因此首位有\(b-1\)种可能性。其他\(n-1\)位有\(b^{n-1}\)种可能。因此这些数总计\((b-1)b^{n-1}\)每页\(c\)个数,求最后一页有多少个数,即求\(\text{ans}=(b-1)b^{n-1}\quad\bmodc\)注意到题目中\(b,n\)都非常大,采用扩展欧拉定理进行降......
  • [ZJOI2019] 语言 题解
    不愧是\(ZJOI\),《最可做的一道题》都让人一头雾水……首先将问题转化到链上。可以将总共的组数转化为每个点可以到达的城市。明显给每个点建一棵动态开点线段树,维护可以和他通商的点。很明显,可以通商的点的标号连续的一段。我们可以将可以将每一次传播语言的工作当作区间修改......
  • Algorius Net Viewer 2024.2.1 (Windows) - 网络可视化、管理、监控和清点
    AlgoriusNetViewer2024.2.1(Windows)-网络可视化、管理、监控和清点Comprehensivesoftwareproductforvisualizing,administering,monitoring,andinventoryingcomputersnetworkofanylevel请访问原文链接:AlgoriusNetViewer2024.2.1(Windows)-网络可视化......
  • 2024年4月21日15:14:45 一些update
    可能后面有空的话会写一些长的吧hhh自从之前2022年底济南打完以后就退役了(还是得看看脚下的六便士...再不搞科研就要没学上了),后面都是一些小打小闹比如校赛Xtreme什么的会去玩玩,今年就纯去当志愿者了hhh 现在不出意外的话应该要去neu读phd了本来以为做了科研以后就没有机会再......
  • 2024最新云服务器优惠大全,免费一年云服务器!
    本人推荐的服务器全部都是大品牌,不存在跑路等!所有的小品牌全部都删除了,包括什么9元一年主机,那都不靠谱!还有其他大品牌,号称优惠,但是一个月好几百,也都删除了,真实优惠!! 1:京东云服务器,一年2g2h3m云服务器,只要50元!3年只要296!详情点击链接查看!京东云购买链接:https://tool.lengle......
  • 2024天对程序设计天梯赛
    L1-1编程解决一切编程解决一切print('Problem?TheSolution:Programming.')L1-2再进去几个人再进去几个人a,b=map(int,input().split())print(b-a)L1-3帮助色盲帮助色盲#include<bits/stdc++.h>#definearrout(a,l,r)rep(i,l,r)cout<<a[i......
  • 2024年4月
    我认为我不快乐的原因有很多,比如不能会老家和父母一起生活,不能带他们去享受生活,在北京蜗居没有根,没有房子车牌每个月浪费大量的钱在这上面,长期没有成长和进步,年龄焦虑,成长焦虑,没有固定的朋友,没有固定的正向的爱好,没有对象,恐婚等等,这些都是因为没钱导致的所以2024年我的目标是:通......
  • 2024年天梯赛
    PTA|程序设计类实验辅助教学平台(pintia.cn)1签到#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intread(){intx;scanf("%d",&x);returnx;}intmain(){//freopen("1.in","r",stdin);//freo......