洛谷带刷100题(T1-T5)

洛谷带刷100题(T1-T5)

2025.03.17

T1 过河卒

题目简介:有障碍的动规


dp数组含义

dp[i][j]表示到第i行第j列有多种路径


状态转移方程

dp[i][j]=dp[i-1][j]+dp[i][j-1]

常见的路径问题,当前一步的结果只跟左边和上边有关


一些技巧

1.在一个坐标向各个方向都可以走时,可以定义表方向的数组dx[4],dy[4]再用for循环中nx=x+dx[i]实现,记得判断边界条件

2.坐标移动,从00移动到11比较方便操作,甚至还省去了初始化的操作


错题过程

1.初始化着重看一下

2.map地图标记能不能走,比较方便

基础的dp题目


T2 铺地毯

题目简介:结构体实现的模拟

一些技巧

struct node{
	int x1,y1,x2,y2;
}d[N];

装着结构体的数组,这种写法已经定义好了,typedef的是起别名

int a,b,g,k;cin>>a>>b>>g>>k;
d[i]={a,b,g,k};

简单快捷的结构体输入


注意点

铺地毯后来铺的在上面,符合常理的操作是倒序遍历

就这样


T3 三连击

题目简介:模拟+验证(偏暴力)找使用1-9构成的1比2比3的仨数

一些技巧

1.先估计循环范围,123-329就够用,再遍历判断

2.验证函数

bool isok(int a,int b,int c){
	set<int>st;
	while(a)st.insert(a%10),a/=10;
	while(b)st.insert(b%10),b/=10;
	while(c)st.insert(c%10),c/=10;
	for(auto&i:st)if(i==0)return false;
	return st.size()==9; 
}

贴在这里再熟悉一下

That’s all

ps:这题做的时候思路还是有点难想的


T4 数的计算

题目简介:动规吧

  • 6
  • 6,1
  • 6,2
  • 6,3
  • 6,2,1
  • 6,3,1

dp数组

\[dp[i]=\sum_{j=1}^{i-1}dp[j] \]

for(int j = 1;j<=i/2;j++)	dp[i]+=dp[j]

注意点

1.每次内循环结束后f[i]++,不要漏掉直接结束的这种情况

Erik的解法暂时没看懂,日后功力大涨回头再看


T5 最大公约数和最小公倍数问题

题目简介:数学 枚举

知识点补充

ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}

最大公约数的求法:辗转相除法

补充一个数学公式如下:

\[a×b=gcd(a,b)×lcm(a,b) \]

因此得到最小公倍数的求法

ll lcm(ll a,ll b){ return a*b/gcd(a,b);}

思路

有了上述知识,这道题已经解决一大部分了,剩下的就是从x到y枚举对应的结果,再验证判断

posted @ 2025-03-17 22:33  Fllipped  阅读(6)  评论(0)    收藏  举报