【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】天下第一 题解的更多相关文章

  1. 第九届蓝桥杯C/C++B组题解附代码

    1.标题:第几天 2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 125天 打开日历就ok 2. 标题:明码 汉字的字形存在于字库中,即便在今天,16点阵的字库 ...

  2. LGP6825题解

    科技的力量!!!!!!我德意志科技天下第一!!! 这是一篇需要一点儿科技的题解,但实际上这个科技我认为甚至算不上科技,太 simple 了. 首先是推柿子: \[\sum_{i=1}^n\sum_{j ...

  3. OID天下第一 (双指针,LCT,线段树)

    题面 或曰:"笑长天下第一!",OID 喜得合不拢嘴:"哈哈哈哈哈哈--" OneInDark 是天下第一的. OneInDark 给了你一个 n n n 个点 ...

  4. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  5. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  6. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  7. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  8. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  9. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

随机推荐

  1. Java实现 蓝桥杯VIP 算法提高 栅格打印问题

    算法提高 栅格打印问题 时间限制:1.0s 内存限制:512.0MB 问题描述 编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用"+"."-"和&quo ...

  2. Java实现LeetCode17. 电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...

  3. Android9.0配置charles的https抓包

    问题: 按照charles的正常流程去安装证书后,然后使用手机(一加5T,安卓9.0)访问https站点发现有些CONNECT请求无法查看,但是其它类型都支持https 解决方案: 前提条件:手机已经 ...

  4. 优雅的敲JS代码的几个原则

    一.条件语句        1,使用 Array.includes 来处理多重 || 条件          // ----- 一般 ------ if (fruit == 'apple' || fr ...

  5. 基于Nginx实现访问控制、连接限制

    0 前言 Nginx自带的模块支持对并发请求数进行限制, 还有对请求来源进行限制.可以用来防止DDOS攻击.阅读本文须知道nginx的配置文件结构和语法. 1. 默认配置语法 nginx.conf作为 ...

  6. 重学 Java 设计模式:实战组合模式(营销差异化人群发券,决策树引擎搭建场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 小朋友才做选择题,成年人我都要 头几年只要群里一问我该学哪个开发语言,哪个语言最好. ...

  7. MySQL查询优化利刃-EXPLAIN

    有一个 ? 遇到这样一个疑问:当where中In一个索引字段,那么在查询中还会使用到索引吗? SELECT * FROM table_name WHERE column_index in (expr) ...

  8. Spring新注解

    @Configuration作用:指定当前类为一个配置类@ComponentScan作用:用于通过注释指定Spring在创建容器时要扫描的包           当配置类作为AnnotationCon ...

  9. .Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

    前言 上一篇[.Net Core微服务入门全纪录(一)--项目搭建]讲到要做到服务的灵活伸缩,那么需要有一种机制来实现它,这个机制就是服务注册与发现.当然这也并不是必要的,如果你的服务实例很少,并且很 ...

  10. nodejs使用redis实现单例锁

    一个while(true)下使用redis的setnx命令,创建一个唯一标识,在操作执行完后,删除这个标识. 注意resource_name用一个常量,而my_random_value使用一个随机值. ...