A. Remove Duplicates

题意大概就是从左到右数字最先数完的最先输出

所以我们可以在输入每个数时记录每个数的出现次数,然后在循环一遍,每次该数字的次数减1,当数字的次数只剩1的时候就输出这个数字.

#include <bits/stdc++.h>
//#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 2e3 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
vector<int> a, b;
void solve()
{
cin >> n;
set<int> S;
vector<int> a,b;
int vis[N] = {0};
for(int i = 0;i < n; i++){
int x;
cin >> x;
vis[x] ++;
a.push_back(x);
}
for(int i = 0;i < a.size(); i++){
if(vis[a[i]] == 1){
b.push_back(a[i]);
}
else
vis[a[i]]--;
}
cout << b.size() << endl;
for(auto i : b){
cout << i << ' ' ;
}
}
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;
}

B. File Name

题意大概就是说不能出现三个及以上的x

所以我们每找到一个x,就取找它后面有多少个x,如果大于2,ans就加上x的个数 - 2,因为题目要求是可以允许两个及以下x存在的

#include <bits/stdc++.h>
//#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 2e3 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
vector<int> a, b;
void solve()
{
cin >> n;
string s;
cin >> s;
int ans = 0;
for(int i = 0; i < s.size(); i++){
if(s[i]!='x')
continue;
m = i;
while(s[i] == 'x' && i < s.size()){
i++;
}
if(i - m > 2)
ans += (i - m - 2);
}
cout << ans << 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;
}

C. Letters

题意大概就是给你n层楼,m封信件,再给你每层楼有多少房间和m件信封需要送到多少号房间

因为信封给的是房间号,所以我们可以先用前缀和将前面的房间存起来,对于每封信件我们可以二分找到房间数,然后减去它上层楼的房间数就是当前楼的第几间房了.

当然由于他给的信封房间号是保证递增的,也可以每次判断上一封信件放在几楼,再跟进当下的房间数在其基础上进行加多少房间或者不加(就在当前楼).

#include <bits/stdc++.h>
//#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 2e3 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
vector<int> a, b;
void solve()
{
cin >> n >> m;
vector<int> a,b;
cin >> k;
a.push_back(k);
for(int i = 1;i < n; i++){
int x;
cin >> x;
a.push_back(x + a[i - 1]);
}
for(int i = 0 ;i < m; i++){
int x;
cin >> x;
auto it = lower_bound(a.begin(),a.end(),x) - a.begin();
if(lower_bound(a.begin(),a.end(),x) == a.begin())
cout << 1 << ' ' << x << endl;
else
cout << it + 1 << ' ' << x - a[it - 1] << 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;
}

D.Almost Arithmetic Progression

题意大概就是对每个数+1,-1,或者不变,问是否可以组成一个等差数列

对于小于2个数的特殊处理一下,其余由于前面两个数三种变化各有9种组合方式,所以我们可以直接暴力求解

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t;
/*
*/
void solve()
{
cin >> n;
vector<int> a(n);
for(int i = 0;i < n; i++){
cin >> a[i];
}
if(n <= 2){
cout << 0 << endl;
return ;
}
int ans = inf;
for(int i = -1;i <= 1;i ++){
for(int j = -1; j<= 1; j++){
vector<int> b(a);
b[0] += i;
b[1] += j;
int d = b[1] - b[0];
int res = abs(i) + abs(j);
for(int k = 2; k < n && res <= ans; k++){
int dd = b[k] - b[k - 1];
if (dd == d)
continue;
else if(dd == d + 1){
b[k]--;
res ++;
}
else if(dd == d - 1){
b[k] ++;
res ++;
}
else
res = inf;
}
ans = min(res, ans);
}
}
if(ans == inf)
cout << -1 << endl;
else
cout << ans << 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;
}

E.Bus Video System

题意大概就是给你公交车每站上下车的人数和公交车的最大限乘人数,问你在开始的时候公交车人数有多少情况

可以先求出前缀和,找到上车人数最多的时候,用限乘减去它就是可以在此之前车上最多承载的人数,当然也有可能全是下车的,所以也要找到下车人数最多的时候,即要保证在最开始车上有这么多人,当然车上最开始也是可以一个人都没有的,所以还要两者的差值再加上+1

 #include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t;
/*
*/
int a[N];
void solve()
{
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> a[i];
a[i] = a[i] + a[i - 1];
}
int r = min(m, m - *max_element(a + 1, a + n + 1));
int l = max(0ll, -*min_element(a + 1, a + n + 1));
cout << max(0ll, r - l + 1) << 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;
}

F.Mentors

题意大概就是给出n个人的能力值,能力值大的可以当能力值小的人的老师,但是现在有m个矛盾,发生矛盾的两人不能成为师生,问最后每个人可以当多少人的老师

可以先用a,b两个数组存能力值,对b数组排序,再用一个数组c存每个人可以成为多少人的老师,对循环a数组,对每个人的能力值去b数组中二分查找,其对应下标就是该数组a中能力值的人的学生数,最后对输入的各个矛盾,判断谁能力值更大,大的那个人学生数减1即可

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
int a[N];
void solve()
{
cin >> n >> k;
vector<int> a(n);
for(int i = 0;i < n; i++){
cin >> a[i];
}
auto b = a;
vector<int> c(n,0);
sort(b.begin(), b.end());
for(int i = 0;i < a.size(); i++){
c[i] = lower_bound(b.begin(), b.end(),a[i]) - b.begin();
}
while(k--){
int x,y;
cin >> x >> y;
x--,y--;
if(a[x] > a[y])
c[x]--;
else if(a[x] < a[y])
c[y]--;
}
for(auto i : c)
cout << i << ' ';
}
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;
}

G.Petya's Exams

题意大概就是学生要在n天内完成m场考试,给出每场考试知道的日期和考试日期以及需要为这场考试复习需要多少天,问能否给出一个合理的规划将所有每场考试开考前复习完,不能就输出-1,能就输出n天的规划

在输入的时候可以先标记每场考试的日期,在之后的考试日期有冲突的可以直接输出-1,再就是可以对每场考试按终止日期排序,在此之前每过一天就复习天数减1,如果到考试时复习天数还未减至0说明不能完成复习,直接输出-1即可

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define endl '\n'
#define int long long using namespace std; const int N = 1e5 + 10, mod = 1e9 +7; //typedef long long ll;
typedef pair<int,int> PII;
//queue<PII> q1;
map<vector<int>, int > mp;
//priority_queue <int,vector<int>,greater<int> > q2;
int n,m,t,k;
/*
*/
int a[N];
struct Time{
int s,e,d,id;
bool operator < (const Time &s)const {
if(e != s.e) return e < s.e;
}
}day[N];
void solve()
{
cin >> n >> m;
vector<int> a(n + 1);
for(int i = 0;i < m; i++){
cin >> day[i].s >> day[i].e >> day[i].d ;
day[i].id = i + 1;
if(a[day[i].e]) {
puts("-1");
exit(0);
}
a[day[i].e] = m + 1;
}
sort(day, day + n);
for(auto [s,e,d,id] : day){
for(int i = s;i < e && d > 0; i++){
if(a[i])
continue;
a[i] = id;
d--;
}
if(d == 0)
continue;
puts("-1");
exit(0);
}
for(int i = 1;i <= n; i++){
cout << a[i] << ' ';
}
}
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 10的更多相关文章

  1. Spring 源码学习笔记10——Spring AOP

    Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...

  2. Codeforces Beta Round #10 D. LCIS

    题目链接: http://www.codeforces.com/contest/10/problem/D D. LCIS time limit per test:1 secondmemory limi ...

  3. spring security 3中的10个典型用法小结

    spring security 3比较庞大,但功能很强,下面小结下spring security 3中值得 注意的10个典型用法 1)多个authentication-provide可以同时使用 &l ...

  4. Codeforces Beta Round #10 D. LCIS 动态规划

    D. LCIS 题目连接: http://www.codeforces.com/contest/10/problem/D Description This problem differs from o ...

  5. Codeforces Beta Round #10 C. Digital Root 数学

    C. Digital Root 题目连接: http://www.codeforces.com/contest/10/problem/C Description Not long ago Billy ...

  6. Codeforces Beta Round #10 B. Cinema Cashier 暴力

    B. Cinema Cashier 题目连接: http://www.codeforces.com/contest/10/problem/B Description All cinema halls ...

  7. Codeforces Beta Round #10 A. Power Consumption Calculation 水题

    A. Power Consumption Calculation 题目连接: http://www.codeforces.com/contest/10/problem/A Description To ...

  8. Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟

    A. Gabriel and Caterpillar 题目连接: http://www.codeforces.com/contest/652/problem/A Description The 9-t ...

  9. spring 5.x 系列第10篇 —— 整合mongodb (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于com.heibaiying. ...

  10. # 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

随机推荐

  1. Android程序获取鸿蒙手机设备信息(是否鸿蒙手机、版本号、小版本号等)

    1.效果图 鸿蒙手机 --> 关于手机的截图: Android程序获取鸿蒙手机设备信息的截图: 2.实现 本案例DEMO的实现主要借鉴了网上现有的资料: https://blog.csdn.ne ...

  2. 利用 device_map、torch.dtype、bitsandbytes 压缩模型参数控制使用设备

    为了更好的阅读体验,请点击这里 device_map 以下内容参考 Huggingface Accelerate文档:超大模型推理方法 在 HuggingFace 中有个重要的关键字是 device_ ...

  3. PHP接入苹果支付

    Ios苹果支付流程: 客户端先从苹果获取内购Id. 客户端将内购id,金额.用户id等传给服务端获取一个自己服务端生成的订单号. 客户端向苹果发起支付. 支付成功后,客户端从本地拿支付凭证.将支付凭证 ...

  4. SD中的VAE,你不能不懂

    什么是VAE? VAE,即变分自编码器(Variational Autoencoder),是一种生成模型,它通过学习输入数据的潜在表示来重构输入数据. 在Stable Diffusion 1.4 或 ...

  5. sprak应用执行过程

  6. 分布式文件系统 FastDFS 整理

    1.FastDFS 1.1.了解基础概念 1.1.1.什么是分布式文件系统? 全称:Distributed File System,即简称的DFS 这个东西可以是一个软件,也可以说是服务器,和tomc ...

  7. 灰色预测GM(1,1)模型的理论原理

    灰色预测是对时间有关的灰色过程进行预测.通过建立相应的微分方程模型,从而预测事物未来发展趋势的状况. 由于笔者的水平不足,本章只是概括性地介绍GM(1,1)模型的理论原理,便于对初学者的初步理解 目录 ...

  8. Spring声明事务和分布式事务处理技术

    Spring声明事务的两种方式 方式一.传统的编程式事务管理: 需要手动编写代码在业务层注入事务管理模板(一般不用) 方式二.基于 AOP 技术实现的声明式事务管理: Spring 声明式事务管理在底 ...

  9. ROS2开发BUG记录:在将 use_sim_timer 置为 true 时,节点的 Timer_Callback 行为“异常”

    问题: 在将 use_sim_timer 置为 true 时,节点 Timer_Callback 行为 "异常" .在回调函数中,使用 self.get_logger().info ...

  10. JavaSE进阶核心之class类

    Java顶级对象之Object 什么是Object类 Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入 Object类是所有java类的 ...