首页 > 其他分享 >SMU Spring 2023 Trial Contest Round 11

SMU Spring 2023 Trial Contest Round 11

时间:2023-06-01 18:22:46浏览次数:81  
标签:11 Contest int Spring ++ cin 括号 mp include

A. The Text Splitting

题意:给出字符串长度,给出p和q两种切割方式,任选其中一种,把字符串分割输出结果。

 

题解:先进行判断,p和q是否能整个的分割n,利用p和q的函数关系判断(见代码),再计算有几个p几个q,再进行输出即可

void solve()
{
    cin >> n >>  p >> q;
    cin >> s;
    if(p > q)
        swap(p,q);
    m = (n + p - 1) / p;
    for(int i = m; i >= 0; i--){
        if( (n - i * p) % q == 0){
            int l = i;
            while(l != 0){
                d.push_back(s.substr(0,p));
                s.erase(0,p);
                l--;
            }
            int r = (n - i * p) / q;
            while(r != 0){
                d.push_back(s.substr(0,q));
                s.erase(0,q);
                r--;
            }
            cout << d.size() << endl;
            for(auto i : d){
                cout << i << endl;
            }
            exit(0);
        }
    }
    cout << -1 << endl;
}

 

B. HDD is Outdated Technology

题解:就是从1到n之间对其序号的差取一个绝对值,再累加即可

oid solve()
{
    cin >> n;
    vector<PII> a(n);
    map<int,int> zz;
    for(int i = 0;i < n;i ++){
        int x;
        cin >> x;
        zz[x] = i + 1;
    }
    int p = 1;
    while(p != n){
        ans += abs(zz[p] - zz[p + 1]);
        p++;
    }
    cout << ans << endl;
}

 

C. Replace To Make Regular Bracket Sequence

题意:四种括号匹配问题。左括号不能匹配右括号时,可以更换左括号进行匹配,这时需要计数换了几个括号。问括号能否匹配,能匹配的话需要换多少个括号?

 

题解:对不符合的括号串先处理掉,然后利用堆栈解决,遇到右括号则与堆栈中的括号进行匹配。

oid solve()
{
    cin >> s;
    int one = 0,zero = 0;
    mp['<'] = mp['('] = mp['{'] = mp['['] = 1;
    mp['>'] = mp[')'] = mp['}'] = mp[']'] = 0;
    for(auto i : s){
        if(mp[i] == 1)
            one++;
        else
            zero ++;
        if(one < zero){
            cout << "Impossible" << endl;
            return ;
        }
    }
   // cout << one << ' ' << zero << endl;
    if(one != zero){
        cout << "Impossible" << endl;
        return ;
    }
    else{
        stack<char> tong;
        for(auto i : s){
            if(i == '<' || i == '[' || i == '{' || i == '('){
                tong.push(i);
            }
            else{
                if(i == ')'){
                    if(tong.top() != '(')
                        ans++;
                }
                else if(i == ']' && tong.top() != '[')
                    ans++;
                else if(i == '}' && tong.top() != '{')
                    ans++;
                else if(i == '>' && tong.top() != '<')
                    ans ++;
                tong.pop();
            }
        }
             cout << ans << endl;
    }
}

 

D. The Union of k-Segments

题解:

  1. 对点分类,分为左端点和右端点
  2. 所有点丢到一个vector里按照x坐标升序排序,坐标相同时优先考虑左端点
  3. 按照区间计数原理,从前往后扫描所有点,扫描到左端点计数器+1,右端点计数器-1,那么计数器>=k的区间都是合法区间
  4. 通过标记去维护合法区间的起始位置和结束位置,维护答案即可
#include  <map>
#include  <set>
#include  <cmath>
#include  <queue>
#include  <stack>
#include  <cstdio>
#include  <vector>
#include  <climits>
#include  <cstring>
#include  <cstdlib>
#include  <iostream>
#include  <algorithm>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long

using namespace std;

const int N = 1e9 + 10, mod = 1e9 +7;

//typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<char, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*

 */
string s;
vector<PII> a,ans;
void solve()
{
    cin >> n >> k;
    for(int i = 0;i < n;i ++){
        int l,r;
        cin >> l >> r;
        a.push_back({l,0});
        a.push_back({r,1});
    }
    sort(a.begin(),a.end());
    int l = 0;
    for(auto [x,y] : a){
        if(y == 0){
            t++;
            if(t == k)
                l = x;
        }
        else{
            if(t==k)
                ans.push_back({l,x});
            t--;
        }
    }
    cout << ans.size() << endl;
    for(auto [i,j] : ans){
        cout << i << ' ' << j << endl;
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int Ke_scholar = 1;
    //cin >> Ke_scholar ;
    while(Ke_scholar--)
        solve();
    return 0;
}

 

标签:11,Contest,int,Spring,++,cin,括号,mp,include
From: https://www.cnblogs.com/Kescholar/p/17449774.html

相关文章

  • 手把手教你Spring Cloud Alibaba教程:使用Nacos作为配置中心
    我们在上面:手把手教你SpringCloudAlibaba教程:nacos安装手把手教你SpringCloudAlibaba教程:使用nacos实现服务注册与发现了解了nacos和springCloudAlibaba的部署和使用,现在我们来了解下nacos作为配置中心应该如何使用。Nacos除了实现了服务的注册发现之外,还将配置中心功能整合......
  • springBoot+下载
    在springBoot我们上次文件和其他相比,就简单不少,现在我们在SpringBoot的基本框架基础上添加上传图片。一:没有新的jar包,但是在原有的jar包中必须需要有如下jar包。<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId......
  • Spring Boot架构中添加Swagger
    基于SpringBoot+Springmvc+mybatis+mybatis-generator代码自动生成架。在上面的文章中我们实行了基本springBoot架构,接下来我们给这个架构添加swagger接口调试:一:添加相应jar包,在pom.xml中添加如下代码:<!--swagger2配置pom开始--><dependency><groupId>io.springfox</groupId>......
  • SpringBoot中定时任务多线程任务
    SpringBoot使用Spring自带的Schedule来实现定时任务变得非常简单和方便。在这里个大家分享下。开启缓存注解@SpringBootApplication@EnableScheduling//开启定时任务publicclassApplication{publicstaticvoidmain(String[]args){SpringApplicat......
  • spring事务失效的场景
    spring事务失效的场景1.访问权限在AbstractFallbackTransactionAttributeSource类的computeTransactionAttribute方法中有个判断,如果目标方法不是public,则TransactionAttribute返回null,即不支持事务。也就是说,如果我们自定义的事务方法(即目标方法),它的访问权限不是public,而......
  • Spring的AOP复习
     连接点:所有业务方法切入点:被挖掉共性功能的业务方法 通知:共性功能构成的方法通知类型:前面还是后面  切面:描述切入点和通知的关系 目标对象 织入:将共性功能放回去 代理引入......
  • spring StateMachine简易使用
    SpringStateMachine是一个状态机框架,在Spring框架项目中,开发者可以通过简单的配置就能获得一个业务状态机,而不需要自己去管理状态机的定义、初始化等过程。今天这篇文章,我们通过一个案例学习下SpringStateMachine框架的用法。 pom依赖中添加<parent><groupId>org.......
  • MySQL 8错误日志出现"The table /home/work/mysql_3306/tmp/#sqla2b_298b06_4d is fu
    ##############    了解MySQL8.0.26的错误日志出现"Thetable /home/work/mysql_3306/tmp/#sqla2b_298b06_4disfu11!"的bug,暂时通过修改临时表的存储引擎为内存引擎解决  MySQL8.0.13开始引入新的临时内存表引擎TempTable,并将其作为内存中创建临时表的默认存......
  • SpringBoot项目中实现读写分离
    背景介绍面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极......
  • 前后端分离的架构,前端使用Vue2.6.10,后端使用SpringBoot2.0.0的ERP实现
    技术架构技术框架:SpringBoot2.0.0+Mybatis1.3.2+SLF4J1.7+Vue2.6.10+Ant-Design-Vue1.5.2+Mysql5.7+Redis运行环境:jdk8+IntelliJIDEA+maven+宝塔面板本地部署:1.小皮面板创建一个数据库,导入jsh_erp.sql文件至数据库中,该文件在后端程序的docs文件夹下。2.使用......