第九题 迷宫取宝

标题:地宫取宝X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。【数据格式】输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上的宝物的价值要求输出一个整数,表示正好取k个宝贝的行动方案数。该数字可能很大,输出它对 1000000007 取模的结果。例如,输入:
2 2 2
1 2
2 1
程序应该输出:
2再例如,输入:
2 3 2
1 2 3
2 1 5
程序应该输出:
14资源约定:
峰值内存消耗 < 256M
CPU消耗  < 1000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。提交时,注意选择所期望的编译器类型。

这道题记忆化搜索,不过逗比的 如果不是我的话,那么题目数据就有问题。

反正 看不懂了。

1 4 3
2 5 4 3

答案明显的是 3。

走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。

那么明显的可以拿 2 5 4,2 5 3,2 4 3。 可是……网上找了一个AC的一测试,居然是0。

#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<bitset>
#include<vector>
#include<cmath>#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define FOR_(i,a,b) for(int i=a;i>=b;i--)
#define sf scanf
#define pf printf
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false)#define SIZE (100000  +1)
#define MOD 1000000007
using namespace std;int dp[51][51][14][13];
int g[51][51];
int n,m,kk;int xx[]={1,0};
int yy[]={0,1};int dfs(int x,int y,int _min,int k)
{if(dp[x][y][_min+1][k]>=0)return dp[x][y][_min+1][k];int sum=0;if(x==n-1&&y==m-1){if(g[x][y]>_min){if(k==kk||k==kk-1)sum++;}else if(k==kk)sum++;return dp[x][y][_min+1][k]=sum;}if(x==n||y==m)return 0;if(g[x][y]>_min){FOR(l,0,2){sum+=dfs(x+xx[l],y+yy[l],_min,k);sum%=MOD;
//走过某个格子时,如果那个格子中的宝贝价值比
//小明手中任意宝贝价值都大,小明就可以拿起它
//求出 tmp 为最小的居然WA了。//            int tmp=_min;
//            if(_min==-1)tmp=g[x][y];
//            sum+=dfs(x+xx[l],y+yy[l],tmp,k+1);/*
比如1 4 3
2 5 4 3答案明显的是
2 5 4
2 5 3
2 4 3一共三种。
不过AC的程序居然答案是 0*//*//*/      sum+=dfs(x+xx[l],y+yy[l],g[x][y],k+1);sum%=MOD;}}else{FOR(l,0,2){sum+=dfs(x+xx[l],y+yy[l],_min,k);sum%=MOD;}}return dp[x][y][_min+1][k]=sum;
}int main()
{while(~sf("%d%d%d",&n,&m,&kk)){FOR(i,0,n)FOR(j,0,m)sf("%d",&g[i][j]);CLR(dp,-1);int ans=dfs(0,0,-1,0);pf("%d\n",ans);}
}

第十题就更有意思了。坑死为止。

就是找逆序对。

左边 比它 大的。右边比它小的。

long long ans 用 lld 输出WA到哭。改为I64d 就AC。。。累觉不爱。真是坑桥杯。

#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
#include<map>
#include<stack>
#include<iostream>
#include<list>
#include<set>
#include<bitset>
#include<vector>
#include<cmath>#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define PI 3.141592654
#define CLR(a,b) memset(a,b,sizeof(a))
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define FOR_(i,a,b) for(int i=a;i>=b;i--)
#define sf scanf
#define pf printf
#define all(v) (v).begin(),(v).end()
#define acfun std::ios::sync_with_stdio(false)#define SIZE (100000  +1)
#define MOD 1000000007
using namespace std;int t[SIZE*3];
int us;
void update(int l,int r,int o)
{if(l==r)t[o]=1;else{int m=(l+r)>>1;if(us<=m)update(l,m,o*2);else update(m+1,r,o*2+1);t[o]=t[o*2]+t[o*2+1];}
}
int ql,qr;
int query(int l,int r,int o)
{if(ql<=l&&qr>=r)return t[o];else{int m=(l+r)>>1;int ans=0;if(ql<=m)ans+=query(l,m,o*2);if(qr>m)ans+=query(m+1,r,o*2+1);return ans;}
}
struct node
{int pos,val;bool friend operator <(node a,node b){if(a.val==b.val)return a.pos>b.pos;return a.val>b.val;}
}l[SIZE];
LL f[SIZE*10];
int main()
{int n;f[0]=0;FOR(i,1,SIZE)f[i]=f[i-1]+i;while(~sf("%d",&n)){CLR(t,0);FOR(i,1,n+1){sf("%d",&l[i].val);l[i].pos=i;}sort(l+1,l+n+1);LL ans=0;FOR(i,1,n+1){us=l[i].pos;update(1,n,1);ql=1,qr=l[i].pos-1;int left=0;if(ql<=qr)left=query(1,n,1);ql=l[i].pos+1,qr=n;int right=0;if(ql<=qr)right=query(1,n,1);right=n-l[i].pos-right;ans+=f[left+right];//pf("%d: %d %d\n",l[i].val,left,right);}pf("%I64d\n",ans);//%lld WA到死!!!!}
}

第五届蓝桥杯C/C++本科B组(真题试做)(9~10)相关推荐

  1. 蓝桥杯历年省赛JAVA-B组真题汇总及题目详解

    蓝桥杯 历年省赛JAVA-B组真题汇总及题目详解 题目大致介绍: 第一题到第三题以及第六题是结果填空,方法不限得到最后结果就行. 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功. 第八题到 ...

  2. 魔术表演-第14届蓝桥杯省赛Scratch中级组真题第1题

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第136讲. 魔术表演,本题是2023年5月7日举行的 ...

  3. 神奇哈哈镜-第14届蓝桥杯省赛Scratch初级组真题第3题

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第132讲. 神奇哈哈镜,本题是2023年5月7日举行 ...

  4. 九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第134讲. 九宫格游戏,本题是2023年5月7日举行 ...

  5. 第五届蓝桥杯C/C++本科B组(真题试做)(1~5)

    菜鸡只能报个B组.于是报了第六届的本科B.就找了上届的本科B的题来做做. A: 标题:啤酒和饮料啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元.我们还知道他买的啤酒比饮 ...

  6. 2017第八届蓝桥杯省赛JAVA C组真题解析(带源码及解析)

    蓝桥杯历年真题及解析. 目录: 蓝桥杯历年真题及解析. A:外星日历(难度:★) 题目: 分析: 代码: B:兴趣小组(难度:★) 题目: 分析: 代码: C:纸牌三角形(难度:★★★) 题目: 分析 ...

  7. 2020第十一届蓝桥杯国赛JAVA B组真题解析(带源码及解析)

    蓝桥杯历年真题及解析. 目录 蓝桥杯历年真题及解析. A: 美丽的 2 题目: 分析: AC代码: B: 扩散 题目: 分析: AC代码: C: 阶乘约数 题目: 分析: AC代码: D: 本质上升序 ...

  8. 2014年第五届蓝桥杯决赛Java本科B组试题解析

    第一题  国王的遗产 X国是个小国.国王K有6个儿子.在临终前,K国王立下遗嘱:国王的一批牛作为遗产要分给他的6个儿子. 其中,大儿子分1/4,二儿子1/5,三儿子1/6,.... 直到小儿子分1/9 ...

  9. 第五届蓝桥杯C/C++本科B组(真题试做)(6~8)

    终于考完--不过挂科的铁定的了. 还是来做题吧. 前面八道题做起来都很简单. F: 标题:奇怪的分式上小学的时候,小明经常自己发明新算法.一次,老师出的题目是:1/4 乘以 8/5 小明居然把分子拼接 ...

最新文章

  1. rockmq运维指令_RocketMQ运维监控
  2. 干货|深度学习实现零件的缺陷检测
  3. 手把手教你用Java实现AOP
  4. oracle executesqlcommand,Oracle Execute Command Sql Script in Win
  5. java网络通信:异步非阻塞I/O (NIO)
  6. ORACLE expdp/impdp详解
  7. childactor movable
  8. Java基础——线程及并发机制
  9. linux中DIR、dirent、opendir()、readdir()、closedir()函数的使用
  10. JS获取本周、本季度、本月、上月的开始日期、结束日期
  11. oracle 时间戳
  12. jQuery实时校验输入框:整数、浮点数
  13. MAC查看系统版本的命令
  14. webpack基础和完整项目脚手架搭建教程-郭永峰-专题视频课程
  15. 2012年九月六号阿里巴巴面试
  16. Mac能连接手机热点却无法上网问题解决
  17. HyperMesh二次开发教程 - 前言
  18. 在文章右上角添加目录导航
  19. Simulink三相异步电机仿真
  20. 最新版NASA官方网站数据下载流程——以MODIS数据演示为例

热门文章

  1. 海思平台OSD的实现(2)
  2. KubeSphere 社区双周报 | 功能亮点抢“鲜”看 | 2022-09-30
  3. 淘宝API接口,获取数据
  4. 计算机专业省赛一等奖有什么好处,省技能大赛一等奖好处都有什么
  5. 随着计算机技术的快速发展,随着计算机技术的发展,计算机的应用范围也越来越广...
  6. FlexboxLayout全攻略(Google官方灵活实现流式布局控件)
  7. 4.2 理性看考试——《逆袭大学》连载
  8. 第十二周 任务三
  9. 解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  10. XBee3与XBee S2C混合应用注意事项(石油A11领域)