问题 5578 --虎哥的函数5578: 虎哥的函数★★★★
时间限制: 1 Sec 内存限制: 128 MB
提交: 21 解决: 10
[提交][状态][命题人:]题目描述
对于一个有0,1组成的二进制字符串,定义函数f(s)等于使得从字符串s的第l个字符到第r个字符中至少一个字符等于 1的整数对 (l,r)的数量( 1≤l≤r≤|s| ),其中|s|为字符串s的长度。
如 s=01010,则f(s)=12,因为满足条件的(l,r)有12对:(1,2),(1,3),(1,4),(1,5),(2,2),(2,3),(2,4),(2,5),(3,4),(3,5),(4,4),(4,5)。
现给定两个整数n和m,分别表示字符串s的长度为n,1的个数为m,请你计算f(s)的最大值。
输入
第一行为T (1≤T≤1e5),表示测试样例的数量
每组测试样例级包含有两个整数n,m (1≤n≤1e9, 0≤m≤n),分别表示字符串的长度和字符串1的数量。
输出
对于每一组测试样例,输出最大的f(s)值。
提示
第一组测试样例中,仅有3个长度为3,仅含有1个1的二进制字符串。这三个字符串分别为:s1="100";s2="010"; s3="001"。f(s1)=3,f(s2)=4, f(s3)=3。因此最大的f(s)值为4。
第二组测试样例中,当s="101"能得到最大的f(s)值为5。
第三组测试样例中,当s="111"能得到最大的f(s)值为6。
第四组测试样例中,由于1的数量为0,因此s只能为"0000",f(s)的值为0。
第五组测试样例中,当s="01010"能得到最大的f(s)值为12。
来源
[提交][状态]