Codeforces Round #724 (Div. 2) 题解

文章目录

  • A. Omkar and Bad Story
  • B. Prinzessin der Verurteilung
  • C. Diluc and Kaeya
  • D. Omkar and Medians
  • E. Omkar and Forest
  • F. Omkar and Akmar

#724-Div.2

A. Omkar and Bad Story

直接set暴力加值,加满300300300个为止

#include <cstdio>
#include <set>
#include <map>
using namespace std;
#define maxn 105
set < int > ans;
map < int, int > mp;
int T, n;int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d", &n );mp.clear(), ans.clear();for( int i = 1, x;i <= n;i ++ )scanf( "%d", &x ), ans.insert( x ), mp[x] = 1;while( 1 ) {bool flag = 1;for( set < int > :: iterator it = ans.begin();it != ans.end();it ++ ) {set < int > :: iterator nxt = it; nxt ++;for( ;nxt != ans.end();nxt ++ )if( ! mp[( *nxt ) - ( *it )] ) {mp[( *nxt ) - ( *it )] = 1;ans.insert( ( *nxt ) - ( *it ) );if( ans.size() > 300 ) goto print;flag = 0;}}if( flag ) break;}print :if( ans.size() > 300 ) printf( "NO\n" );else {printf( "YES\n%d\n", ans.size() );for( set < int > :: iterator it = ans.begin();it != ans.end();it ++ )printf( "%d ", ( *it ) );printf( "\n" );}}return 0;
}

B. Prinzessin der Verurteilung

直接对字符串进行二十六进制位编码,长度一共就100010001000,所以其实MEXMEXMEX的长度是非常小的

可以直接暴力做

#include <iostream>
#include <cstdio>
#include <cmath>
#include <set>
using namespace std;
#define maxn 1005
#define int long long
set < int > st;
int T, n;
char s[maxn], ans[maxn];signed main() {scanf( "%lld", &T );while( T -- ) {scanf( "%lld %s", &n, s + 1 );int t;for( int len = 1;len <= n;len ++ ) {st.clear();for( int i = 1;i <= n - len + 1;i ++ ) {int j = i + len - 1;int v = 0, p = 1;for( int k = j;k >= i;k --, p *= 26 )v += p * ( s[k] - 'a' + 1 );st.insert( v );}int k = 1, p = 1; t = 0;while( k <= len ) {t += p;p *= 26;k ++;}int End = t + p;for( set < int > :: iterator it = st.begin();it != st.end();it ++ )if( ( *it ) != t ) goto print;else t ++;if( t != End ) goto print;}print :int cnt = 0, p = 1;while( t > 0 ) {ans[++ cnt] = ( ( t % 26 ) + 25 ) % 26 + 'a';t -= ( ans[cnt] - 'a' + 1 );t /= 26;}for( int i = cnt;i;i -- ) printf( "%c", ans[i] );printf( "\n" );}return 0;
}

C. Diluc and Kaeya

还是挺考思维的

会发现,频率(a,b)(a,b)(a,b)如果可以,后面接一段同样的频率(a,b)(a,b)(a,b),总体可以根据这个频率进行分块

而总体的频率仍然是(a+a,b+b)→(a,b)(a+a,b+b)\rightarrow(a,b)(a+a,b+b)(a,b)

所以有从左到右遍历所有前缀,则前缀的答案等于迄今为止这对前缀的出现次数

#include <map>
#include <cstdio>
#include <iostream>
using namespace std;
#define maxn 500005
map < pair < int, int >, int > mp;
int T, n;
char s[maxn];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 -- ) {mp.clear();scanf( "%d %s", &n, s + 1 );int D = 0, K = 0;for( int i = 1;i <= n;i ++ ) {if( s[i] == 'D' ) D ++;else K ++;int d = gcd( D, K );int NewD = D / d, NewK = K / d;mp[make_pair( NewD, NewK )] ++;printf( "%d ", mp[make_pair( NewD, NewK )] );}printf( "\n" );}return 0;
}

D. Omkar and Medians

考虑对于当前aia_{i}ai而言

如果ai<ai−1a_i<a_{i-1}ai<ai1也就相当于整个序列新增了极大值在最后面;反之新增了极小值在最前面

发现每次只能新增一个,那么aia_iai就不能跨过与ai−1a_{i-1}ai1有关的某个范围

(aia_iai不能比现有的最小的大于ai−1a_{i-1}ai1的值还大;aia_iai不能比现有的最大的小于ai−1a_{i-1}ai1的值还小)

这可以使用set来模拟

#include <set>
#include <cstdio>
using namespace std;
#define maxn 200005
set < int > s;
int T, n;
int a[maxn];int main() {scanf( "%d", &T );again :while( T -- ) {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )scanf( "%d", &a[i] );s.clear();s.insert( a[1] );for( int i = 2;i <= n;i ++ ) {int last = a[i - 1];if( a[i] == last ) continue;else if( last < a[i] ) {set < int > :: iterator it = s.upper_bound( last );if( it != s.end() && ( *it ) < a[i] ) {printf( "NO\n" );goto again;} else;} else {set < int > :: iterator it = s.lower_bound( last );if( it != s.begin() && ( *(-- it) ) > a[i] ) {printf( "NO\n" );goto again;} else;}s.insert( a[i] );}	printf( "YES\n" );}return 0;
}

E. Omkar and Forest

相邻格子相差不能超过111;如果某个单元格中的数字严格大于0,则至少应严格大于与其相邻的一个单元格中的数字 —— 这其实是bfs的过程

000确定后,便可以一层一层往外推

所以这是道结论题,答案就是2#的个数2^{\#的个数}2#

当然要特判整张图一个零都没有的情况需要减一(全都没填零)

#include <cstdio>
#define mod 1000000007
#define int long long
#define maxn 2005
int T, n, m;
char s[maxn];int qkpow( int x, int y ) {int ans = 1;while( y ) {if( y & 1 ) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}signed main() {scanf( "%lld", &T );while( T -- ) {scanf( "%lld %lld", &n, &m );int cnt = 0;for( int i = 1;i <= n;i ++ ) {scanf( "%s", s + 1 );for( int j = 1;j <= m;j ++ )cnt += ( s[j] =='#' );}if( cnt == n * m ) printf( "%lld\n", ( qkpow( 2, cnt ) - 1 + mod ) % mod );else printf( "%lld\n", qkpow( 2, cnt ) );}return 0;
}

F. Omkar and Akmar

最后的终止局面一定是AB(相邻不同颜色)或者A|B(相邻不同颜色中插个空)

对抗性博弈论,后手必胜(秉持对着填原则)

染色数一定是偶数,且染色球之间最多有一个空

枚举染色数iii,染色情况数为i!i!i!

环特殊分情况看第一个位置是否染色

如果第一个位置不是空,iii染色导致有iii个位置放置n−xn-xnx被限制死的空,Cin−iC_i^{n-i}Cini

如果第一个位置是空,Ci−1n−i−1C_{i-1}^{n-i-1}Ci1ni1

最后要乘个222,因为ABAB...BABA...算不同局面

#include <cstdio>
#define maxn 1000005
#define int long long
#define mod 1000000007
int n;
int fac[maxn], inv[maxn];int qkpow( int x, int y ) {int ans = 1;while( y ) {if( y & 1 ) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans;
}int C( int n, int m ) {if( n < m ) return 0;else return fac[n] * inv[m] % mod * inv[n - m] % mod;
}signed main() {scanf( "%lld", &n );fac[0] = inv[0] = 1;for( int i = 1;i <= n;i ++ ) fac[i] = fac[i - 1] * i % mod;inv[n] = qkpow( fac[n], mod - 2 );for( int i = n - 1;i;i -- ) inv[i] = inv[i + 1] * ( i + 1 ) % mod;int ans = 0;for( int i = 2;i <= n;i += 2 )ans = ( ans + ( C( i, n - i ) % mod + C( i - 1, n - i - 1 ) ) % mod * fac[i] % mod ) % mod;printf( "%lld\n", ans * 2 % mod );return 0;
} 

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

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

相关文章

2015沈阳区域赛

2015沈阳vj链接 题号题目知识点难度APattern StringBBazinga贪心签到题CMinimum Cut-CutDPagodas裴蜀定理签到题EEfficient TreeFFrogs欧拉函数银牌题GGame of Flying CircusHChessboardITriple二维线段树稳银快金JJohn’s FencesKKykneion asmaLNumber LinkMMeeting最短路&am…

模板:Prufer序列

所谓 Prufer 序列&#xff0c;就是 Prufer 发明的序列。 &#xff08;逃&#xff09; 前言 优雅的神奇魔术。 看名字很高大难&#xff0c;但实际上是高大清&#xff08;小清新&#xff09;。 很简单的建立起树与序列之间的双射&#xff0c;且这个序列的性质非常良好&#xff…

【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置

介绍系列目录&#xff1a;【NET CORE微服务一条龙应用】开始篇与目录在微服务的应用中&#xff0c;统一的认证授权是必不可少的组件&#xff0c;本文将介绍微服务中网关和子服务如何使用统一的权限认证主要介绍内容为&#xff1a;1、子服务如何实现和网关相同的鉴权方式2、接口…

Codeforces Round #725 (Div. 3) 题解

文章目录A. Stone GameB. Friends and CandiesC. Number of PairsD. Another Problem About Dividing NumbersE. Funny SubstringsF. Interesting FunctionG. Gift Set#725-Div.3A. Stone Game 先找到最大值最小值的位置&#xff0c;然后有三种选取&#xff08;两边中走一边/两…

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;切了不算啥…