洛谷八月月赛 II T1 题解
Content
在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\)。
设第 \(i\) 行第 \(j\) 个数字为 \((i,j)\),则我们可以从 \((i,j)\) 走到 \((i+1,j)\) 或 \((i+1,j+1)\),也可以从 \((i+1,j)\) 或 \((i+1,j+1)\) 走到 \((i,j)\)。
现在请求出连续走过 \(k\) 个不同的数字时,走过的 \(k\) 个数字的和最大可以达到多少。答案对 \(10^9+7\) 取模。
数据范围:\(t\) 组询问,\(1\leqslant t\leqslant 10^5\),\(1\leqslant\frac{k+1}2\leqslant n\leqslant 10^9\)。
Solution
这里直接讲正解。
样例说明纯粹是来误导你的,真正使数字和最大的方案应该是从右下角,也就是 \((n,n)\) 开始走起,不断地先往右上走,再往右下走这么重复,一直走到 \(k\) 步为止。
注意到数据范围中 \(\frac{k+1}2\leqslant n\),因此我们这么走一定不会有走到 \((n,1)\) 还要走的情况出现。因此很容易得知对答案能够产生贡献的只有可能是在倒数第二行和最后一行的这些数字中。
然后我们分 \(k\) 的奇偶性讨论。
如果 \(k\) 是偶数,那么我们所走过的数字一定是最后一行从 \((n,n)\) 开始往左数连续的 \(\frac k2\) 个数字和倒数第二行从 \((n-1,n-1)\) 往左数连续的 \(k\) 个数字。答案就是 \(\sum\limits_{i=n-\frac k2+1}^n i+\sum\limits_{i=n-\frac k2}^{n-1}i\)。
但是注意到我们的 \(n\) 是 \(10^9\) 级别的,所以利用等差数列求和公式简化一下这个式子,就是 \(\dfrac{(n-\frac k2+1+n)\frac k2}2+\dfrac{(n-\frac k2+n-1)\frac k2}2\)。为了方便理清思路,你可以像我接下来给出的代码那样将答案分成两部分计算,然后到最后再一起相加。
如果 \(k\) 是偶数,那么我们发现,这种情况下的答案相比于 \(k-1\) 时的答案多了一个 \((n,n-\frac k2)\)。答案就是 \(\sum\limits_{i=n-\frac k2}^n i+\sum\limits_{i=n-\frac k2}^{n-1} i\)。同样地,将它进行化简可以得到答案为 \(\dfrac{(n-\frac k2+n)(\frac k2+1)}2+\dfrac{(n-\frac k2+n-1)\frac k2}2\)。
那么这道题目就做完了。
Code
namespace Solution {
const ll mod = 1e9 + 7;
int n, k;
ill ksm(ll a, ll b = mod - 2) {
ll res = 1;
for(; b; b >>= 1, a = a * a % mod)
if(b & 1) res = res * a % mod;
return res;
}
iv Main() {
MT {
read(n, k);
ll start = 1ll * n * (n + 1) / 2, start2 = start - n;
if(!(k % 2)) {
ll ans1 = (start - k / 2 + 1 + start + mod) % mod * (k / 2) % mod * ksm(2) % mod; //(a^(p-1)) mod p=1
ll ans2 = (start2 - k / 2 + 1 + start2 + mod) % mod * (k / 2) % mod * ksm(2) % mod;
println((ans1 + ans2) % mod);
} else {
ll ans1 = (start - k / 2 + start + mod) % mod * (k / 2 + 1) % mod * ksm(2) % mod;
ll ans2 = (start2 - k / 2 + 1+ start2 + mod) % mod * (k / 2) % mod * ksm(2) % mod;
println((ans1 + ans2) % mod);
}
}
return;
}
}
洛谷八月月赛 II T1 题解的更多相关文章
- 洛谷八月月赛 II T2 题解
Content 现有 \(T\) 次询问. 每次询问给定一个长度为 \(n\) 的 01 串,记为 \(A\).回答应是一个字符串 \(B\),满足: \(B\) 是长度为 \(m\) 的 01 串. ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷九月月赛II
题解:模拟 一旦不匹配就要break #include<iostream> #include<cstdio> #include<cstring> #include& ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- 洛谷P4047 [JSOI2010]部落划分题解
洛谷P4047 [JSOI2010]部落划分题解 题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落 ...
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 洛谷五月月赛【LGR-047】划水记
虽然月赛有些爆炸,但我永远资瓷洛谷! 因为去接水,所以迟到了十几分钟,然后洛谷首页就打不开了-- 通过洛谷题库间接打开了比赛,看了看\(TA\),WTF?博弈论?再仔细读了读题,嗯,判断奇偶性,不过要 ...
- [洛谷P1823]音乐会的等待 题解(单调栈)
[洛谷P1823]音乐会的等待 Description N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没 ...
- BZOJ2527 & 洛谷3527:[Poi2011]Meteors——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
随机推荐
- 5、使用ZSetOperations(有序)操作redis(Zset有序集合)
文章来源:https://www.cnblogs.com/shiguotao-com/p/10564454.html 方法 c参数 s说明 void set(K key, V value); ke ...
- ound interface org.elasticsearch.common.bytes.BytesReference, but class was expected
es得版本和本地项目不一致.. 配置es版本,现在使用得是5.2得版本,可是 maven上看到 elasticsearch-rest-high-level-client 最低也得6版本.下载安装高版本 ...
- 强化学习之MountainCarContinuous(注册自己的gym环境)
目录 1. 问题概述 2. 环境 2.1 Observation & state 2.2 Actions 2.3 Reward 2.4 初始状态 2.5 终止状态- Episode Termi ...
- AtCoder Grand Contest 055 题解
A 赛时直到最后 10min 才做出这个 A 题,之前猜了一个结论一直没敢写,本来不抱啥希望 AC 的结果比赛结束时交了一发竟然 A 了,由此可见我的水平之菜/dk 考虑每次取出字符串开头字符,不妨设 ...
- Codeforces 1375F - Integer Game(交互)
Codeforces 题面传送门 & 洛谷题面传送门 一个奇怪的做法. 首先我们猜测答案总是 First.考虑什么样的情况能够一步把对方一步干掉.方便起见我们假设 \(a<b<c\ ...
- 一类利用队列优化的DP
I.导入: 这是一个\(O(n^2)\)的状态和转移方程: \[f(i,j)=\left\{ \begin{aligned} f(i-1,j-1)+k \ (1\leq j)\\ \max_{k \i ...
- 模仿UP主,用Python实现一个弹幕控制的直播间!
灵感来源 之前在B站看到一个有意思的视频: [B站][亦]终极云游戏!五千人同开一辆车,复现经典群体智慧实验 大家可以看看,很有意思. up主通过代码实现了实时读取直播间里的弹幕内容,进而控制自己的电 ...
- 根据VCF构建进化树
VCF2Dis,是一款计算根据vcf文件计算距离矩阵的小工具 1 安装 下载后 tar -zxvf VCF2DisXXX.tar.gz cd VCF2DisXXX make # 添加环境变量即可 2 ...
- C语言中宏定义#define 、 typedef 和枚举类型
替换时机 #define :预编译阶段简单替换,编译阶段展开源程序(1.词法扩展==程序生成期间的字符串替换 2.语义扩展==生成特定指令) 枚举常量:编译阶段确定其值 内联函数:编译阶段插入代码 t ...
- 学习java 7.11
学习内容: 泛型定义格式:<类型> 优点:把运行时期的问题提前到编译期间:避免了强制类型转换 泛型方法:public class Fanxing { public <T> ...