洛谷八月月赛 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 ...
随机推荐
- vue进行代码排序
<template> <div> <div> <h3>排序 </h3> <button @click="orderByAge ...
- 力扣 - 剑指 Offer 10- I. 斐波那契数列
题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n ...
- 打开order by的大门,一探究竟《死磕MySQL系列 十二》
在日常开发工作中,你一定会经常遇到要根据指定字段进行排序的需求. 这时,你的SQL语句类似这样. select id,phone,code from evt_sms where phone like ...
- 【Microsoft Azure 的1024种玩法】八. 基于Azure云端轻松打造一款好用的私有云笔记
[简介] Leanote一款开源云笔记软件,它使用Go的Web框架revel和MongoDB开发完成的,其是目前为止发现的最有bigger的云笔记,它支持markdown输入,代码高亮,多人协作,笔记 ...
- bilibili动画下载视频批量改名(python)
bilib应用 在微软商店中下载哔哩哔哩动画,虽然软件UI古老,但是贵在稳定和支持下载 安装以后搜索自己想要的视频,然后缓存下载 下载后进入下载的路径 视频文件重命名 打开自动命令的程序或者py脚本, ...
- [Codeforces Global Round 14]
打挺差的. 不过\(C,D\)一眼秒了,大概是对这几个月努力的一个结果? \(B\)玄学错误挂了两发. 脑子痛然后打到一半就去睡觉了. -------------------------------- ...
- NFLSOJ #10317. -「2020联考北附2」三千世界(找等价表达+树形 dp)
题面传送门 出题人可能原本感觉没啥难度的 T2 竟然变成了防 AK 题,奇迹奇迹( 首先带着这个 \(\max\) 肯定不太好处理,考虑找出 \(f(S)\) 的等价表达.我们考虑以 \(1\) 为根 ...
- Pollard-Rho 算法
Pollard-Rho 一种复杂度大概在 $ O(n^{\frac 1 4} \log n) $ 的分解质因数方法. Miller-Rabin 给定一个 $ 10^{18} $ 范围的数,判断质数 由 ...
- 【机器学习与R语言】6-线性回归
目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...
- python 调用系统软件
直接使用os模块的popen打开 import sys import os a=os.popen('/Soft/samtools-1.2/samtools flags '+sys.argv[1] ,' ...