Educational Codeforces Round 125 (Rated for Div. 2)(A-C)

简介: 算法

A. Integer Moves


题意:

在平面直角坐标系上存在一个点(x,y),可以进行平移操作,要求每次移动后前后两点的坐标的距离开平方是整数


思路:

整理发现要么一次到位要么就需要两次变化,当然特判一下0的情况

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,j,t,a,b;
    cin>>t;
    map<int ,int >d1;
    for(i=0;i<=1050;i++){
            d1[i*i]=1;
    }
    while(t--)
    {
        cin>>a>>b;
        if(a==0&&b==0)
        {
            cout<<0<<endl;
        }
        else if(d1[a*a+b*b]!=0)
        {
            cout<<1<<endl;
        }
        else
        {
            cout<<2<<endl;
        }
    }
    return 0;
}


B. XY Sequence


题意:

构造一个长度为n的数列,要求他们的和不超过最大,并且单个元素不超过B,且a[i]=a[i-1]+x或者是a[i]=a[i-1]-y。


思路:

贪心的构造只要当前可以取,就想办法取它最大的,可以取的情况介绍a[i]<=B

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+1000;
long long  a[maxn];
int main()
{
    int n,i,j,t,B,x,y;
    cin>>t;
    while(t--)
    {
        cin>>n>>B>>x>>y;
        for(i=0;i<n+1;i++)
        {
            if(i==0) a[i]=0;
            else
            {
                if(a[i-1]+x<=B&&a[i-1]-y<=B)
                {
                    a[i]=max(a[i-1]+x,a[i-1]-y);
                }
                else
                {
                    if(a[i-1]+x>B)
                    {
                        a[i]=a[i-1]-y;
                    }
                    else
                    {
                        a[i]=a[i-1]+x;
                    }
                }
            }
        }
        long long ans=0;
        for(i=0;i<n+1;i++)
        {
            ans+=a[i];
//            cout<<a[i]<<" ";
        }
        cout<<ans<<endl;
    }
    return 0;
}


C. Bracket Sequence Deletion


题意:

给你一个只包含'(', ')'两种字符的字符串,每次操作选择它的最短前缀,如果最短前缀串是回文串或者是可以完成括号匹配的串,就可以进行抵消。


思路:

分析可得,要么最短前缀是(),或者((,)),剩下一种情况就是)开头的,不难发现如果是)开头的,只有当出现第二个),才能完成回文串抵消的操作,而且一定可以将中间全部抵消,所以直接模拟即可。

#include<bits/stdc++.h>
using namespace std;
bool check(string s2)
{
    for(int i=0;i<s2.length()/2;i++)
    {
        if(s2[i]!=s2[s2.length()-i-1]) {
            return false;
        }
    }
    return true;
}
int main()
{
    int n,i,j,t;
    string s1,s2;
    cin>>t;
    while(t--)
    {
        int f1=0,ans=0;
        cin>>n>>s1;
        i=0;s2="";
        while(i<n)
        {
            s2+=s1[i];
            if(s2[0]==')')
            {
                if(s1[i]==')') f1++;
                if(f1==2)
                {
                    ans++;
                    s2="";
                    f1=0;
                }
            }
            else
            {
                if(s2.length()==2)
                {
                    ans++;
                    s2="";
                    f1=0;
                }
            }
            i++;
        }
        cout<<ans<<" "<<s2.length()<<endl;
    }
    return 0;
}


相关文章
|
SQL 存储 前端开发
程序技术好文:面试知识点六:JavaWeb
程序技术好文:面试知识点六:JavaWeb
115 1
|
分布式计算 Scala Spark
Spark源码分析之ResultTask处理
ResultTask 执行当前分区的计算,首先从ShuffleMapTask拿到当前分区的数据,会从所有的ShuffleMapTask都拿一遍当前的分区数据,然后调用reduceByKey自定义的函数进行计算,最后合并所有的ResultTask输出结果,进行输出
2381 0
|
缓存 Java 数据库
在Shiro框架内使用缓存注解失效的解决办法
这个问题困扰了我好多天 问题 ServiceImpl类里的方法上有缓存注解,用于将返回的实体类存入redis,下次调用时就不需要通过数据库获取实体类信息。
1406 0
|
设计模式 Java
入门设计模式之单例模式
版权声明:本文为博主原创文章,未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80866262 ...
907 0
|
4天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
572 211
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
229 138