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 ...
随机推荐
- Go_sqlx和占位符
sqlx使用 第三方库sqlx能够简化操作,提高开发效率. 安装 go get github.com/jmoiron/sqlx package main import ( "fmt" ...
- 每天进步一点点------Allegro手工建立电路板
手工建立电路板步骤(以某个四层板为例): (1)file---new---board/board wizard来建立.brd电路板文件.设置名称和保存路径后,要设置绘图区域的大小,setup---dr ...
- 【做题笔记】CF1311A、B、C
或许以后会有D. A 题目大意:给定两个整数 \(a,b\) ,每次可以进行一下任意一个操作: \(a\) 加上任意一个正奇数 \(b\) 减去任意一个正偶数 问是否可以通过若干次操作把 \(a\) ...
- redis架构
hash槽16384个,0-16383 master1(slave101,slave102) master2 (slave201,slave202) master 3 (slave30 ...
- Flask 教程 第十九章:Docker容器上的部署
本文翻译自The Flask Mega-Tutorial Part XIX: Deployment on Docker Containers 这是Flask Mega-Tutorial系列的第十九部分 ...
- jmeter的使用---录制脚本
1.设置fidder 2.在fidder中导出请求,选择jmx格式
- (DFS)HDU_1241 Oil Deposits
HDU_1241 Oil Deposits Problem Description The GeoSurvComp geologic survey company is responsible f ...
- .NetCore中使用HttpHeader
httpContextAccessor.HttpContext.Request.Headers[key]; 可以获取一个StringValues,需要注意调试中显示的Headers的key,并不是实际 ...
- vue使用axios访问后台接口
链接1:https://segmentfault.com/a/1190000012635783#item-2 // axios 使用post方式传递参数,后端接受不到,怎么解决 链接2:http ...
- A task in a suit and a tie:paraphrase generation with semantic augmentation解读
1.该算法核心:在seq2seq模型的编码器中增加语义的frame 和 roles 2.上图为算法整个流程: 1).首先输入一句话s,SLING会使用frame和role label注释输入语句s,然 ...