题目链接

XRRRRQAQ 去学文化的的样子太萌啦!!!

XRRRRQAQ 在课上太无聊,以至于吃起了劳孙(你不用知道这是什么)

显然劳孙是一个 N * M 的肉饼(即N行 M 列)

XRRRRQAQ 每次可以将一个矩形劳孙啃下来一行或一列

XRRRRQAQ 每吃一次劳孙都可能引起劳师的注意,这很刺激

XRRRRQAQ 为了寻求最多的刺激,打算用最多的次数吃完这个大劳孙

他想问你:他最多刺激几次呢??答案对 1e9+7 取模

样例输入 1

2 3

样例输出 1

5

样例解释 1

先啃掉第 2 列,然后就剩下了两个 2 * 1 的小肉饼,每个都可以啃 2 次(先啃掉一行,再啃掉另一行)

故输出 5

样例输入 2

3 10

样例输出 2

21

样例输入 3

100 200

样例输出 3

10149

\(N , M <= 10^{18}\) 时间限制 50 ms

这题n,m这么大,肯定是个贪心 , 先用dp打表 , 发现让 n <= m(好像无所谓,不过这样打表明显一点)

从 1 开始枚举m ,

发现

  1. 第一项是 n
  2. 之后每一项类似等差数列
  3. 当 n 为奇数时 , 公差为 \((n + 1) / 2\)
  4. 当 n 为偶数是, 公差交替为\(n / 2\) 与$ n / 2 + 1$ , (就是交替进行)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int mod = 1e9+7;
const int N = 310;
int n , m;
int dp[N][N];
int calc(int n , int m) // 打表
{
if(n <= 0 || m <= 0) return dp[n][m] = 0;
if(n == 1) return dp[n][m] = m;
if(m == 1) return dp[n][m] = n;
if(~dp[n][m]) return dp[n][m];
register int ans = 0 , i;
for(i = 1 ; i <= n ; ++i) ans = max(ans , calc(i - 1 , m) + calc(n - i , m) + 1);
for(i = 1 ; i <= m ; ++i) ans = max(ans , calc(n , i - 1) + calc(n , m - i) + 1);
return dp[n][m] = ans;
} long long mul(long long a , long long k)
{
long long ans = 0; a %= mod;
for( ; k ; k >>= 1 , a = (a + a) % mod)
if(k & 1) ans = (ans + a) % mod;
return ans;
} int main()
{
long long n , m; cin >> n >> m;
if(n > m) swap(n , m);
if(n & 1)
{
long long d = (n + 1) / 2;
cout << (n + mul(d , m - 1)) % mod << endl;
}
else
{
long long d1 = n / 2 , d2 = d1 + 1; m--;
cout << ((n + mul((m + 1) / 2 , d1)) % mod + mul(m - (m + 1) / 2 , d2)) % mod << endl;
}
return 0;
}

最新文章

  1. 访问IIS网站需要输入用户名密码(非匿名登录)问题汇总
  2. C#性能测试方法
  3. 小Q系列之 最佳裁判
  4. Android开发常用的一些第三方网站
  5. centos6 pxe minimal install
  6. MD5加密函数
  7. 如何使用Ubuntu online account API创建微博HTML5申请书
  8. json_encode转成带 花括号的{ } 和 中括号的[ ] 2种 形式 json数据
  9. smarty模板基础2
  10. idea和androidstudio的首次git配置一些问题
  11. JS的splice()方法在for循环中使用可能会遇到的坑
  12. vue路由请求 router
  13. jmeter javamail 邮件格式再优化(由详情——&gt;改为统计)
  14. 【XSY2718】gift 分数规划 网络流
  15. 二叉树的python可视化和常用操作代码
  16. 【UML】NO.52.EBook.5.UML.1.012-【UML 大战需求分析】- 交互概览图(Interaction Overview Diagram)
  17. ocp linux 基础要点
  18. Echarts地图绘制(散点,色卡)
  19. read/write函数与(非)阻塞I/O的概念
  20. 让IE6也支持position:fixed

热门文章

  1. CMake 复制文件方法
  2. docker镜像alpine封装nginx1.16.1【dockerfile】
  3. 关于Java8中的Comparator那些事
  4. Cows Of The Round Table【DFS】
  5. Android_关于自定义view的dialog有黑影的问题
  6. vs2008 asp.net “无法连接到ASP.NET Development server”
  7. 2级搭建类202-Oracle 18c SI ASM 静默搭建(OEL7.7)公开
  8. 1级搭建类106-Oracle 19c 单实例 FS(华为云)公开
  9. CSS的列表样式和网页背景
  10. AcWing 6. 多重背包问题 III