Codeforces Round #618 (Div. 2)

2023-05-16

在这里插入图片描述
太菜了,也只能补补题了。。。。

A-Non-zero

这道题瞎弄一下就过了,数0的个数,把0全变成1,然后再判断现在和是不是0,和是0的话就再加上1。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
const int N=1e5+10;
int a[10000];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int sum=0;
        int k=0;
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
            if(a[i]==0)
            {
               k++;
            }
        }
        ans+=k;
        if(sum+k==0)
        {
            ans++;
        }
        printf("%d\n",ans);
    }
    return 0;
}

B-Assigning to Classes

这道题你仔细想一下,就会发现排完序之后,最中间的两个数的差值就是所要求的最小的答案。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;
const int N=1e5+10;
int a[2*N];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=2*n;i++)
        {
            scanf("%d",&a[i]);
        }
        sort(a+1,a+1+2*n);
        printf("%d\n",a[n+1]-a[n]);
    }
    return 0;
}

C-Anu Has a Function

一道贪心,只要找到一个板子来陈放这些的数就可以了,仔细看一下,那个(x|y-y)位运算之后的结果,等于是在x上把y上二进制是1的位置变成了0,这样的话,我们只要找到只有所以的数二进制位置上的1的个数和,找到最大的那个头就可以了,剩下的随便排序都可以。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int pos[30];
int w=1;
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++)
    {
        int k=a[i];
        int cc=0;
        while(k>0)
        {
            if(k&1)
            {
                pos[cc]++;
            }
            cc++;
            k/=2;
        }
    }
    int maxx=0,ma=0;
    for(int i=1;i<=n;i++)
    {
        int k=a[i];
        int cc=0;
        ma=0;
        int num=1;
        while(k>0)
        {
           if(k&1&&pos[cc]==1)
           {
               ma+=num;
           }
           cc++,k/=2,num*=2;;
           if(ma>maxx)
           {
               maxx=ma;
               w=i;
           }
        }
    }
    printf("%d",a[w]);
    for(int i=1;i<=n;i++)
    {
      if(i!=w)
      {
          printf(" %d",a[i]);
      }
    }
    printf("\n");
    return 0;
}

D-Aerodynamic

几何题,判断一下图形中心对称。

#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
    }
    if(n%2==0)
    {
        int flog=0;
        for(int i=1;i<=n/2;i++)
        {
            if(a[i]+a[n/2+i]!=a[1]+a[n/2+1]||b[i]+b[n/2+i]!=b[1]+b[n/2+1])
            {

                flog=1;
                break;
            }

        }
        if(!flog)
        {
            printf("YES\n");
        }
        else
        {
             printf("NO\n");
        }

    }
    else
    {
        printf("NO\n");
    }
    return 0;
}

E-Water Balance

题意是让我们可以让(L,R)里的数全部变成(a[L]+a[L+1]+…+a[R])/(R-L+1)。
然后通过这种方式使整个序列的字典序最小。
那我们可以分步来做,顶端top记录了当前的区间值,然后用len[top]记录值为是[top]的有多少个,然后如果后面存在较小值那么肯定要进行合并,那样的话肯定可以使整个序列的字典序变小(可以仔细想想这句话)

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
double eps=1e-10;
int a[N];
double s[N],b[N];
int len[N];
int main()
{
      int n;
      scanf("%d",&n);
      for(int i=1;i<=n;i++)
      {
          scanf("%d",&a[i]);
      }
      int top=1;
      double now=1;
      s[1]=a[1];
      len[1]=1;
      for(int i=2;i<=n;i++)
      {
         now=a[i];
         int lenow=1;
         while(s[top]>now+eps)
         {
             now=(now*lenow+s[top]*len[top])/(len[top]+lenow);
             lenow+=len[top];
             top--;
         }
         top++;
         s[top]=now;
         len[top]=lenow;
      }
      int cut=0;
      for(int i=1;i<=top;i++)
      {
          for(int j=1;j<=len[i];j++)
          {
              b[cut+j]=s[i];
          }
          cut+=len[i];
      }
      for(int i=1;i<=n;i++)
      {
          printf("%.10lf ",b[i]);
      }
      printf("\n");

    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Codeforces Round #618 (Div. 2) 的相关文章

随机推荐

  • 修改WIN11右键菜单为经典右键菜单(这一招足够)

    1 首先我们在电脑桌面主页按下 Win 43 R 键 xff0c 打开运行对话框 2 接着在对话框中输入指令 regedit 然后按下回车确认 xff0c 打开注册表界面 3 找到如下注册表路径 xff1a 计算机 HKEY LOCAL M
  • 新版IDEA maven项目不自动下jar包如何解决

    因为是学生 xff0c 可以免费试用jetbrains的产品 xff0c 就下了2020 1 1版的IntelliJ IDEA 在maven项目上 xff0c 它跟之前不同是在pom加入坐标后不能自动从中央仓库下载jar包 2019之前的版
  • 快速搭建私有pip镜像源

    1 快速体验 span class token keyword import span os span class token keyword import span sys span class token keyword import
  • 虚拟机Ubuntu18.04突然连不上网怎么解决

    本来正常使用ubuntu18 04 xff0c 突然连不上网 使用sudo apt get update无法连接到域名 采用如下方法解决 xff01 xff01 xff01 原文链接 xff1a https blog csdn net qq
  • rpm方式安装 mysql5.7.29

    一 rpm方式安装 mysql5 7 29 1 下载mysql5 7 29的rpm安装包 rpm的mysql包 安装起来简单 解压版的mysql还需要做许多配置 xff0c 稍有不慎就会出错 xff01 xff01 xff01 下载地址 x
  • 必须知道的C语言知识细节:函数形参和实参的区别

    当你选择了一种语言 xff0c 意味着你还选择了一组技术 一个社区 Joshua Bloch C语言中函数形参和实参是十分重要的概念 xff0c 初学者很容易混淆 形参 xff1a 顾名思义 xff0c 形式参数 xff0c 仅仅是声明了参
  • windows和虚拟机互传文件的三种方式

    大家好 xff0c 在平时学习工作的时候可能有这样的需求 xff1a 要将windows中的文件传到虚拟机中或者将虚拟机的文件传到windows xff0c 大家都是怎么实现的呢 xff1f 今天给大家介绍下windows和虚拟机互传文件的
  • dpkg命令详解

    用法 xff1a dpkg lt 选项 gt lt 命令 gt Commands i install lt deb file name gt R recursive unpack lt deb file name gt R recursiv
  • 结构体字节对齐之嵌套结构体

    搜狐畅游2020游戏研发笔试题目 xff1a 以下输出的结果是 xff1f xff1f xff1f span class token macro property span class token directive keyword inc
  • 程序设计CSP-M4-补题——T1-TT数鸭子

    T1 TT数鸭子 题目描述InputOutput解题思路实现代码总结 题目描述 给出n个数 xff0c 求有多少个数其数位中不同的数字的个数小于k Input 第一行两个数n k 第二行n个数 Output 输出满足题目要求的数字个数 解题
  • ceph 分布式 存储服务 恢复

    文章目录 一条命令执行恢复 xff08 你最好还是读读 为什么可以一条命令恢复 ceph 服务 xff09 版本信息ceph 容器服务恢复前提条件安装cephadm查看ceph 服务依赖删除多余的集群 可选 一条命令执行恢复 systemc
  • svn: E230001: Server SSL certificate verification failed: certificate issued

    svn E230001 Server SSL certificate verification failed certificate issued 字面上的大致意思是服务器的SSL证书验证失败 解决方法 xff1a 在终端执行svn ls
  • linuxQt程序打包

    linux程序打包 qt程序打包与执行 将release版本生成的移动到新建文件夹中 xff1b linux下qt打包的sh文件 例如 xff0c 生成pack sh span class token shebang important b
  • JAVA判断时间格式为 “YYYY-MM-DD“

    常用的方法如下 xff1a import java text DateFormat import java text SimpleDateFormat import java util Date public class DataTest
  • win系统修改右键新建菜单

    win系统修改右键新建菜单 在右键新建中添加自己想要的文件修改右键新建顺序修改右键新建中菜单项的名字 在右键新建中添加自己想要的文件 首先win 43 R再regedit调出注册表在HKEY CLASSES ROOT目录下找到对应后缀名 x
  • Django基础(一)

    目录 创建项目 创建一个应用 启动服务 创建项目 D pythonProject3 Django gt django admin startproject hello 执行完成命令 大概10s之后会出现一个以hello命名的文件夹 创建一个
  • 二分图多重匹配——小结

    二分图的重匹配 xff0c 说白了就说一对多的匹配 还是匈牙利算法 xff0c 一般都是给出两个集合 xff0c 然后让你对这两个集合进行匹配 xff0c 但是其中一个集合是可以多次匹配的 xff0c 但是匹配的次数是有限的 xff08 假
  • C.Garland(DP)

    题目链接 xff1a C Garland 题意 给你了一个序列 xff0c 包含n个数 xff0c 这个序列是由1 n数字构成 xff0c 但是题目给你的这个序列并不完整 xff0c 让你去补完整 xff0c 那些输入的值为0的位置的就是让
  • P1908 逆序对(离散化)

    洛谷P1908 逆序对 逆序对就不用解释了 xff0c 题上也说的很清楚 那我分别用归并排序和树状数组来解决一下这道题目 归并排序 我们都知道 xff0c 归并排序是通过把大区间一直分 xff0c 分成小区间 xff0c 然后小区间排序好了
  • Codeforces Round #618 (Div. 2)

    太菜了 xff0c 也只能补补题了 A Non zero 这道题瞎弄一下就过了 xff0c 数0的个数 xff0c 把0全变成1 xff0c 然后再判断现在和是不是0 xff0c 和是0的话就再加上1 span class token ma