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

CSP-J模拟赛day1——解析+答案

题目传送门


yjq的吉祥数

题解

送分题,暴力枚举即可

Code

#include<bits/stdc++.h>
using namespace std;int l,r;
int num=1,tmp=0,q[10000],a[10000];
int k (int x){for (int j=1;j<=tmp;j++){if (x==q[j])return 0;}return 1;
}
int main(){while (num<=10000000){tmp++;q[tmp]=num;num*=3;}cin>>l>>r;int cnt=0;for (int i=l;i<=r;i++){if (k(i)==0){cnt++;a[cnt]=i;}}cout<<cnt<<endl;for (int i=1;i<=cnt;i++){cout<<a[i]<<" ";}return 0;
}

yjq的二进制加法

题解

由题可得,每次只加一个 2 k 2^k 2k,也就是在二进制的情况下只有一个1,所以我们直接模拟就行了

Code

#include<bits/stdc++.h>
using namespace std;inline int read(){int x=0;char ch=' ';while (ch<'0'||ch>'9')ch=getchar();while (ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x; 
}
int a[4001000],n,m,ed;
int main(){string s;n=read();ed=n;cin>>s;int len=s.length();for (int i=len-1,j=0;i>=0,j<len;i--,j++){a[j]=s[i]-'0';}m=read();for (int i=1;i<=m;i++){int tmp;tmp=read();int cnt=0;for (int j=tmp;;j++){ed=max(ed,j);if (a[j]==1){cnt++;a[j]=0;}else {cnt++;a[j]=1;break;}}printf("%d\n",cnt);}      for (int i=ed;i>=0;i--){printf("%d",a[i]);}     return 0;
}

yjq的同桌分配

题解

很容易想到贪心的思路,但是无论是快排还是插排都需要 O ( n 2 ) O(n^2) O(n2)的时间复杂度,显然过不了,所以我们这里采用桶排,这样的时间复杂度就是 O ( 100 × n ) O(100 \times n) O(100×n)

Code

#include<bits/stdc++.h>
using namespace std;int n,b[1100],g[1100],tmpb[1100],tmpg[1100]; 
int q(){for (int i=1;i<=100;i++){tmpb[i]=b[i],tmpg[i]=g[i];}int l=1,r=100,maxn=INT_MIN,tmp;while (tmpb[l]==0)l++;while (tmpg[r]==0)r--;while (l<=100&&r>=1){tmp=min(tmpb[l],tmpg[r]);tmpb[l]-=tmp,tmpg[r]-=tmp;maxn=max(maxn,l+r);while (tmpb[l]==0&&l<=100)l++;while (tmpg[r]==0&&r>=1)r--;}return maxn;
}
int main(){cin>>n;for (int i=1;i<=n;i++){int tmp1,tmp2;cin>>tmp1>>tmp2;b[tmp1]++,g[tmp2]++;int ans=q();cout<<ans<<endl;}return 0;
}

yjq的炉石传说

题解

因为有过牌这一方法,所以这道题就直接变成了01背包问题

Code

#include<bits/stdc++.h>
using namespace std;long long x[10100],y[10100],dp[10100];
int main(){int n;cin>>n;for (int i=1;i<=n;i++){cin>>x[i];}for (int i=1;i<=n;i++){cin>>y[i];}for (int i=1;i<=n;i++){for (int j=n;j>=x[i];j--){dp[j]=max(dp[j],dp[j-x[i]]+y[i]);}}cout<<dp[n];return 0;
}

在这里插入图片描述

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

相关文章:

  • 【PostgreSQL案例】我要查的表没有在执行计划中
  • 《程序猿入职必会(5) · CURD 页面细节规范 》
  • 操作系统面试知识点总结5
  • BigInteger和BigDecimal类
  • 2024最新Uniapp的H5网页版添加谷歌授权验证
  • 学习java第一百四十四天
  • Meta 发布 Llama3.1,一站教你如何推理、微调、部署大模型
  • XSSFWorkbook 和 SXSSFWorkbook 的区别
  • 会议主题:NICE Seminar|神经组合优化方法的大规模泛化研究(南方科技大学王振坤副研究员)
  • 昇思25天学习打卡营第22天|CycleGAN图像风格迁移互换
  • 《Java初阶数据结构》----6.<优先级队列之PriorityQueue底层:堆>
  • Matrix Equation(高斯线性异或消元+bitset优化)
  • 【一图学技术】2.API测试9种方法图解
  • 力扣刷题----42. 接雨水
  • 【论文精读】 | 基于图表示的视频抑郁症识别的两阶段时间建模框架
  • 采集PCM,将base64片段转换为wav音频文件
  • eclipse ui bug
  • 前端获取blob文件格式的两种格式
  • 向日葵RCE复现(CNVD-2022-10270/CNVD-2022-03672)
  • Postman中的负载均衡测试:确保API的高可用性
  • anaconda+tensorflow+keras+jupyter notebook搭建过程(CPU版)
  • LitCTF2024赛后web复现
  • Elasticsearch:跨集群使用 ES|QL
  • 学习笔记4:docker和k8s选择简述
  • 关于锁策略
  • 昇思25天学习打卡营第3天|基础知识-数据集Dataset
  • C++11新特性——智能指针——参考bibi《 原子之音》的视频以及ChatGpt
  • “微软蓝屏”全球宕机,敲响基础软件自主可控警钟
  • 【Linux C | 网络编程】进程间传递文件描述符socketpair、sendmsg、recvmsg详解
  • 高并发内存池(六)Page Cache回收功能的实现