洛谷八月月赛 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 ...
随机推荐
- 【JavaSE】Java基础·疑难点汇集
Java基础·疑难点 2019-08-03 19:51:39 by冲冲 1. 部分Java关键字 instanceof:用来测试一个对象是否是指定类型的实例. native:用来声明一个方法是由与 ...
- flutter第一课
网上搜到有一个8小时体验flutter的教程,感觉可以尝试一个hello world出来:https://www.jianshu.com/p/9aaabc60d8af 官网下载很慢,可以使用镜像下载, ...
- 洛谷 P3704 [SDOI2017]数字表格(莫比乌斯函数)
题面传送门 题意: 求 \[\prod\limits_{i=1}^n\prod\limits_{j=1}^mfib_{\gcd(i,j)} \] \(T\) 组测试数据,\(1 \leq T \leq ...
- Codeforces Round #701 (Div. 2) 题解
由于今天实在是太自闭了就前来写场已经 AK 的 div.2 的题解了 这场比赛是我的 div.2 首 AK 哦 A 先特判 \(b=1\),强制将 \(b+1\) 否则容易发现答案最大为 \(\log ...
- hdu 5552 Bus Routes
hdu 5552 Bus Routes 考虑有环的图不方便,可以考虑无环连通图的数量,然后用连通图的数量减去就好了. 无环连通图的个数就是树的个数,又 prufer 序我们知道是 $ n^{n-2} ...
- 洛谷 P4707 - 重返现世(扩展 Min-Max 容斥+背包)
题面传送门 首先看到这种求形如 \(E(\max(T))\) 的期望题,可以套路地想到 Min-Max 容斥 \(\max(S)=\sum\limits_{T\subseteq S}(-1)^{|T| ...
- 调用clapack库注意事项
寒假期间在自己开发的模型DGOM里成功的用clapack替换了MKL,这里就介绍下遇到的几个坑,希望能够帮助别人少走弯路. 1. 调用clapack函数时注意整数类型为integer. 虽然clapa ...
- 【R读取报错】解决: Can't bind data because some arguments have the same name
最近读取一个数据时,报如标题的错误. args[1] <- "RT_10-VS-RT_0" all <- read.delim(paste0(args[1]," ...
- 55. Binary Tree Preorder Traversal
Binary Tree Preorder Traversal My Submissions QuestionEditorial Solution Total Accepted: 119655 Tota ...
- 如何在 ASP.NET Core 中构建轻量级服务
在 ASP.NET Core 中处理 Web 应用程序时,我们可能经常希望构建轻量级服务,也就是没有模板或控制器类的服务. 轻量级服务可以降低资源消耗,而且能够提高性能.我们可以在 Startup 或 ...