只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(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吉利矩阵题解的更多相关文章

  1. 2019 gplt团体程序设计天梯赛总结

    分很菜… 以后写题一定记得把题意理清楚了再开始写. 模拟题还是大坑,代码还是写得不够多,代码量一大就写bug. 补题 l1-8 估值一亿的AI核心代码 补题链接:https://pintia.cn/p ...

  2. 2015 湘潭大学程序设计比赛(Internet)部分题解,其中有一个题与NYOJ1057很像,贪心过~~

    仙剑奇侠传                 祝玩的开心                                                                          ...

  3. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  4. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  6. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  7. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  9. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  10. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

随机推荐

  1. 深入浅出Java多线程(十一):AQS

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第十一篇内容:AQS(AbstractQueuedSynchronizer).大家觉得有用请点赞,喜欢请关注!秀才在此谢 ...

  2. echart 带表格

    "echarts": "^5.2.2", ChartSituation1 <template> <div> <EChartTemp ...

  3. Java求解汉诺塔

    汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗 ...

  4. 在Linux平台使用wps卡顿现象解决方法

    是因为软件占据的内存过多,需要关掉目前不使用的软件,以释放系统内存.

  5. day11-面向对象02

    面向对象02 7.继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好地建模 extends的意思是"扩展".子类是父类的扩展. Java类中只有单继承,没有多继承!(一个儿 ...

  6. 专访深职院 XR 专家 | 实时云渲染赋能虚拟仿真实训,打造 5G+XR 智慧教育平台

    近年,国家高度重视职业教育,为主动应对新一轮科技革命与产业变革,支撑服务创新驱动发展,教育部积极推进新工科建设.加快教育改革创新.在职业教育上,XR 技术与教育的结合,的的确确弥补了传统职业教育中&q ...

  7. 云VR:虚拟现实专业化的下一步

    传统的VR通常需要功能强大的计算机和其他高性能设备来提供良好的用户体验.但是,如果有一种方法可以从任何设备和任何地方处理VR内容呢?这就是云VR对VR用户的承诺.随着5G和其他网络的到来,VR技术的未 ...

  8. KingbaseES date 数据类型的两种格式

    关于date 数据类型,Oracle 与 PostgreSQL 格式是不同的,Oracle 是 日期 + 时间的类型,而PG 则只有日期.KingbaseES Oracle 模式则同时实现了二者类型, ...

  9. #构造,黑白染色#AT4378 [AGC027D] Modulo Matrix

    题目 构造一个 \(n*n(n\leq 500)\) 的矩阵,满足元素均为正整数,不超过 \(10^15\) 且互不相同, 并且相邻两数若较大的为 \(x\),较小的为 \(y\),那么任意相邻两数 ...

  10. 使用 OpenCV 进行文档矫正

    使用 OpenCV 进行文档矫正 本文只发布于博客园与pchar博客 std::vector<std::vector<cv::Point>> cvhelper::findCor ...