作者:博客园小蔡编程

这次是作者第一次参加csp-j的比赛

内心还是挺激动的

今天,作者就来和大家讨论一下这次csp-j的学习心得和感想

T1 分糖果

这题描述看似复杂

其实就是一道求最大取模的题

L<=k<=R

求k%n的最大值

有多种方法

作者这里目测100

#include <cstdio>
#define ll long long
ll n,l,r;
int main(){
freopen("candy.in","r",stdin);
freopen("candy.out","w",stdout);
scanf("%lld%lld%lld",&n,&l,&r);
ll m=l%n;
m=n-m-1;
if(l+m>r) printf("%lld",r%n);
else printf("%lld",n-1);
return 0;
}

T2 插入排序

着道题是经典的模拟

只要把插入排序换成二分就行了

但是作者比赛时为了更多的分数

先做后面的题,成功获得了大约120分

这题只拿了一半的分数

#include<bits/stdc++.h>
using namespace std; const int N=8e3+10;
int n,q;
struct node{
int n,d;
} a[N];
int p,v,u; int cr(int g){
node x[N];
for(int i=1;i<=n;i++){
x[i].n=i;
x[i].d=a[i].d;
}
for (int i = 1; i <= n; i++)
for (int j = i; j>=2; j--)
if ( x[j].d < x[j-1].d ){
int t=x[j].d;
int f=x[j].n;
x[j].d=x[j-1].d;
x[j].n=x[j-1].n;
x[j-1].d=t;
x[j-1].n=f;
}
int res;
for(int i=1;i<=n;i++)
if(x[i].n==g) {
res=i;
break;
}
return res;
} int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",&a[i].d),a[i].n=i;
for(int i=1;i<=q;i++){
scanf("%d",&p);
if(p==1){
scanf("%d%d",&v,&u);
a[v].d=u;
}else{
scanf("%d",&v);
printf("%d\n",cr(v));
}
}
//for(int i=1;i<=n;i++) printf("%d ",a[i].d);
return 0;
}

T3 网络连接

这题的数据量很弱,n<=1000,不会超时

但是这题的关键点在于判断IP是否正确

需要写很麻烦的if语句

比如说:10:2.3.1.2 (这IP作者一开始就没考虑到)

所以目测65分

#include <bits/stdc++.h>
using namespace std; const int N=1e3+10;
int n;
string op,ad;
int a,b,c,d,e;
int da[N][7],dal; int sop(string x){
int res[10],l=1;
int v=0;
for(int i=0;i<x.size();i++){
if(x[i]=='.'&&l<4) res[l++]=i;
else if(x[i]=='.'&&l==4) v=1;
else if(x[i]==':'&&l==4) res[l++]=i;
else if(x[i]==':'&&l!=4) v=1;
}
if(v) return 0;
a=0;
b=0;
c=0;
d=0;
e=0;
for(int i=0;i<res[1];i++){
a=a*10+int(x[i])-48;
if(a==0&&i==1) v=1;
}
for(int i=res[1]+1;i<res[2];i++){
b=b*10+int(x[i])-48;
if(b==0&&i==1) v=1;
}
for(int i=res[2]+1;i<res[3];i++){
c=c*10+int(x[i])-48;
if(c==0&&i==1) v=1;
}
for(int i=res[3]+1;i<res[4];i++){
d=d*10+int(x[i])-48;
if(d==0&&i==1) v=1;
}
for(int i=res[4]+1;i<x.size();i++){
e=e*10+int(x[i])-48;
if(e==0&&i==1) v=1;
}
if(a>255) v=1;
if(b>255) v=1;
if(c>255) v=1;
if(d>255) v=1;
if(e>65535) v=1;
if(v) return 0;
return 1;
} int sad(){
int v=0;
for(int i=0;i<dal;i++){
if(a==da[i][0]&&b==da[i][1]&&c==da[i][2]&&d==da[i][3]&&e==da[i][4]) {
v=i+1;
break;
}
}
if(v) return v;
return 0;
} int main(){
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
cin >> n;
for(int i=1;i<=n;i++){
cin >> op >> ad;
if(op=="Server"){
if(sop(ad)){
if(sad()==0){
da[dal][0]=a;
da[dal][1]=b;
da[dal][2]=c;
da[dal][3]=d;
da[dal][4]=e;
da[dal++][5]=i;
cout << "OK" << endl;
}
else{
cout << "FAIL" << endl;
}
}
else{
cout << "ERR" << endl;
}
}else{
if(sop(ad)){
int sadn=sad();
if(sadn){
cout << da[sadn-1][5] << endl;
}
else{
cout << "FAIL" << endl;
}
}
else{
cout << "ERR" << endl;
}
}
}
return 0;
}

T4 小熊的果篮

随便说一句:为什么去年和今年T4的主人公都是小熊?

这道题的关键点在读题

块有可能合并

所以要不断重新扫描块

作者用了前缀和来计算块

目测70分

#include <bits/stdc++.h>
using namespace std; const int N=2e5+10;
int n,m;
int a[N],c[N],g[N],b[N],k[N]; int main(){
freopen("fruit.in","r",stdin);
freopen("fruit.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
while(n>m){
int l=1;
for(int i=1;i<=n;i++){
if(g[i]==0) {
b[l++]=a[i];
k[l-1]=i;
}
}
for(int i=1;i<l;i++){
c[i]=1;
if(b[i]==b[i-1]&&i>1)c[i]=c[i-1]+1;
}
int v=0;
for(int i=1;i<l;i++){
if(c[i]==1) {
if(v) printf(" ");
v=1;
printf("%d",k[i]);
m++;
g[k[i]]=1;
}
}
printf("\n");
}
return 0;
}

感想

这次csp-j的数据都很良心

作者暴力枚举也能得很多分

而读题尤其重要

T3 IP的判断正误 和 T4 块的合并

不要考试时纠结一道题

可以先把所有题暴力做一遍,拿到分数,再优化

现在洛谷民间数据100+52+65+70

希望这次csp大家能考出好成绩

csp-j 复赛感想的更多相关文章

  1. CSP J/S 初赛总结

    CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...

  2. 【游记】CSP J/S 2019 游记

    J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...

  3. CSP J/S 2019受虐记

    一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...

  4. [游记]2020/CSP - S总结

    2020 / C S P − S 总 结 2020/CSP - S总结 2020/CSP−S总结 这年的 C S P CSP CSP考的不是很理想,本来稳进的 C S P − J CSP-J CSP− ...

  5. 【游记】CSP 2021 J2

    这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...

  6. OI记录

    这里是蒟蒻xsl的OI记录. 2017 2017.03.?? 开始接触OI 2017.10.14 参加NOIP2017普及组初赛,踩着分数线进入了复赛 2017.11.11 参加NOIP2017普及组 ...

  7. emacs考场短配置

    (set-background-color "gray15") (set-foreground-color "gray") ;;设置颜色 (global-set ...

  8. noi linux 2.0 体验

    一.起因 下午,我打开 noi 官网准备报名 csp j/s,一看官网展板:"noi linux 2.0 发布" 我就兴奋了起来.(9 月 1 日起开始使用, 也就意味着 csp ...

  9. CSP复赛day2模拟题

    没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...

随机推荐

  1. Mybatis-plus<二>通用CRUD,分页

    Mybatis-plus<二>通用CRUD,分页 与博客Mybatis-plus<一>为同一个Springboot项目. Demo GitHub下载地址:https://git ...

  2. Jetpack Compose学习(3)——图标(Icon) 按钮(Button) 输入框(TextField) 的使用

    原文地址: Jetpack Compose学习(3)--图标(Icon) 按钮(Button) 输入框(TextField) 的使用 | Stars-One的杂货小窝 本篇分别对常用的组件:图标(Ic ...

  3. 第九章 Net 5.0 快速开发框架 YC.Boilerplate --定时服务 Quartz.net

    在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...

  4. java版gRPC实战之一:用proto生成代码

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. React项目中应用TypeScript

    一.前言 单独的使用typescript 并不会导致学习成本很高,但是绝大部分前端开发者的项目都是依赖于框架的 例如和vue.react 这些框架结合使用的时候,会有一定的门槛 使用 TypeScri ...

  6. Spring Boot 2.x 之 Logging

    [源起] 最近在看Apollo的源码,发现其all-in-one项目的脚本demo.sh在执行的时候,竟然没有向控制台输出Spring Boot的日志. 我们修改后构建的Fat Jar,在启动时却打印 ...

  7. C# 动态构建表达式树(二)——构建 Select 和 GroupBy 的表达式

    C# 动态构建表达式树(二)--构建 Select 和 GroupBy 的表达式 前言 在上篇中写了表达式的基本使用,为 Where 方法动态构建了表达式.在这篇中会写如何为 Select 和 Gro ...

  8. centos7 下安装 mysql5.7

    由于CentOS7的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件. 下载命令: wget https://dev.mysql.com/get/mysql57-commu ...

  9. CodeForce-792B Counting-out Rhyme(模拟)

    Counting-out Rhyme CodeForces - 792B 题意: n 个孩子在玩一个游戏. 孩子们站成一圈,按照顺时针顺序分别被标号为 1 到 n.开始游戏时,第一个孩子成为领导. 游 ...

  10. PTA——c++类与对象

    对于给定的一个字符串,统计其中数字字符出现的次数. 类和函数接口定义: 设计一个类Solution,其中包含一个成员函数count_digits,其功能是统计传入的string类型参数中数字字符的个数 ...