您当前的位置: 首页 > 

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Codeforces Round #710 (Div. 3)

MangataTS 发布时间:2022-02-07 15:14:15 ,浏览量:0

文章目录
  • A. Strange Table
    • 题意
    • 解题思路
    • Code
  • B. Partial Replacement
    • 题意
    • 解题思路
    • Code
  • C. Double-ended Strings
    • 题意
    • 解题思路
    • Code
  • D. Epic Transformation
    • 题意
    • 解题思路
    • Code
  • E. Restoring the Permutation
    • 题意
    • 解题思路
    • Code
    • 最后

A. Strange Table 题意

给你一个以行为顺序的依次递增的矩阵,然后问你以列为顺序的第X个元素的值是多少

解题思路

很明显新的列数等于 ⌈ x n ⌉ \left \lceil \frac{x}{n} \right \rceil ⌈nx​⌉ ,新的行数等于 X X%n X,注意的是,这里取模如果等于0的话,表示的是最后一行

Code
#include
using namespace std;
#define ll long long
int main()
{
    ll t,n,m,x;
    scanf("%lld",&t);
    while(t--) {
        scanf("%lld%lld%lld",&n,&m,&x);
        ll hang = x % n;
        if(!hang) hang = n;
        ll lie = (long long)ceil(x*1.0/n);
//      printf("hang = %d,lie = %d\n",hang,lie);
        printf("%lld\n",(hang - 1)*m+lie);
    }

}
B. Partial Replacement 题意

给你一个长度为n的字符串,然后再满足首尾*都为X的情况下的问你最少需要多少X使得所有相邻X的距离都小于k

解题思路

在保证了首尾都为X的情况下,我们贪心的选取字符的间距,然后如果此字符的后面第K个字符不是*,那么我们就往回找 *,这样就能找到最少的更换次数了

Code
#include
#include
#include
#include
#include
#include
using namespace std;
#define mt(x) memset(x,0,sizeof x)
#define N 2021 
typedef long long ll;
char s[N];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,k,ans=2;
        scanf("%d %d",&n,&k);
        scanf("%s",s);
        int p=0,q=strlen(s)-1,l=q+1;
        while(s[p]!='*'&&s[p])p++;
        while(s[q]!='*'&&s[q])q--;
        s[p]='x';
        s[q]='x';
        if(p!=q)
        {
            int i=p+k;
            while(i            
关注
打赏
1665836431
查看更多评论
0.0361s