当前位置: 首页 > news >正文

Codeforces Round 913 (Div. 3) A~E

目录

A. Rook 

问题分析: 

B. YetnotherrokenKeoard

问题分析:  

C. Removal of Unattractive Pairs

问题分析:  

D. Jumping Through Segments

问题分析:  

E. Good Triples

问题分析:  


A. Rook 

问题分析: 

给一个棋子将其同行同列的位置输出

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cin>>T;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
#define lowbit(x) (x&(-x))
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
typedef pair<int,int>pii;
const int N =1e5+7;
signed main()
{IOS
use{string a;cin>>a;char x=a[0];int num=a[1]-'0';for(int i=1;i<=8;i++){if(i!=num)cout<<x<<i<<endl;}for(int i=0;i<=7;i++){if('a'+i!=x){cout<<(char)('a'+i)<<num<<endl;}}}return 0;
}

B. YetnotherrokenKeoard

 

问题分析:  

一个字符串,当当前字符为'b'时,删除新字符串最右边的 小写字符,当当前字符为'B'时删除新字符串最右边的大写字符,没有则不删除,除去'b'和'B'的其他字符添加到新字符串当中,然后输出。

可以通过栈来存储新字符串当中的大小写字符的位置,然后遇到相应的'b' or 'B',将栈顶的位置标记,最后按照标记输出原字符串的字符即可

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cin>>T;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
#define lowbit(x) (x&(-x))
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
typedef pair<int,int>pii;
const int N =1e5+7;
signed main()
{IOS
use{string a;cin>>a;stack<int>lowi,upi;vct<bool>st(a.LEN);for(int i=0;i<a.LEN;i++){if(a[i]=='b'){st[i]=1;if(lowi.empty())continue;else st[lowi.top()]=1,lowi.pop();}else if(a[i]=='B'){st[i]=1;if(upi.empty())continue;else st[upi.top()]=1,upi.pop();}else {if(islower(a[i])){lowi.push(i);}else {upi.push(i);}}}for(int i=0;i<a.LEN;i++){if(!st[i])cout<<a[i];}cout<<"\n";
}return 0;
}

C. Removal of Unattractive Pairs

 

问题分析:  

 给定字符串,如果相邻两个字符不同,可以删除这两个字符,求出最终可以剩下几个字符

我们统计每个字符的数量,为了保证最后剩下的字符个数最少,我们贪心地用个数次大的字符与个数最大的字符相抵消,因为需要维护数量的降序排序,我们选择使用大根堆来维护,我们每次弹出堆顶的两个元素,将他们互相抵消,也就是都减一,如果大于零就再放回堆当中,最终堆内会只剩下一个数,也就是最短的字符串长度

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cin>>T;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
#define lowbit(x) (x&(-x))
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
typedef pair<int,int>pii;
const int N =1e5+7;
signed main()
{IOS
use{int n;cin>>n;string a;cin>>a;vct<int>cnt(26);for(int i=0;i<a.LEN;i++){cnt[a[i]-'a']++;}priority_queue<int>q;for(int i=0;i<26;i++){if(cnt[i]!=0)q.push(cnt[i]);}while(q.size()>1){int x=q.top();q.pop();int y=q.top();q.pop();x--;y--;if(x>0)q.push(x);if(y>0)q.push(y);}if(q.empty())cout<<"0"<<endl;else cout<<q.top()<<endl;
}return 0;
}

D. Jumping Through Segments

 

问题分析:  

 n个线段,每次可以选择走0~k格,第i次一定要落在第i个线段内部,要求在满足条件的情况下使得k最小.

对于k来说,k的大小对于结果的影响是单调的,故可以用二分答案,我们只需要确定第i步走出的范围能够与第i个线段有交集即可

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cin>>T;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
#define lowbit(x) (x&(-x))
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
typedef pair<int,int>pii;
const int N =1e5+7;
signed main()
{IOSuse{int n;cin >> n;int ans;vct<int> l(n + 1);vct<int> r(n + 1);for (int i = 1; i <= n; i++) cin >> l[i] >> r[i];int L = 0, R = 1e9;int mid;auto check = [&](int mid) -> bool {int dis1 = 0, dis2 = 0;for (int i = 1; i <= n; i++) {dis1 -= mid, dis2 += mid;if (dis1 > r[i] || dis2 < l[i]) return false;mmax(dis1, l[i]), mmin(dis2, r[i]);}return true;};while (L <= R) {mid = (L + R) >> 1;if (check(mid)) {R = mid - 1;ans = mid;} else L = mid + 1;}cout << ans << endl;}return 0;
}

E. Good Triples

 

问题分析:  

给定整数n,求出有多少个三元组满足题目条件,且若三元组的元素相同但排序不同,则 算是不同的三元组。

我们通过样例以及向下推导可知:

故满足[(n+2)\times (n+1)\div2 ]的公式,且为n各位数字得到结果的乘积

#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(false);cin.tie(0);
#define int long long
#define pb push_back
#define vct vector
#define checkbit __builtin_popcount
#define gcd __gcd
#define use int T;cin>>T;while(T--)
#define LEN length()
#define all(a) a.begin(),a.end()
template<class T> bool mmax(T &u, T v) { return u < v ? (u = v, 1) : 0; }
template<class T> bool mmin(T &u, T v) { return u > v ? (u = v, 1) : 0; }
#define lowbit(x) (x&(-x))
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
using namespace std;
typedef pair<int,int>pii;
const int N =1e5+7;
signed main()
{IOSuse{string a;cin>>a;int ans=1;for(int i=0;i<a.LEN;i++){ans*=(a[i]-'0'+2)*(a[i]-'0'+1)/2;}cout<<ans<<endl;}return 0;
}

 

http://www.lryc.cn/news/257138.html

相关文章:

  • 反序列化 [网鼎杯 2020 朱雀组]phpweb 1
  • Java 何时会触发一个类的初始化
  • 我的记事本
  • GO设计模式——4、单例模式(创建型)
  • 我对迁移学习的一点理解——领域适应(系列3)
  • 【openssl】RSA 生成公钥私钥 |通过私钥获取公钥
  • MongoDB的删除文档、查询文档语句
  • Rust编程语言入门教程(三)-trait
  • LeetCode-1566. 重复至少 K 次且长度为 M 的模式【数组 枚举】
  • QT5.4.1无法打开文件
  • 【1day】金和OA某接口存在未授权访问漏洞
  • 使用Rust 构建C 组件
  • AI:大模型技术
  • 揭开WPF里面XAML可以通过http引入命名空间的神秘面纱
  • 什么是高防IP,高防IP该如何选择。
  • Linux 进程
  • Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
  • SQL语言重温
  • Java学习手册——第五篇数据类型
  • 机器学习算法性能评估常用指标总结
  • java面试题-ArrayList 和 LinkedList 的区别是什么
  • k8s中部署基于nfs的StorageClass
  • c语言一维数组总结详解
  • Redis 持久化 —— 超详细操作演示!
  • 使用Java实现桶排序算法
  • 5.题目:编号1624 小蓝吃糖果
  • 基于SpringBoot+thymeleaf协同过滤算法山河旅游推荐系统(Java毕业设计)
  • TypeScript 之 console的使用
  • 西南科技大学C++程序设计实验十(函数模板与类模板)
  • Python 解析JSON实现主机管理