首页 > 其他分享 >CSP2020 J2参考解析

CSP2020 J2参考解析

时间:2022-10-01 09:56:57浏览次数:83  
标签:include const int CSP2020 J2 解析 CSP J2020

目录

CSP2021 J2

题目传送

P7071 [CSP-J2020] 优秀的拆分

解析:n<=1e7, 那么 2^30=1e9, 可以利用数组存储权值,在从大到小遍历,减去权值。
如果 n为奇数,那么肯定是没有答案的,直接输出 -1也有 20分。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N], n, base=1, p=0;

int main(){
    cin>>n;
    while(base<=1e7) a[++p]=base, base<<=1;
    if(n&1) cout<<-1;
    else{
        for(int i=p; i>=1; i--){
            if(n>=a[i]) n-=a[i],cout<<a[i]<<" ";
        }
    }
    return 0;
}

P7072 [CSP-J2020] 直播获奖

解析:可以直接模拟一遍,取分数线可以使用排序

  • 如果使用 sort,整体复杂度 O(n^2log),预计得分 50.
  • 可以使用插入排序优化,整体复杂度 O(n^2),预计得分 80.
    如果排序后,计算分数,那么 \(i\) 选手的成绩评出之后,选择第 \(p\) 个人的分数划线,则该分数线为 \(a[i-p+1]\),如下图。
    image
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,m,p,a[N];

int main(){
    cin>>n>>m;
    for(int i=1; i<=n; i++) cin>>a[i];
    for(int i=1; i<=n; i++){
        p = max(1, int(i*m/100));
        for(int j=i; j>1; j--){
            if(a[j]<a[j-1]) swap(a[j],a[j-1]);
            else break;
        }
        cout<<a[i-p+1]<<" ";
    }
    return 0;
}
  • 所以我们需要一个O(nlogn)的解法,主要在分数选择的地方确定一个O(log)级别的算法,可以考虑什么呢?
  • 注意题目:每个选手的成绩均为不超过 600 的非负整数,所以分数线的区间是比较小的,那么就可以使用计数排序优化。
    整体复杂度在 O(600*n),完美。
点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,m,p,a[N],vis[N];

int main(){
    cin>>n>>m;
    for(int i=1; i<=n; i++) cin>>a[i];
    for(int i=1; i<=n; i++){
        p = max(1, int(i*m/100));
        int cnt=0,score; vis[a[i]]++;
        for(int j=600; cnt<p && j>=0; j--){
            if(vis[j]) cnt+=vis[j],score=j;
        }
        cout<<score<<" ";
    }
    return 0;
}

P7073 [CSP-J2020] 表达式

解析:

P7074 [CSP-J2020] 方格取数

解析:

标签:include,const,int,CSP2020,J2,解析,CSP,J2020
From: https://www.cnblogs.com/hellohebin/p/16746428.html

相关文章

  • TI AM5728 SDK升级之 linux设备树解析,以网口cpsw为例
    如果一个结点描述的设备有地址,则应该给出@unit-address。多个相同类型设备结点的name可以一样,只要unit-address不同即可,如本例中含有cpu@0、cpu@1以及serial@101f0000与seri......
  • AUSTOj2
    #include<stdio.h> //若用printf,scanf,getchar,putchar,gets,puts函数需包含该头文件#include<malloc.h> //用malloc,free,realloc函数需包含该头文件#defineMAXSIZE1......
  • LCD屏幕驱动解析(一)如何在LCD屏幕上画出点和线
    ============= 目标 =====================如何在LCD屏幕上画出点和线=======================================一、学习体悟1.如何编写测试程序?如何与makefile综合起来......
  • CSP2021 S2参考解析
    目录CSP2021S2P7913[CSP-S2021]廊桥分配airportP7914[CSP-S2021]括号序列bracketP7915[CSP-S2021]回文palinP7916[CSP-S2021]交通规划trafficCSP2021S2......
  • Python Markdown解析利器----mistune详细用法记录
    @目录小试牛刀开始使用mistunemistune简单使用mistune高级用法(自定义mistune)mistune中插件插件使用方法(以删除线(strikethrough)为例)插件包名内置插件删除线(striket......
  • Python tkinter 做一个VIP视频解析的桌面软件,100%你会爱上它
    前言tkinter:GUI桌面应用开发模块,写软件界面你还可以打包成exe软件,哪怕你没有python环境,一样可以用虽然不一定要有界面,但是有界面,用户体验很棒…环境使用......
  • 解析京东cookie
    该脚本会自动解析剪贴板内的cookie内容,免去手动寻找pin和key的麻烦 #-*-coding:utf-8-*-#@Time:2022/9/30#@Author:Naihe#@Email:239144498@qq.......
  • 【中科三方】什么是DNS智能云解析,什么是NS,更换NS多久生效?
    你知道什么是DNS智能云解析吗?DNS智能云解析其实就是域名智能云解析,是域名解析服务器根据访问者的IP类型对同一域名执行不同的解析。对于IP来自电信的访问者,域名解析为电信......
  • Log4j2
    参见log4j官网:https://logging.apache.org/log4j/2.x注意:log4j2官网展现的是最新版的内容。因此有的内容变更参见ChangeLog:https://logging.apache.org/log4j/2.x/change......
  • CDN的缓存与回源机制解析
    CDN(ContentDeliveryNetwork,即内容分发网络)指的是一组分布在各个地区的服务器。这些服务器存储着数据的副本,因此服务器可以根据哪些服务器与用户距离最近,来满足数据的......