LOJ 劳孙肉饼
题目链接
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 ,
发现
- 第一项是 n
- 之后每一项类似等差数列
- 当 n 为奇数时 , 公差为 \((n + 1) / 2\)
- 当 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;
}
LOJ 劳孙肉饼的更多相关文章
- IT人怎样防止过劳死?如何成为时间的主人?
投行的朋友还没走几天,搜狐的一位同胞又去了.又是过劳死! 每当读到这类新闻,IT人无不反镜自照,顾影自怜.无法拼爹拼钱的我们,似乎只有拼命了.生活好惨淡啊! 有人说:年轻人,悠着点儿!立刻 ...
- 孙鑫VC学习笔记:多线程编程
孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010 HQU Email:zgzhaobo@gmail.com QQ:452728574 Latest Modified ...
- 聊聊JS与设计模式之(工厂Factory)篇------(麦当劳的故事)
一,总体概要 1,笔者浅谈 说起设计模式其实并不是什么很新奇的概念,它也不是基于特定语言所形成的产物,它是基于软件设计原则以及相关的方法论和经过特定时期衍生出的若干解决方案.本文会以一个实例带入大家学 ...
- 孙鑫视频学习:VS2010中找不到【Tab order】菜单项
在学习孙鑫视频中,修改Tab顺序时,找不到VC6.0中提到的[Layout]->[Tab order]菜单项,但VC2010中可以用Ctrl+D调出来Tab顺序,或者[格式]->[Tab键 ...
- 孙鑫视频学习:改变窗口过程函数中出现error C2440错误的解决方法
在Visual Studio 2010中,即使代码是完完全全按照孙鑫视频中的敲,也会在出现error C2440,这是因为开发平台由VC6.0升级至VS2010,需要将原有的项目迁移.VS2010对消 ...
- 孙鑫视频学习:关于Visual Studio 2010中MFC工程的消息WM_INITDIALOG找不到的问题
学习孙鑫的那个深入详解C++视频时,有一处给编辑框空间改写窗口过程函数的例子,其中需要添加一个WM_INITDIALOG消息响应函数,但在类向导的消息栏下找不到WM_INITDIALOG消息.解决方法 ...
- [置顶] Linux高编之进程--------fork函数的同步与异步(兄弟子进程和父子孙进程示列)
前面讲述的fork函数的基本用法,下面通过两个程序来说明fork函数同步与异步之间的关系: <1>通过fork函数实现在父进程下的四个兄弟子进程(即异步) : 函数实现代码: #inclu ...
- 乐酷工作室孙志伟:Testin云測试有广度有深度 省钱省力值得信赖
乐酷工作室孙志伟:Testin云測试有广度有深度 省钱省力值得信赖 2014/10/16 · Testin · 开发人员訪谈 乐酷工作室是一个专业从事移动终端应用及游戏自主研发和运营的创业团队,眼下拥 ...
- 孙弘与Masa Maso 做互联网最贵的衬衫(2)_人物对话_中国时尚品牌网
孙弘与Masa Maso 做互联网最贵的衬衫(2)_人物对话_中国时尚品牌网 孙弘与Masa Maso 做互联网最贵的衬衫(2)
随机推荐
- SQL Server远程数据库操作(备份、还原等)
· SQL Server远程数据库备份到本地: exp sauser/sapassword@192.168.8.233:1433/DBName file=d:/backup.dmp OWNER=sum ...
- 使用Scanner类
import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { ...
- LINUX 概述
初识linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协 ...
- PAT (Advanced Level) Practice 1027 Colors in Mars (20 分)
People in Mars represent the colors in their computers in a similar way as the Earth people. That is ...
- 题解【洛谷P3456】[POI2007]GRZ-Ridges and Valleys
题面 考虑 \(\text{Flood Fill}\). 每次在 \(\text{BFS}\) 扩展的过程中增加几个判断条件,记录山峰和山谷的个数即可. #include <bits/stdc+ ...
- H5-设置全屏背景图片样式
.bgimg{ width: 100%; height: 95vh; margin: 0; padding: 0 .32rem; background-image: url('../image/ld. ...
- POJ 1099 Square Ice 连蒙带猜+根据样例找规律
目录 题面 思路 思路 AC代码 题面 Square Ice Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4526 A ...
- Jmeter-集合点与关联
1.集合点 添加同步定时器(Synchronizing Timer) 注意:集合点需要放在需要集合的元件前面 2.关联 预先使用Badboy录制WebTours登录脚本 在登录前插入一个监听器:察看结 ...
- Java中基本数据类型byte的溢出问题
Java中基本数据类型byte的溢出问题 问题源于:https://www.cnblogs.com/HuoHua2020/p/12326631.html 定义两个byte类型的数据,将其之和赋值给一个 ...
- 免费馅饼 HDU - 1176 基础dp
/*题都是有一个状态转移方程式 , 只要推出方程式就问题不大了,首 先对于gameboy来说他下一秒只能 在0~10这十一个位置移动, 而对于1~9这九个位置来说他可以移动(假设他现在的位置为x)到x ...