首页 > 其他分享 >P1373 小 a 和 uim 之大逃离

P1373 小 a 和 uim 之大逃离

时间:2024-04-16 13:44:05浏览次数:16  
标签:P1373 val int rep uim 逃离 mod

这是一道好的dp


题目链接:P1373 小 a 和 uim 之大逃离

题意

小a和uim两个人是绑在一起走的
也就是说小a负责吸收第奇数次的魔液,而uim负责吸收偶数次的魔液
那么最终要求的是所有由uim结束吸收后两人魔瓶中魔液相等的方法


根据这个题意我们可以很好的列出状态转移方程

f(i,j,c,0/1)表示的是当两人走到i,j时差值为c的方案数(0代表现在为小a取,1代表为uim取)

那么我们来考虑一下状态转移方程该如何设计:

f(i,j,c,0)+=f(i-1,j,(c-val[i,j]+k)%k,1)

f(i,j,c,0)+=f(i,j-1,(c-val[i,j]+k)%k,1)

f(i,j,c,1)+=f(i-1,j,(c-val[i,j]+k)%k,0)

f(i,j,c,1)+=f(i,j-1,(c-val[i,j]+k)%k,0)


代码如下:

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
const int N=801,mod=1e9+7;

int n,m,k;
int ans=0;
int val[N][N];
int f[N][N][20][2];

int main()
{
	cin>>n>>m>>k;k++;
	rep(i,1,n)rep(j,1,m){
		cin>>val[i][j];
		f[i][j][val[i][j]%k][0]=1;
	}
	
	rep(i,1,n)
	{
		rep(j,1,m)
		{
			rep(c,0,k)
			{
				f[i][j][c][0]=(f[i][j][c][0]+f[i-1][j][(c-val[i][j]+k)%k][1])%mod;
				f[i][j][c][0]=(f[i][j][c][0]+f[i][j-1][(c-val[i][j]+k)%k][1])%mod;
				f[i][j][c][1]=(f[i][j][c][1]+f[i-1][j][(c+val[i][j])%k][0])%mod;
				f[i][j][c][1]=(f[i][j][c][1]+f[i][j-1][(c+val[i][j])%k][0])%mod;
			}
		}
	}
	
	rep(i,1,n)rep(j,1,m){
		ans=(ans+f[i][j][0][1])%mod;
	}
	
	cout<<ans;
	
	return 0;
}

标签:P1373,val,int,rep,uim,逃离,mod
From: https://www.cnblogs.com/0tAp-Z/p/18137915

相关文章

  • P2524 Uim的情人节礼物•其之弐 题解
    题目描述前传:详见洛谷P2525Uim成功地按照顺序将礼物送到了 N 个妹子的手里并维持她们的和谐。现在Uim现在想知道,他最终选择的顺序是所有给 N 个妹子送礼顺序中,字典序第几小的。送礼顺序可以看作1,2,⋯,N 的一个排列。输入格式第一行一个整数N,表示有 N 个数。第二......
  • 蚂蚁逃离(ant)
    【问题描述】在一段即将被水淹没的很窄通道里有很多蚂蚁,蚂蚁都在以相同的速度(1单位长度/秒)移动,它们会在不同的位置上排成一列,但蚂蚁的开始反向有向左的也有向右的。当两个蚂蚁以相反的方向在太窄而无法通过的通道中相遇时,蚂蚁会转头调转方向继续移动,速度不变。问蚂蚁需要多少......
  • [NOIP2007 普及组] 守望者的逃离
    [NOIP2007普及组]守望者的逃离题目背景NOIP2007普及组T3题目描述恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛......
  • TUniGUIMainModule.EnableSynchronousOperations 属性
    TUniGUIMainModule.EnableSynchronousOperations属性与所有其他Web应用服务器类似,uniGUI框架采用异步操作模式。在此模式下,请求由服务器处理,响应处理完毕后立即发送回客户端。例如,当用户按下客户端屏幕上的按钮时,就会生成Ajax请求,服务器将处理关联的OnButtonClick()事件。一旦......
  • React 逃离闭包陷阱
    众所周知,JavaScript 中的闭包(Closures)一定是这种语言最可怕的特性之一,即使是无所不知的 ChatGPT 也是这样说的。另外它可能也是最隐蔽的语言特性之一,我们在编写 React 代码时经常会用到它,但是大多数时候我们甚至没有意识到这一点。但是,我们终究还是离不开它:如果我们想编写复......
  • 如何使用Selenuim浏览器自动化框架实现自动登录社交媒体账号和自动发布文章
    在当今社交媒体盛行的时代,程序员们经常需要在不同的平台上自动执行一些任务,比如登录社交媒体账号并发布文章。本文将介绍如何利用Selenium浏览器自动化框架实现这一任务,同时结合万媒易发多平台内容同步助手,提高文章发布的效率。技术栈为了实现自动登录社交媒体账号和自动发布文......
  • make没有更新最新的uImage
      在LCD驱动的时候发现,linuxlogo一直弄不出来,猜想可能是因为uImage的问题,就看了一眼uImage时间:​  我现在的时间是,那可能就是没有更新make的时候没有更新,就上网搜了一下用下面的命令输出uImage:makeuImage,CALLscripts/checksyscalls.shCALLscripts/atonic/check-......
  • 逃离地球计划第五天
       我,是个胆小鬼,遇事只会退缩的小鬼,小鬼选择安静的逃离地球,不想带任何人,也不想让任何人知道小鬼去了哪里,因为小鬼微不足道,犹如宇宙中的尘埃,可小鬼想做的事情一点都不少,想去的地方也不少,所以就先行一步了。若是考虑世俗和现实,终是很难去了。    从小到大,我一直觉得......
  • C++逃离陨石
    题目描述在公元\(114514\)年小朱在学校里上课,突然听见学校广播播放一条骇人听闻的消息:一群陨石将袭击我市,由于陨石积过大数量多,它们无法在撞击到地面前燃烧殆尽,将会对它撞到的一切东西造成毁灭性的打击。小朱同志开始担心自己的安全问题。他一定要在被流星砸到前,到达一个......
  • 逃离迷宫
    你好,欢迎使用由do_it_tomorrow开发的小游戏,这个游戏仅限于课下娱乐,造成任何损失作者概不负责。如果对于游戏有任何问题或者建议,欢迎进行反馈。在游戏中,玩家将在迷宫中尝试逃离,但是会有各种的怪物伺机而动,只有三思而后行才能在考验重重的迷宫中成功逃生。本游戏支持存档,并且具有......