正题


题目大意

一个n∗nn*nn∗n的矩阵中fi,j=fi−1,j+fi−1,j+1f_{i,j}=f_{i-1,j}+f_{i-1,j+1}fi,j​=fi−1,j​+fi−1,j+1​。
但是有格子恒定为0
给出fn,1f_{n,1}fn,1​要求在第一列的数字不超过MaxMaxMax的情况下字典序最小。

求这个字典序。


解题思路

若不考虑坏格子,我们发现
a,b,c,da,b,c,da,b,c,d
a+b,b+c,c+da+b,b+c,c+da+b,b+c,c+d
a+2b+c,b+2c+da+2b+c,b+2c+da+2b+c,b+2c+d
a+3b+3c+da+3b+3c+da+3b+3c+d
也就是fn,1=∑i=1nxif1,if_{n,1}=\sum_{i=1}^nx_if_{1,i}fn,1​=i=1∑n​xi​f1,i​
那么我们可以计算出每个xxx
fk,i,jf_{k,i,j}fk,i,j​表示xkx_kxk​在(i,j)(i,j)(i,j)这个位置是多少,那么我们有开始时fk,1,k=1f_{k,1,k}=1fk,1,k​=1
且fk,i,j=fk,i−1,j+fk,i−1,j+1f_{k,i,j}=f_{k,i-1,j}+f_{k,i-1,j+1}fk,i,j​=fk,i−1,j​+fk,i−1,j+1​
那么最终对于每个xi=fk,n,1x_i=f_{k,n,1}xi​=fk,n,1​

然后就可以dfsdfsdfs,加上剪枝就可以过掉。


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;
int n,m,Big,K,a[N],f[N][N][N];
bool flag,v[N][N];
void dfs(int x,int num)
{int A=f[x][n][1];if(x>n&&num==K){flag=1;for(int i=1;i<=n;i++)printf("%d\n",a[i]);}if(x>n||num>K||flag) return;if(A<=0||A>K){dfs(x+1,num);return;}for(int i=0;i<=Big;i++){if(num+i*A>K) break;a[x]=i;dfs(x+1,num+i*A);}
}
int main()
{scanf("%d%d%d%d",&n,&m,&Big,&K);for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);v[x][y]=1;}for(int i=1;i<=n;i++)f[i][1][i]=1;for(int i=2;i<=n;i++)for(int j=1;j<=n-i+1;j++)if(!v[i][j]){for(int k=1;k<=n;k++)f[k][i][j]=f[k][i-1][j]+f[k][i-1][j+1];}dfs(1,0);if(!flag) printf("-1");
}
/*
100 20 10000 8970
9 79
36 25
16 20
41 44
81 4
18 50
13 55
71 3
18 61
81 20
77 8
7 8
67 2
31 39
47 6
6 22
97 1
3 71
39 39
43 3
*/

jzoj1764-游戏【dp,dfs】相关推荐

  1. JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计

    JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计 看到了这样的一道题目,还挺有意思,可以通过不同的算法设计来求解. 话说大诗人李白,一生好饮.一日,他提着酒壶,从家里出来,酒壶中有酒2斗.他边 ...

  2. codevs 1085 数字游戏 dp或者暴搜

    1085 数字游戏 2003年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁 ...

  3. 蓝桥杯刷题021——填字母游戏(DFS)

    2017国赛  题目描述 小明经常玩 LOL 游戏上瘾,一次他想挑战 K 大师,不料 K 大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩 LOL 了". K 大 ...

  4. POJ-3590 The shuffle Problem 置换+DP | DFS

    题目链接:http://poj.org/problem?id=3590 自己暴力给水过去了,不过效率有点低.题目要求的就是给一个数n,要你求出一种方案,一些和为n的数的最小公倍数最大.题目数据量不大, ...

  5. POJ_1088 滑雪(记忆型DP+DFS)

    Description Michael喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  6. vijos 1464 积木游戏 DP

    描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,-,N的长方 体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&q ...

  7. 洛谷 P1164:小A点菜(DP/DFS)

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...

  8. 水管工游戏:dfs(递归)

    添柴网这题好想不能评测,所以不确保代码的正确性 题目描述: 这小节有点难,看不太懂可以跳过哦. 最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N * M的单位正方形,现 ...

  9. tianchai 12023 水管工游戏(DFS搜索)

    题目描述(ID:12023) 标题: 水管工游戏 详情: 这小节有点难,看不太懂可以跳过哦. 最近小哼又迷上一个叫做水管工的游戏.游戏的大致规则是这样的.一块矩形土地被分为N*M的单位正方形,现在这块 ...

  10. BZOJ 3875: [Ahoi2014Jsoi2014]骑士游戏 dp spfa

    3875: [Ahoi2014&Jsoi2014]骑士游戏 Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 933  Solved: 475 ...

最新文章

  1. 详解ABBYY FineReader 12扫描亮度设置
  2. Android5.1修改以太网MAC地址(SElinux)【转】
  3. libsvm java 调用说明
  4. 流媒体服务器 php,nginx 流媒体服务器 FFmpeg 截图
  5. 安卓Java虚拟机大小_虚拟机为安卓流畅度背锅,是因为关系数十万程序员饭碗?...
  6. 技术人员,该如何向业务和产品“砍需求”?
  7. centos6.5卸载java,CentOS 5.2卸载自带Java1.4.2 安装JDK6
  8. Lua参数绑定函数实现方法
  9. golang 提示:can‘t resolve file
  10. c语言在s之后可以直接跟条件,2018C语言第二次作业
  11. Java多线程编程实战指南(核心篇)读书笔记(一)
  12. java 循环读取文件_JAVA读写文件中的循环问题
  13. WebWork深入浅出 (转贴)http://www.blogjava.net/moxie/archive/2006/10/20/76375.html
  14. 你还在为找素材发愁吗?自媒体高手都知道的免费自媒体素材网
  15. 卸载office2007不干净问题
  16. linux一句话精彩问答 (转贴)
  17. 【Python中三角函数正弦、余弦、正切的计算】
  18. C#简单实现office转pdf、pdf转图片
  19. 智慧营区解决方案-最新全套文件
  20. hadoop实战(一)

热门文章

  1. python +appium实现原理_python_appium使用原理
  2. linux path减少,Linux的环境变量PATH中所带来的问题及解决方法
  3. 游戏设计与计算机,RPG游戏设计与实现-数学与计算机系.doc
  4. 360 屏蔽ajax,怎么在easy ui做全局Ajax拦截啊?
  5. mysql脚本的制作_制作脚本实现mysql自动备份
  6. [JavaWeb-JavaScript]JavaScript_Math数学对象
  7. [JavaWeb]Web概念概述
  8. [Java基础]Stream流的收集操作
  9. 《C++ Primer》13.1.1节练习
  10. 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)