#420 Div2 Problem B Okabe and Banana Trees (math && 暴力枚举)
题目链接 :http://codeforces.com/contest/821/problem/B
题意 :给出 m 和 b 表示在坐标轴上的一条直线
要求你在这条直线和x、y轴围成的区域中找出一个矩形,使得矩形贡献的价值最大,矩形的贡献由在矩形里面的每一个整数点(x, y)的和构成即 x+y。
分析 :实际就是在一个限定的范围内找价值最大矩阵,那么可以试着枚举在这个区域内的可能有最大贡献的矩阵,根据y从b~0自上而下地枚举,对于每一个yi,我们根据直线方程算出xi(向下取整),那这个xi和yi便确定了在这个y值下可以取到的最大的矩形且矩形右上角是点(xi, yi),应该不难想象,接下来就是计算贡献了,如果暴力计算肯定超时,看看能不能将要计算的点列出来找找规律,如下
y y+1 y+2................y+x
(y-1) (y-1)+1 (y-1)+2.........(y-1)+x
(y-2) (y-2)+1 (y-2)+2.........(y-2)+x
......
0 0+1 0+2.........0+x
可以看出每一行就是一个等差数列,可以利用等差数列公式
#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL m, b;
LL cal(LL y){ return (b - y)*m; }
LL bananas(LL x, LL y)
{
LL sum = ;
LL fir = y, last = y+x;
LL Firsum = (x+)*(fir + last)/;
sum += Firsum;
; i<=y; i++){
sum = sum + Firsum - (i*(x+));
}
return sum;
}
int main(void)
{
scanf("%lld %lld", &m, &b);
LL ans = -;
; y--){
LL x = cal(y);
ans = max(ans, bananas(x, y));
}
printf("%lld\n", ans);
;
}
实际上,如上是计算还可以更加简便,可以看出每一行的x的和都是一样的,而每一行的y的和也都是一样的,那就可以分开用等差数列计算在乘上个数相加即可,即:

#420 Div2 Problem B Okabe and Banana Trees (math && 暴力枚举)的更多相关文章
- Codeforces821B Okabe and Banana Trees 2017-06-28 15:18 25人阅读 评论(0) 收藏
B. Okabe and Banana Trees time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees
[题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...
- CF821 B. Okabe and Banana Trees 简单数学
Link 题意:给出一条直线,在直线上取一点,其垂直x,y轴作成一个,求矩阵中所有包含的点的x,y坐标之和的最大值. 思路:对于一个任意一点我们计算公式,对于任意一点$(x, y)$,有$(x+y)^ ...
- codeforces B. Okabe and Banana Trees 结论题
题目传送门 这道题 枚举一波y就好了 要求x,y整数 所以y最多1000个 然后算一波答案更新就好了 233 #include<cstdio> #include<cstring> ...
- CF821B Okabe and Banana Trees
思路: 暴力枚举. 实现: #include <iostream> #include <cstdio> using namespace std; typedef long lo ...
- codeforces round 420 div2 补题 CF 821 A-E
A Okabe and Future Gadget Laboratory 暴力 #include<bits/stdc++.h> using namespace std; typedef l ...
- #420 Div2 C
#420 Div2 C 题意 不断把数加入到一个栈里,取数的时候要求按照 1~n 的顺序取数,每次取数保证数一定在栈里,如果要取的数不在栈头,可以选择对栈排序一次.问最少排序几次. 分析 只要栈头的数 ...
- #420 Div2 D
#420 Div2 D 题意 给出一个方格矩阵,其中存在亮着的方格,只能在亮着的方格上行走,可以在初始亮的方格上花费一枚硬币临时点亮任意一行或一列,地图上同一时间只能存在一个这样的行或列,问走到终点最 ...
- Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
随机推荐
- 【嵌入式开发】树莓派+官方摄像头模块+VLC串流实时输出网络视频流
sudo apt-get update sudo apt-get install vlc sudo raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv ...
- 【VS开发】使用MFC创建并调用ActiveX控件
使用MFC创建并调用ActiveX控件 今天做了一下ActiveX的使用测试,总结一下: 首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试 ...
- reactstrap,scrollbar组件
react-script 编译,部署,sass,less,test,helmet等 https://github.com/facebookincubator/create-react-app/blob ...
- poj3191(负进位制)
题目链接:https://vjudge.net/problem/POJ-3191 题意:将一个int范围的整数用-2进制表示并输出. 思路:将十进制转换成-2进制,原理也类似于短除法.但不同的是不是简 ...
- spring boot-4.配置文件
官方文档的23.4章节介绍了关于配置文件的内容 springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的 ...
- [转帖]56核Xeon Platinum 9200现身 - 英特尔有史以来最大的CPU封装
56核Xeon Platinum 9200现身 - 英特尔有史以来最大的CPU封装 https://www.cnbeta.com/articles/tech/835271.htm 当英特尔宣布上周正式 ...
- Luogu P3647 [APIO2014]连珠线
题目 换根dp. 显然对于给定的一棵有根树,蓝线都不能拐弯. 设\(f_{u,0}\)表示\(u\)不是蓝线中点时子树内的答案,\(f_{u,1}\)表示\(u\)是蓝线中点时子树内的答案.(以\(1 ...
- Codeforces 1156F Card Bag(概率DP)
设dp[i][j]表示选到了第i张牌,牌号在j之前包括j的概率,cnt[i]表示有i张牌,inv[i]表示i在mod下的逆元,那我们可以考虑转移,dp[i][j]=dp[i-1][j-1]*cnt[j ...
- IIS发布出现[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
一,原因是系统DSN的配置平台位数跟系统的位数不一致(PS:确认你有没有安装对应系统的驱动.本文是34位和64位驱动都安装了) 二,解决方法,我们必须在 <控制面板---管理工具>找到对应 ...
- homebrew学习(五)之homebrew cask和homebrew services
homebrew cask 如果我想安装Chrome浏览器怎么办?试试下面的命令: brew install google-chrome 发现并不能安装,没有该软件.怎么办?好消息是一个叫做homeb ...