Codeforces Round #786 (Div. 3)(A-D)

简介: Codeforces Round #786 (Div. 3)(A-D)

A. Number Transformation(构造)


大意:


求是否存在a,b使得式子 ba = y / x 成立


思路:


当 y / x 为整数时 构造 a=1 b=y/x 即可


#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const ll maxx = 1e18;
const int N = 1e6+100;
const int p = 1073741824;
const double eps = 1e-8;
int n;
int xx,yy;
int main()
{
  cin>>n;
  while(n--)
  {
    cin>>xx>>yy;
    if(yy%xx!=0)
    {
      cout<<"0 0"<<endl;
    }
    else
    {
      cout<<"1"<<" "<<yy/xx<<endl;
    }
  }
  return 0;   
}


B. Dictionary


大意:


两个字母的字符串(不含相同字母)从 ab 到 zy 排序,给出字符串求符号


思路:


总共有 25 × 26 = 650 个序号,第一个字母所代表范围是(s[0]-'a')*25;

第二个字母判断它在第一个字母前后位置给出序号大小


#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const ll maxx = 1e18;
const int N = 1e6+100;
const int p = 1073741824;
const double eps = 1e-8;
int n;
int sum;
string s;
int main()
{
  cin>>n;
  while(n--)
  {
    sum=0;
    cin>>s;
    sum+=(s[0]-'a')*25;
    if(s[1]>s[0])
    {
      sum+=s[1]-'a';
    }
    else
    {
      sum+=s[1]-'a'+1;
    }
    cout<<sum<<endl;
  }
}


C. Infinite Replacement


大意:


两个串,s串 和 t串,s串全是字母a,t串任意,用t串替换s串中的字母a,问最后结果串有多少种;


思路:


分为四种情况


t 串只有一个字母为 a 显然答案为 1

t 串有一个字母不为 a 答案为 2s.size()

t 串有超过一个字母且t串含有字母a 答案为 -1

t 串有超过一个字母但t串不含有字母a 与情况2相同

注意开 long long !!!


#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const ll maxx = 1e18;
const int N = 1e6+100;
const int p = 1073741824;
const double eps = 1e-8;
ll n,len1,len2;
string s,t;
ll ans;
int main()
{
  cin>>n;
  while(n--)
  {
    cin>>s>>t;
    len1=s.size();
    len2=t.size();
    if(len2==1)
    {
      if(t=="a") ans=1;
      else
      {
        ans=(ll)pow(2,len1);
      }
    }
    else
    {
      if(count(t.begin(),t.end(),'a')==0)
      {
        ans=(ll)pow(2,len1);
      }
      else
      {
        ans=-1;
      }
    }
    cout<<ans<<endl;
  }
}


D. A-B-C Sort


大意:

给出两个排序操作,三个数组

操作1.

A数组尾元素放到B数组中间,直到放空

操作2.

B数组中间元素放到C数组尾,直到放空


检查C数组是否是非降序数组(注意升序和非降序的区别)


思路


经过模拟,我们可以发现


数组下标从 1 开始


1.当数组长度为偶数时,模拟操作只能交换

ai 与 a i+1 i 为奇数

2.当数组长度为奇数时,模拟操作只能交换

ai 与 a i+1 i 为偶数


模拟完判断是否为非降序即可


通过与排序好的数组比较判断是否为非降序序列

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const ll maxx = 1e18;
const int N = 2*1e5+100;
const int p = 1073741824;
const double eps = 1e-8;
int t,n;
int a[N];
int b[N];
bool flag;
void solve()
{
  scanf("%d",&t);
  while(t--)
  {
    scanf("%d",&n);
    flag=0;
    for(int i=1;i<=n;i++)
    {
      scanf("%d",&a[i]);
      b[i]=a[i];
    }
    if(n%2==0)
    {
      for(int i=1;i<=n;i+=2)
      {
        if(a[i]>a[i+1])
        swap(a[i],a[i+1]);  
      } 
    }
    else
    {
      for(int i=2;i<=n;i+=2)
      {
        if(a[i]>a[i+1])
        swap(a[i],a[i+1]);      
      } 
    }
    sort(b+1,b+1+n);
    for(int i=1;i<=n;i++)
    {
      if(a[i]!=b[i])
      {
        cout<<"NO"<<endl;
        flag=1;
        break;
      }
    } 
    if(!flag) cout<<"YES"<<endl;
  }
}
int main()
{
  solve();
  return 0;
}

后三题以后补


.Ashy.
+关注
目录
打赏
0
0
0
0
2
分享
相关文章
【动态规划刷题 8】买卖股票的最佳时机 III && 买卖股票的最佳时机 IV
【动态规划刷题 8】买卖股票的最佳时机 III && 买卖股票的最佳时机 IV
为Go应用无侵入地添加任意代码
这篇文章旨在提供技术深度和实践指南,帮助开发者理解并应用这项创新技术来提高Golang应用的监控与服务治理能力。在接下来的部分,我们将通过一些实际案例,进一步展示如何在不同场景中应用这项技术,提供更多实践启示。
每日大厂面试题大汇总 —— 今日的是“顺丰-后端开发-一面”
文章汇总了顺丰后端开发一面的面试题目,涵盖了Java虚拟机内存模型、HashMap与ConcurrentHashMap的区别、Spring框架设计模式、SpringBoot与SpringMVC差异、Nacos注册中心原理、Seata分布式架构、MySQL事务隔离级别、数据库死锁问题解决方法、乐观锁实现方式、HBASE底层设计、BIO与NIO区别、以及为何不使用现有开源框架而选择自建平台等问题。
87 0
springboot源码分析1-springboot版本号获取
摘要:在使用springboot的时候,可能经常会忽略掉springboot的版本问题。本文我们看一下springboot jar包中定义的版本信息以及版本获取类。
2007 0
Flutter笔记:Opacity、Offstage和Visibility可见性的比较
Flutter笔记:Opacity、Offstage和Visibility可见性的比较
551 0
阿里云云计算ACP认证集训营来袭!掌握云计算ACP认证95%考点,轻松拿证!
课程内容由ACP认证考点衍生展开,5天直播课程+10节视频课程+7张阿里云Clouder认证+认证模拟试卷,实现学、练、考无缝衔接,学完所有认证知识点。
阿里云云计算ACP认证集训营来袭!掌握云计算ACP认证95%考点,轻松拿证!
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问