2024年GPLT团体程序设计比赛L2-D吉利矩阵题解
只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(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),这道题确实是练搜索剪枝的好题
2024年GPLT团体程序设计比赛L2-D吉利矩阵题解的更多相关文章
- 2019 gplt团体程序设计天梯赛总结
分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...
- 2015 湘潭大学程序设计比赛(Internet)部分题解,其中有一个题与NYOJ1057很像,贪心过~~
仙剑奇侠传 祝玩的开心 ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
随机推荐
- 记springBoot一直报Exception authenticating MongoCredential.
项目场景: 场景:继上回docker安装好了mongo,然后自己本地项目尝试搭建使用连接mongo 问题描述: 按照别人写的文章教程一步步操作,最后自己本地尝试连接查询,跳出这个用户权限不够,发生了套 ...
- MD5算法:密码学中的传奇
MD5算法起源: MD5(Message Digest Algorithm 5)算法是由MIT的计算机科学家Ronald Rivest于1991年设计的一种消息摘要算法.MD5算法最初被用于提供数据完 ...
- 3DCAT首届行业生态交流会|爱智慧科技有限公司CEO梁新刚:工业元宇宙的”形“与”神“
2021年12月17日下午,由深圳市瑞云科技有限公司主办,深圳市虚拟现实产业联合会协办的 云XR如何赋能元宇宙--3DCAT实时云渲染首届行业生态合作交流会 圆满落幕.此次活动围绕"云XR如 ...
- 从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像
本文为从零开始写 Docker 系列第七篇,实现类似 docker commit 的功能,把运行状态的容器存储成镜像保存下来. 完整代码见:https://github.com/lixd/mydock ...
- Activity、Window、View三者关系
目录介绍 01.Window,View,子Window 02.什么是Activity 03.什么是Window 04.什么是DecorView 05.什么是View 06.关系结构图 07.Windo ...
- 三维模型3DTile格式轻量化的跨平台兼容性问题分析
三维模型3DTile格式轻量化的跨平台兼容性问题分析 三维模型3DTile格式是一种开放的.高效的和互操作的空间信息数据格式.然而,它作为一种新兴的技术,其在轻量化与跨平台兼容性方面存在着一些问题. ...
- FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
FFmpeg不仅提供了ffmpeg.ffplay和ffprobe三个可执行程序,还提供了八个工具库,使得开发者能够调用库里面的函数,从而实现更精准的定制化开发需求.这八个库的名字是avcodec.av ...
- C++常见面试题整理
1. CPP编译链接过程 2. new和malloc区别,delete和free区别 3. 指针和引用 4. 左值引用和右值引用 5. const 6. 函数重载 7. 函数调用栈帧开辟过程 8. i ...
- 源自opencore的fifo的IP核解析
fifo的IP核学习与解析 1.fifo的基本原理 fifo,就是缓存器,可以理解为升级版的D触发器.D触发器是在时钟信号的控制下,数据等时间间隔刷新.对于fifo而言,数据也是需要刷新的,不过有一个 ...
- 索引与查询使用的 collate 不一致导致无法使用索引
索引与表的collate 不一致的情况下,会导致表上的索引不可用,这时要想使用索引,必须在SQL 语句指定建索引所用的collate. 数据库默认collate : test=# \l List of ...