【CSGRound1】天下第一 题解
【CSGRound1】天下第一
https://www.luogu.com.cn/problem/P5635
分析题目:
- 题目中说明,有T组数据,但是mod只有一个。很显然,这道题可以用记忆化搜索嘛!(当然,当你打开算法标签时,你也能很快发现)
AC历程:
得知算法,加上题意十分好懂,二话不说开始敲板子。第一次测样例,发现error情况会卡死程序。怎么办?我就又开了一个二维数组a保存结果,再测,对了。
交上去,爆0!先是RE,再是MLE...难道记忆化不是这么编的??
再读题:1<=X,Y,MOD<=10000。这种范围,开两个二维肯定会爆呀!那减少一个吧。用tot记录循环的次数(代替a数组的作用),如果tot>1000,直接输出error即可。就像这样:
#include <bits/stdc++.h>
using namespace std;
int t,mod,x,y;
long long f[1001][1001];
// 此处f开[1001][1001],是RE;
// 开[10001][10001],很明显的MLE了
inline int solve(int x,int y,int tot) {
if(tot>10000) return 3;
if(f[x][y]!=0) return f[x][y];
if(x==0) return f[x][y]=1;
if(y==0) return f[x][y]=2;
int xx=(x+y)%mod;
int yy=(xx+y)%mod;
return f[x][y]=solve(xx,yy,tot+1);
}
int main() {
scanf("%d%d",&t,&mod);
while(t--) {
scanf("%d%d",&x,&y);
if(solve(x,y,0)==1) puts("1");
else if(solve(x,y,0)==2) puts("2");
else puts("error");
}
return 0;
}
- 还是不行?上网搜索了一下关于c++ 数据类型的知识,发现了还有一个叫 short 的东西,占用内存比 int 和 longlong 都要小很多,于是,将f数组的类型改为 short,再交,AC...
代码如下:
#include <bits/stdc++.h>
using namespace std;
int t,mod,x,y;
short f[10001][10001];
inline int solve(int x,int y,int tot) {
if(tot>10000) return 3;
if(f[x][y]!=0) return f[x][y];
if(x==0) return f[x][y]=1;
if(y==0) return f[x][y]=2;
int xx=(x+y)%mod;
int yy=(xx+y)%mod;
return f[x][y]=solve(xx,yy,tot+1);
}
int main() {
scanf("%d%d",&t,&mod);
while(t--) {
scanf("%d%d",&x,&y);
if(solve(x,y,0)==1) puts("1");
else if(solve(x,y,0)==2) puts("2");
else puts("error");
}
return 0;
}
再下关于C++里的数据类型的基础知识叭(dalao请忽略qwq)
在32 位的系统上
short 占据的内存大小是2 个byte;
int占据的内存大小是4 个byte;
long占据的内存大小是4 个byte;
float占据的内存大小是4 个byte;
double占据的内存大小是8 个byte;
char占据的内存大小是1 个byte。
int 的范围为-2147483648~ 2147483647;
short的范围为 -32768~ 32767。
PS:当然,这道题的算法标签是骗人的。不用记忆化也能过,代码和记忆化的都差不多,f数组都不用开。
将solve改成如下即可:
inline int solve(int x,int y,int tot) {
if(tot>10000) return 3;
if(x==0) return 1;
if(y==0) return 2;
else {
int xx=(x+y)%mod;
int yy=(xx+y)%mod;
solve(xx,yy,tot+1);
}
}
这题很水,对不对QAQ
【CSGRound1】天下第一 题解的更多相关文章
- 第九届蓝桥杯C/C++B组题解附代码
1.标题:第几天 2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 125天 打开日历就ok 2. 标题:明码 汉字的字形存在于字库中,即便在今天,16点阵的字库 ...
- LGP6825题解
科技的力量!!!!!!我德意志科技天下第一!!! 这是一篇需要一点儿科技的题解,但实际上这个科技我认为甚至算不上科技,太 simple 了. 首先是推柿子: \[\sum_{i=1}^n\sum_{j ...
- OID天下第一 (双指针,LCT,线段树)
题面 或曰:"笑长天下第一!",OID 喜得合不拢嘴:"哈哈哈哈哈哈--" OneInDark 是天下第一的. OneInDark 给了你一个 n n n 个点 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
随机推荐
- Java实现 蓝桥杯 算法提高 套正方形(暴力)
试题 算法提高 套正方形 问题描述 给定正方形边长width,如图按规律输出层层嵌套的正方形图形. 注意,为让选手方便观看,下图和样例输出均使用""代替空格,请选手输出的时候使用空 ...
- Java实现 LeetCode 124 二叉树中的最大路径和
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
- java实现第五届蓝桥杯生物芯片
生物芯片 X博士正在研究一种生物芯片,其逻辑密集度.容量都远远高于普通的半导体芯片. 博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮. 这些光源的 ...
- java实现第七届蓝桥杯抽签
抽签 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合呢? ...
- java实现第五届蓝桥杯斐波那契
斐波那契 标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 ...
- PAT甲级 Reversible Primes
描述 A reversible prime in any number system is a prime whose "reverse" in that number syste ...
- Linux: 如何分割文件,不再被 4G 大小限制了
单文件 4G 限制 FAT32 4G 限制 百度网盘超出 4G 限制 单文件分割与合并 单文件,如:archive.tar.gz 分割 split -b 3000M -d -a 1 archive.t ...
- 滴滴HBase大版本滚动升级之旅
桔妹导读:滴滴HBase团队日前完成了0.98版本 -> 1.4.8版本滚动升级,用户无感知.新版本为我们带来了丰富的新特性,在性能.稳定性与易用性方便也均有很大提升.我们将整个升级过程中面临的 ...
- win10系统无法删除文件的解决方法
方法/步骤 1:首先进入不能删除的文件所在的文件夹 2:右键单击此文件夹,选择授予访问权限 3:在授权界面选择删除权限 4:在删除权限中点击更改共享权限 5:我们选择administrator级别,点 ...
- logrotate 如何执行日志按照大小切分
说在最先的话,logrotate要设置按照文件大小来配置日志切分,需要通过三个东西. 1.配置logrotate 的配置文件 命名未任意文件,在启动的时候指定,例如/etc/weblog.conf 参 ...