Codeforces Round #725 (Div. 3) 题解

文章目录

  • A. Stone Game
  • B. Friends and Candies
  • C. Number of Pairs
  • D. Another Problem About Dividing Numbers
  • E. Funny Substrings
  • F. Interesting Function
  • G. Gift Set

#725-Div.3

A. Stone Game

先找到最大值最小值的位置,然后有三种选取(两边中走一边/两边都走一点)

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define maxn 105
int T, n;
int a[maxn];
bool vis[maxn];int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )scanf( "%d", &a[i] );int minn = maxn, maxx = -maxn, pos_min, pos_max;for( int i = 1;i <= n;i ++ ) {if( a[i] < minn ) minn = a[i], pos_min = i;		if( a[i] > maxx ) maxx = a[i], pos_max = i;}int l = min( pos_min, pos_max ), r = max( pos_min, pos_max );printf( "%d\n", min( r, min( n - l + 1, l + n - r + 1 ) ) );}return 0;
}

B. Friends and Candies

首先糖果要能被均分,然后肯定是糖果多的人分给别人

#include <cstdio>
#define maxn 200005
int T, n;
int a[maxn];int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d", &n );int tot = 0;for( int i = 1;i <= n;i ++ ) {scanf( "%d", &a[i] );tot += a[i];}if( tot % n ) printf( "-1\n" );else {tot /= n;int ans = 0;for( int i = 1;i <= n;i ++ )if( a[i] > tot ) ans ++;printf( "%d\n", ans );}}return 0;
}

C. Number of Pairs

先排个序,用lower_bound/upper_bound查询要求值域中的值

#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 200005
#define int long long
int T, n, l, r;
int a[maxn];signed main() {scanf( "%lld", &T );while( T -- ) {scanf( "%lld %lld %lld", &n, &l, &r );int ans = 0;for( int i = 1;i <= n;i ++ )scanf( "%lld", &a[i] );sort( a + 1, a + n + 1 );for( int i = 1;i < n;i ++ ) {if( a[i] > r ) continue;int L, R;R = upper_bound( a + i + 1, a + n + 1, r - a[i] ) - a - 1 - 1;L = lower_bound( a + i + 1, a + n + 1, l - a[i] ) - a - 1 - 1;ans += R - L;}printf( "%lld\n", ans );}return 0;
}

D. Another Problem About Dividing Numbers

特判k=1的情况

最小的操作次数肯定是222,直接除成111,所以只需要考虑最大操作次数,在这之间的操作次数肯定都是可以达到的,显然

最大操作次数就是唯一质因数分解的幂次和

刚开始还担心根号带TTT跑不过(#.#)

#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int T, a, b, k;int gcd( int x, int y ) {if( x < y ) swap( x, y );if( ! y ) return x;else return gcd( y, x % y );
}int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d %d %d", &a, &b, &k );if( k == 1 ) {if( a == b ) printf( "No\n" );else if( a % b == 0 || b % a == 0 ) printf( "Yes\n" );else printf( "No\n" );continue;}int cnta = 0, Sqr = sqrt( a );for( int i = 2;i <= Sqr;i ++ )if( a % i == 0 )while( a % i == 0 ) a /= i, cnta ++;if( a != 1 ) cnta ++;int cntb = 0; Sqr = sqrt( b );for( int i = 2;i <= Sqr;i ++ )if( b % i == 0 )while( b % i == 0 ) b /= i, cntb ++;if( b != 1 ) cntb ++;if( k <= cnta + cntb ) printf( "Yes\n" );else printf( "No\n" );}return 0;
}

E. Funny Substrings

过分原始的暴力模拟不可取,疯狂自叠加字符串长度可以达到2502^{50}250级别,望而却步

事实上对于每一个字符串,我们只需要存下haha的个数,长度,以及前后各三个字符即可

因为只有这特殊的六个字符才可能与新的字符串相加时产生新的haha

#include <map>
#include <cstdio>
#include <iostream>
using namespace std;
#define int long long
struct word {int len, cnt;string s;
};
map < string, word > mp;string GetHead( string s ) {if( s.size() < 3 ) return s;else return s.substr( 0, 3 );
}string GetTail( string s ) {if( s.size() < 3 ) return s;else return s.substr( s.size() - 3, 3 );
}int calc( string s, string p ) {int cnt = 0;for( int i = 0;i + p.size() <= s.size();i ++ )if( s.substr( i, p.size() ) == p ) cnt ++;return cnt;
}word merge( word a, word b ) {word New;New.len = a.len + b.len;New.cnt = a.cnt + b.cnt + calc( GetTail( a.s ) + GetHead( b.s ), "haha" );New.s = a.s + b.s;if( New.s.size() > 7 ) New.s = GetHead( a.s ) + "#" + GetTail( b.s );return New;
}signed main() {int T, n;string a, b, c, op, plus;scanf( "%lld", &T );while( T -- ) {mp.clear();scanf( "%lld", &n );int ans = 0;while( n -- ) {cin >> a >> op >> b;if( op == ":=" ) {word New;New.cnt = calc( b, "haha" );New.len = b.length();New.s = b;mp[a] = New;}else {cin >> plus >> c;mp[a] = merge( mp[b], mp[c] );}ans = mp[a].cnt;}printf( "%lld\n", ans );}return 0;
}

F. Interesting Function

差分一下

发现对于任何数位上的值,完整向前一位进111,变换次数都是101010

所以枚举数位,看前面进位次数乘个101010,再加上该数位的值即可

#include <cstdio>
#define int long long
int cnt[20];int solve( int x ) {int ans = 0;while( x ) {int r = x % 10; x /= 10;ans += x * 10 + r;}return ans;
}signed main() {int T, l, r;scanf( "%lld", &T );while( T -- ) {scanf( "%lld %lld", &l, &r );printf( "%lld\n", solve( r ) - solve( l ) );}return 0;
}

G. Gift Set

能分成nnn个组合,就蕴含n−1n-1n1

所以考虑二分组合个数ttt,假设x>y,a>bx>y,a>bx>y,a>b

x,yx,yx,y都至少会减去t×bt\times bt×b个,剩下了t×(a−b)t\times(a-b)t×(ab)就随机让x−t×b,y−t×bx-t\times b, y-t\times bxt×b,yt×b补上

用向下取整判断即可

#include <cstdio>
#include <iostream>
using namespace std;
int T, x, y, a, b;bool check( int t ) {int X = x - t * b, Y = y - t * b;if( X / ( a - b ) + Y / ( a - b ) >= t ) return 1;else return 0;
}int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d %d %d %d", &x, &y, &a, &b );if( a == b ) {printf( "%d\n", min( x / a, y / b ) );continue;}if( x < y ) swap( x, y );if( a < b ) swap( a, b );int l = 0, r = y / b, ans;while( l <= r ) {int mid = ( l + r ) >> 1;if( check( mid ) ) ans = mid, l = mid + 1;else r = mid - 1;}printf( "%d\n", ans );}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I - Triple HDU - 5517

I - Triple HDU - 5517 题意&#xff1a; 由多重集A和多重集B&#xff0c;<a,b>∈A&#xff0c;<c,d,e>∈B&#xff0c;集合CA * B{<a,c,d>|<a,b>∈A&#xff0c;<c,d,e>∈B and be}。 现在需要你求出有多少个<a,c,d>满足&#xff1a;不…

模板:广义二项式反演/广义容斥(组合数学)

文章目录前言经典容斥原理广义二项式反演/广义容斥min-max 容斥所谓二项式反演&#xff0c;就是对两个项的式子进行反演。 &#xff08;逃&#xff09; 前言 期望和容斥是我的感性二兄弟&#xff01; 之前的容斥我基本也都是靠感性理解做的… 感性理解就会导致&#xff1a;考…

WebApiClient与Asp.net core DI的结合

1 WebApiClient一款基于HttpClient封装&#xff0c;只需要定义c#接口并修饰相关特性&#xff0c;即可异步调用远程http接口的客户端库WebApiClientWebApiClient.ExtensionsWebApiClient.Tools2 Http接口的注册与提供2.1 声明远程端http接口public interface IBaiduApi : IHttpA…

Codeforces Round #717 (Div. 2)

Codeforces Round #717 (Div. 2) CodeForces 1516 题号题目知识点ATit for Tat贪心BAGAGA XOOORRR思维题CBaby Ehab Partitions AgainDCutEBaby Ehab Plays with Permutations

梁迪:源于热爱乐于分享,MVP代表圆桌会议

梁迪《MVP代表圆桌会议》MVP代表圆桌会议&#xff0c;源于热爱乐于分享。来自全国的MVP&#xff08;周岳、苏震巍、蒋金楠、胡浩、卿毅、项斌、刘浩杨、施兆熊、方洁影、方骥、刘鑫、童广林&#xff09;作经验交流。梁 迪微软最有价值专家&#xff08;MVP&#xff09;项目大…

2.7模拟总结

文章目录前言考场题目解析T1T2T3代码T1 forestT2 eulerT3 graph前言 130pts 2010010 终于没有挂分&#xff01; 开心&#xff01; 然而今天的题确实过于阴间…三道题几乎都没法写暴力&#xff0c;爆零场了属于是。 我这个分数都能到rnk4勒。 &#xff08;rnk39->rnk4&#…

基于xlua和mvvm的unity框架

1、框架简介这两天在Github上发现了xlua的作者车雄生前辈开源的一个框架—XUUI&#xff0c;于是下载下来学习了一下。XUUI基于xlua&#xff0c;又借鉴了mvvm的设计概念。xlua是目前很火的unity热更方案&#xff0c;不仅支持纯lua脚本热更&#xff0c;也可以做 C# 代码的bug hot…

A - Tit for Tat CodeForces - 1516A

A - Tit for Tat CodeForces - 1516A 题意&#xff1a; 一个长度为 n 的数组&#xff0c;现在希望你对这个数组进行至多k次操作&#xff1a;在数组中选择 2 个不同的元素&#xff0c;将第一个元素加 1 &#xff0c;然后从第二个元素减 1 。不过他有一个要求&#xff0c;进行操…

Codeforces Round #703 (Div. 2) 题解

文章目录A. Shifting StacksB. Eastern ExhibitionC. Guessing the GreatestD. Max MedianE. Paired PaymentF. Pairs of Paths#703 (Div. 2)A. Shifting Stacks 从左往右构造递增0,1,2...&#xff0c;如果这样都不能递增就肯定无解 雷区&#xff1a;不能用等差数列算个数&am…

AGAGA XOOORRR CodeForces - 1516B

AGAGA XOOORRR CodeForces - 1516B 题意&#xff1a; 给定一个长度为n的序列&#xff0c;对其进行若干次操作&#xff0c;每次操作将某相邻两数变为他们的异或和&#xff08;操作后序列长度减一&#xff09;。问是否可以经过若干次操作&#xff0c;得到一个长度至少为2且所有…

2.8模拟总结

前言 80pts 303020 rnk10 三个暴力分… T2拿虚树玩了半天结果假了qwq 乍一看似乎都挺可做的。 但是一道都做不出来 &#xff08;觉得写考场过程有点流水账&#xff0c;不写了&#xff0c;一些想说的写在对应题目里吧&#xff09; 题目解析 T1 三角查找&#xff08;triangle&…

如何在ASP.NET Core中使用JSON Patch

原文&#xff1a; JSON Patch With ASP.NET Core作者&#xff1a;.NET Core Tutorials译文&#xff1a;如何在ASP.NET Core中使用JSON Patch地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10433615.html译者&#xff1a;Lamond LuJSON Patch是一种使用API显式更新文档的方…

Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) 题解

文章目录A. Prison BreakB. Restore ModuloC. Basic DiplomacyD. PlaylistE. Skyline PhotoF. Useful Edges#709 (Div. 2)A. Prison Break 就是每个监狱破一扇门&#xff0c;输出aba\times bab即可 B. Restore Modulo 就是取模意义下的操作&#xff0c;分大小操作&#xff0…

351E. Jeff and Permutation

351E. Jeff and Permutation 题意&#xff1a; 一个长度为n的序列&#xff0c;你可以选择一些位置&#xff0c;使其变成相反数&#xff0c;问逆序对最少是多少&#xff1f; 题解&#xff1a; 对于第i位&#xff0c;我们开始考虑他能决定的逆序对&#xff1f;对于其他任意位…

.NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接

众所周知在.NET下的RSA类所生成的密钥为Xml格式&#xff0c;而其他语言比如java一般使用pkcs8格式的密钥&#xff0c;JavaScript一般使用pkcs1格式。我们在开发过程中很可能遇到需要与其他语言开发的api进行对接&#xff0c;如果遇到RSA加密解密&#xff0c;我们肯定需要保证ke…

2.9模拟总结

文章目录前言题目解析序列计数&#xff08;sequence&#xff09;T2 网格选点&#xff08;grid&#xff09;T3 孤立点集&#xff08;isolated&#xff09;代码T1T2T3总结前言 180pts 3050100 rnk10 题目比较简单的一场考试。 不太满意。 T3是做过的原题&#xff0c;切了不算啥…

AtCoder Beginner Contest 203(Sponsored by Panasonic)题解

文章目录A - ChinchirorinB - AtCoder CondominiumC - Friends and Travel costsD - PondE - White PawnF - WeedABC203A - Chinchirorin 三个条件if判 #include <cstdio> int main() {int a, b, c;scanf( "%d %d %d", &a, &b, &c );if( a b ) …

AcWing 1068. 环形石子合并

AcWing 1068. 环形石子合并 题意&#xff1a; n堆石头围成一个圈&#xff0c;然后将相邻两堆合并成新的一堆&#xff0c;得分为新的一堆的石头数 问最高得分合最低得分 题解&#xff1a; 很简单&#xff0c;区间dp的模板题 和这个题一样 状态转移方程&#xff1a; dpmax[i]…

2.10模拟总结

文章目录前言题目解析随机减法&#xff08;calculate&#xff09;大图书馆&#xff08;bibliotheca&#xff09;子串选取 &#xff08;substr&#xff09;代码T1T2T3总结前言 200pts 4010060 rnk3 拿到牌勒嘿嘿嘿&#xff08;脑补流口水黄豆&#xff09; T3两个log想在ybt的机…

ABP VNext 微服务演示,项目状态和路线图

在ABP vNext上的第一个公告之后,我们对代码库进行了很多改进(GitHub存储库上的1100多次提交).我们已经创建了功能,示例,文档等等.在这篇文章中,我想告诉你一些新闻和项目的状态.ABP微服务演示解决方案ABP框架的主要目标之一是提供创建微服务解决方案的便利基础设施.我们一直在努…