Codeforces Round #619 (Div. 2) Ayoub's function
Ayoub thinks that he is a very smart person, so he created a function f(s)f(s) , where ss is a binary string (a string which contains only symbols "0" and "1"). The function f(s)f(s) is equal to the number of substrings in the string ss that contains at least one symbol, that is equal to "1".
More formally, f(s)f(s) is equal to the number of pairs of integers (l,r)(l,r) , such that 1≤l≤r≤|s|1≤l≤r≤|s| (where |s||s| is equal to the length of string ss ), such that at least one of the symbols sl,sl+1,…,srsl,sl+1,…,sr is equal to "1".
For example, if s=s= "01010" then f(s)=12f(s)=12 , because there are 1212 such pairs (l,r)(l,r) : (1,2),(1,3),(1,4),(1,5),(2,2),(2,3),(2,4),(2,5),(3,4),(3,5),(4,4),(4,5)(1,2),(1,3),(1,4),(1,5),(2,2),(2,3),(2,4),(2,5),(3,4),(3,5),(4,4),(4,5) .
Ayoub also thinks that he is smarter than Mahmoud so he gave him two integers nn and mm and asked him this problem. For all binary strings ss of length nn which contains exactly mm symbols equal to "1", find the maximum value of f(s)f(s) .
Mahmoud couldn't solve the problem so he asked you for help. Can you help him?
Input
The input consists of multiple test cases. The first line contains a single integer tt (1≤t≤1051≤t≤105 ) — the number of test cases. The description of the test cases follows.
The only line for each test case contains two integers nn , mm (1≤n≤1091≤n≤109 , 0≤m≤n0≤m≤n ) — the length of the string and the number of symbols equal to "1" in it.
Output
For every test case print one integer number — the maximum value of f(s)f(s) over all strings ss of length nn , which has exactly mm symbols, equal to "1".
Example
5
3 1
3 2
3 3
4 0
5 2
4
5
6
0
12 思维题,脑子不好使卡了我半天...问的是如何排列01串里m个1的位置是含有1的子串个数最大。可以逆向思维,用所有子串个数减去全为0的字符串的子串个数。而因为有关系:一个长为k的字符串的子串个数有k(k+1)/2个,故只需要排列好全0字符串即可。
分类讨论:当没有0时或者全为0时答案易得;当1的个数大于等于0的个数时,可以用1把每个0分隔开,这样能保证答案最大,(因为两个单独的0比连续的00所含子串个数少);当1的个数少于0的个数时,1要尽可能把0分开,m个1最多能分成m+1份,而必须要让0尽可能平均开,所以m+1不能整除n-m(0的个数)的话,要把余数拆成1,尽可能分给别的组,减的时候分别减一下即可。记得开long long。
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long t;
cin>>t;
while(t--)
{
long long n,m;
scanf("%lld%lld",&n,&m);
if(m==)
{
cout<<<<endl;
continue;
}
if(n==m)
{
cout<<n*(n+)/<<endl;
continue;
}
long long ans=(n+)*n/;
long long noz=n-m;
if(noz<=m)
{
ans-=noz;
cout<<ans<<endl;
continue;
}
long long num =noz/(m+);//每部分0的个数
long long res_group=noz%(m+);
ans=ans-(m+-res_group)*num*(num+)/-res_group*(num+)*(num+)/;
printf("%lld\n",ans);
}
return ;
}
Codeforces Round #619 (Div. 2) Ayoub's function的更多相关文章
- Codeforces Round #619 (Div. 2) A~D题解
最近网课也开始了,牛客上一堆比赛题目也没补,所以就D题后面的也懒得补了 A.Three String 水题 #include <cstdio> #include <cstring&g ...
- Codeforces Round #619 (Div. 2)
A. Three Strings 题意:给三个长度相同的非空字符串abc,依次将c中的每个字符和a或者b中对应位置的字符进行交换,交换必须进行,问能否使得ab相同. 思路:对于每一个位置,如果三个字符 ...
- Codeforces Round #245 (Div. 1) 429D - Tricky Function 最近点对
D. Tricky Function Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/problem/42 ...
- Codeforces Round #277 (Div. 2) A. Calculating Function 水题
A. Calculating Function Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/4 ...
- codeforces水题100道 第十题 Codeforces Round #277 (Div. 2) A. Calculating Function (math)
题目链接:www.codeforces.com/problemset/problem/486/A题意:求表达式f(n)的值.(f(n)的表述见题目)C++代码: #include <iostre ...
- Codeforces Round #277 (Div. 2)---A. Calculating Function (规律)
Calculating Function time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #277 (Div. 2)A. Calculating Function 水
A. Calculating Function For a positive integer n let's define a function f: f(n) = - 1 + 2 - 3 + ...
- Codeforces Round #619 (Div. 2)E思维+二维RMQ
题:https://codeforces.com/contest/1301/problem/E 题意:给个n*m的图形,q个询问,每次询问问询问区间最大的合法logo的面积是多少 分析:由于logo是 ...
- Codeforces Round #619 (Div. 2)D(模拟)
先把一种最长路线记录下来,根据k的大小存到ans中相应的答案再输出 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using n ...
随机推荐
- mysql渗透过程
1 打开目标站点:www.xxx.com 2 注册账号并登录,大概找下注入点,没找到 3 用namp -A -T4 目标站点扫描开放的服务 发现mysql等 4 猜弱口令 + 字典 对mysql进行 ...
- 阿里云打包成zip格式,批量下载
/** * 从阿里云下载文件 (以附件形式下载) 多个文件进行zip下载 第二种 * @param request * @param response */ @ResponseBody @Reques ...
- Spring Boot 2.x基础教程:找回启动日志中的请求路径列表
如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...
- docker 初识1
学习网址 https://git.oschina.net/yangllsdev/docker-training https://docs.docker.com/engine/installation/ ...
- web前端-基础篇
该篇仅是本人学习前端时,做的备忘笔记: 一.背景图片设置: 设置背景图时的css代码:background-image:url(图片的url路径); ps:设置好这个背景后请一定要设置该背景图片的大小 ...
- Linux Centos7文件系统
上期教大家创建分区,刚分区完成后没有文件系统,分区不能使用.本期教大家创建文件系统,(文件系统:操作系统通过文件系统管理文件及数据,创建文件系统的过程俗称格式化.)没有文件系统的设备称之为裸(raw) ...
- VS2015 编译程序时提示 无法查找或打开 PDB 文件
“mode.exe”(Win32): 已加载“C:\Windows\System32\api-ms-win-core-file-l2-1-0.dll”.无法查找或打开 PDB 文件.“mode.exe ...
- atoi()函数的用法
注意:atoi()函数并不能单纯的把某字符串中的某字母转化为单个数字. 用法参考:https://www.cnblogs.com/ralap7/p/9171613.html
- jquery 相同ID 绑定事件
本文链接:https://blog.csdn.net/lan_13217/article/details/84079441 http://hi.baidu.com/meneye/blog/item/1 ...
- 【Python】第一个程序---Helloworld!
对于大多数程序语言,第一个入门编程代码便是"Hello World!",以下代码为使用Python输出"Hello World!": #!/usr/bin/py ...