A.
模拟
- #include
- #define eps 1e-5
- #define INF 1e9
- using namespace std;
- typedef long long ll;
- const int N = 2e6 + 9;
- int a[N],cl[N];
- void Lan(){
- string s1,s2;
- cin>>s1>>s2;
- s1=" "+s1;
- s2=" "+s2;
- for(int i=1;i
size();i++){ - cl[s1[i]-'a']=i;
- }
- ll ans=0;
- for(int i=2;i
size();i++){ - ans+=abs(cl[s2[i]-'a']-cl[s2[i-1]-'a']);
- }
- cout<
'\n'; - }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(0),cout.tie(0);
- int q;
- cin>>q;
- while (q--) {
- Lan();
- }
- return 0;
- }
-
B.
周期
- #include
- #define eps 1e-5
- #define INF 1e9
- using namespace std;
- typedef long long ll;
- const int N = 2e6 + 9;
- int a[N];
- void Lan(){
- ll x,n;
- cin>>x>>n;
- // t=4
- if(x&1){
- /*
- x,x+1,x-2,x-3,x+4,
- */
- if(n%4==1){//n-1,n
- cout<
'\n'; - }else if(n%4==2){//n-2,n-1,n
- cout<
-1<<'\n'; - }else if(n%4==3){//n-3,n-2,n-1,n
- cout<
1)<<'\n'; - }else{
- cout<
'\n'; - }
- }else{
- /*
- x,x-1,x+2,x+3,x-4;
- */
- if(n%4==1){//n-1,n
- cout<
'\n'; - }else if(n%4==2){//n-2.n-1,n
- cout<
1<<'\n'; - }else if(n%4==3){//n-3,n-2,n-1,n
- cout<
1)<<'\n'; - }else{
- cout<
'\n'; - }
- }
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(0),cout.tie(0);
- int q;
- cin>>q;
- while (q--) {
- Lan();
- }
- return 0;
- }
-
C.
线段树
单点修改,区间查询
- #include
- #define INF 4e18;
- using namespace std;
- typedef long long ll;
- const int N = 2e5+ 9;
- ll a[N];
- //线段树
- struct node{
- ll mn;
- }seg[N<<2];
- inline ll tl(ll x){return x<<1;}
- inline ll tr(ll x){return x<<1|1;}
- void pushup(const int id){
- seg[id].mn=min(seg[tl(id)].mn,seg[tr(id)].mn);
- }
- void build(const int id,int l,int r){
- if(l==r){
- seg[id].mn=a[l];
- return;
- }
- int mid=(l+r)>>1;
- build(tl(id),l,mid);
- build(tr(id),mid+1,r);
- pushup(id);
- }
- bool inrange(int L,int R,int l,int r){return l<=L && R<=r;}
- bool outofrange(int L,int R,int l,int r){return L>r || R
- ll query(int id,int L,int R,int l,int r){
- if(inrange(L,R,l,r)){
- return seg[id].mn;
- }else if(!outofrange(L,R,l,r)){
- int mid=(L+R)>>1;
- return min(query(tl(id),L,mid,l,r),query(tr(id),mid+1,R,l,r));
- }else{
- return 100000000000000;//不会影响结果
- }
- }
- void update(int id,int l,int r,ll v){
- if(l==r){
- seg[id].mn=v;
- }else{
- int mid=(l+r)>>1;
- if(seg[tl(id)].mn>seg[tr(id)].mn){//找到最小覆盖
- update(tr(id),mid+1,r,v);
- }else{
- update(tl(id),l,mid,v);
- }
- pushup(id);
- }
- }
- void solve(){
- int n;
- cin>>n;
- for(int i=1;i<=n;i++){
- cin>>a[i];
- }
- build(1,1,n);
- ll ans=seg[1].mn;
- ll cur=0;
- for(int i=1;i<=n-1;i++){
- ans=max(ans,seg[1].mn-cur);//操作
- cur=seg[1].mn;
- update(1,1,n,100000000000000);//单点修改
- }
- cout<<max(ans,seg[1].mn-cur)<<'\n';
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(0),cout.tie(0);
- int q;
- cin>>q;
- while(q--){
- solve();
- }
- return 0;
- }
D.
贪心
- #include
- #define INF 1e9
- using namespace std;
- typedef long long ll;
- const int N=2e5+9;
- struct node{
- int val;
- char flag;
- }a[N];
- inline void lan(){
- int n;
- cin>>n;
- for(int i=1;i<=n;i++){
- cin>>a[i].val;
- }
- for(int i=1;i<=n;i++){
- cin>>a[i].flag;
- }
- sort(a+1,a+1+n,[](const node a,const node b){
- if(a.flag==b.flag){
- return a.val
- }
- return a.flag
- });
- for(int i=1;i<=n;i++){
- if(a[i].val!=i){
- if(a[i].flag=='B' && a[i].val
- cout<<"NO"<<'\n';
- return;
- }else if(a[i].flag=='R' && a[i].val>i){
- cout<<"NO"<<'\n';
- return;
- }
- }
- }
- cout<<"YES"<<'\n';
- }
- int main(){
- ios::sync_with_stdio(false);
- cin.tie(0),cout.tie(0);
- int q;
- cin>>q;
- while(q--){
- lan();
- }
- return 0;
- }
-
-
相关阅读:
RedHat8升级GLIBC_2.29,解决ImportError: /lib64/libm.so.6: version `GLIBC_2.29
【极术读书】赠卡活动第二期,免费领极客时间月卡系统学习技术管理
maven中dependencyManagement与dependencies的区别与联系
Java 操作RestHighLevelClient查询详解
jupyter notebook使用相对路径的方法
并查集
“还是太年轻”,实习生花2分钟解决bug,老程序员的反应耐人寻味
【单片机基础】I2C通信-基于STC89C52RC
一文看懂这些海外社媒平台属性,跨境外贸必看
一种用于保证多方子系统数据一致性的方法
-
原文地址:https://blog.csdn.net/Lanthamum/article/details/136636864