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;
}

SMU Spring 2023 Trial Contest Round 11的更多相关文章

  1. 2014 Multi-University Training Contest 9#11

    2014 Multi-University Training Contest 9#11 Killing MonstersTime Limit: 2000/1000 MS (Java/Others)   ...

  2. int和integer;Math.round(11.5)和Math.round(-11.5)

    int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可 ...

  3. Math.round(11.5)等于()Math.round(-11.5)等于()

    几天前去面试,这道简单的题目居然做错了,看来基础就是慢慢积累的.并不断使用和复习才会成为高手,假设基础不是那么熟练.恐怕在成为高手的路上会困难重重.所以在做项目的间歇时间.偶尔回顾一下最基础的知识.是 ...

  4. BestCoder Round #11 (Div. 2) 题解

    HDOJ5054 Alice and Bob Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  5. Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

    1.先说下怎么理解 round()方法可以这样理解: 将括号内的数+0.5之后,向下取值, 比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3; roun ...

  6. 【Java面试题】59 Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

    Math类中提供了三个与取整有关的方法:ceil.floor.round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11. ...

  7. Math.round(11.5)

    Math.round(-11.5); Math.round(11.5); 经常看到这句代码,特意来总结一下. 查阅资料一直有人说是"四舍六入五成双",四舍六入没错,不过遇到正负数的 ...

  8. java基础面试题:Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

    package com.swift; public class Math_Round { public static void main(String[] args) { /* * Math roun ...

  9. BestCoder Round #11 (Div. 2) 前三题题解

    题目链接: huangjing hdu5054 Alice and Bob 思路: 就是(x,y)在两个參考系中的表示演全然一样.那么仅仅可能在这个矩形的中点.. 题目: Alice and Bob ...

  10. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

    结果: 12,-11 原因: Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11.四舍五入的原理是在参数上加0.5然后进行下取整.

随机推荐

  1. 一文详解分布式 ID

    前言 分布式系统中,我们经常需要对数据.消息等进行唯一标识,这个唯一标识就是分布式 ID,那么我们如何设计它呢?本文将详细讲述分布式 ID 及其生成方案. 一.为什么需要分布式 ID 目前大部分的系统 ...

  2. Markdown常用语法详解

    背景知识 什么是html html是一种网页标记语言.我们平常见到的那么好看的网页就是通过html语言来编写的. html语言举例: <h1>hello world</h1> ...

  3. 【论文阅读】ICRA2022: Panoptic Multi-TSDFs: a Flexible Representation for Online Multi-resolution Volumetric Mapping and Long-term Dynamic Scene Consistency

    Type: ICRA Year: 2022 tag: SLAM 参考与前言 论文链接:https://arxiv.org/abs/2109.10165 代码链接:https://github.com/ ...

  4. P5327 题解

    考虑把贡献摊到每个点上计算,每个点带来的贡献实际上是经过它的路径并大小,算完求和之后在除以 \(2\) 就得到了答案. 考虑怎么计算路径并大小. 考虑这样一个办法,将所有路径的起始点和终点按照 DFS ...

  5. 在audio DSP中如何做软件固化

    在audio DSP中, 软件的code和data主要放在3种不同的memory上,分别是片内的ITCM.DTCM和片外的memory(比如DDR)上.ITCM只能放code,DTCM只能放data, ...

  6. P2910

    #include<iostream> #include<utility> #include<vector> using namespace std; typedef ...

  7. 【漏洞分析】DoughFina 攻击事件分析:不做任何参数检查的去杠杆合约

    背景介绍 2024 年 7 月 12 日,DoughFina 协议遭受了黑客攻击,造成本次攻击的主要原因是 ConnectorDeleverageParaswap 合约没有对输入参数进行检查,且该合约 ...

  8. IPv6、双栈与隧道

    双栈策略 实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈.具有双协议栈的结点称作"IPv6/v4结点",这些结点既可以收发IPv4分组,也可以 ...

  9. 【2024最新】4000字搞懂sora!一张脑图贯穿!

    话不多说,上图! 下面就是对sora的具体阐释: Sora是OpenAI推出的一款革命性的视频生成模型,能够根据文本指令.静态图像或视频生成长达60秒的完整视频.这一模型基于扩散式模型和自注意力深度学 ...

  10. 「比赛记录」CF Round 954 (Div. 3)

    Codeforces Round 954 (Div. 3) 题目列表: A. X Axis B. Matrix Stabilization C. Update Queries D. Mathemati ...