csp-j 复赛感想
作者:博客园小蔡编程
这次是作者第一次参加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 复赛感想的更多相关文章
- CSP J/S 初赛总结
CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...
- 【游记】CSP J/S 2019 游记
J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...
- CSP J/S 2019受虐记
一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...
- [游记]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− ...
- 【游记】CSP 2021 J2
这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...
- OI记录
这里是蒟蒻xsl的OI记录. 2017 2017.03.?? 开始接触OI 2017.10.14 参加NOIP2017普及组初赛,踩着分数线进入了复赛 2017.11.11 参加NOIP2017普及组 ...
- emacs考场短配置
(set-background-color "gray15") (set-foreground-color "gray") ;;设置颜色 (global-set ...
- noi linux 2.0 体验
一.起因 下午,我打开 noi 官网准备报名 csp j/s,一看官网展板:"noi linux 2.0 发布" 我就兴奋了起来.(9 月 1 日起开始使用, 也就意味着 csp ...
- CSP复赛day2模拟题
没错,我又爆零了.....先让我自闭一分钟.....so 当你忘记努力的时候,现实会用一记响亮的耳光告诉你东西南北在哪. 好了,现在重归正题: 全国信息学奥林匹克联赛(NOIP2014) 复赛模拟题 ...
随机推荐
- IOS 集成 Bilibili IJKPlayer播放器,播放rtmp视频流
因为公司项目需要,我一个连iPhone都没用过的人竟然跑去开发iOS APP.近一段时间一直忙于赶项目,到今天差不多了,所以记录一下当时遇到的各种坑,先从ios 集成 ijkplayer播放器说起! ...
- vue-admin-element 页面跳转
1.通过router-link 进行跳转 <router-link to="/china-quotation/business-function/quotation-request&q ...
- es6语法中promise的使用方法
Promise是一个构造函数,它有resolve,reject,race等静态方法;它的原型(prototype)上有then,catch方法,因此只要作为Promise的实例,都可以共享并调用Pro ...
- wrap()包裹被选元素的内容
<!doctype html><html><head><meta charset="utf-8"><title>修改代码 ...
- 源码编译安装 LNMP及论坛
一.安装Nginx服务 systemctl stop firewalld systemctl disable firewalld setenforce 0 1.安装依赖包 yum -y install ...
- shell中的$0 $n $# $* $@ $? $$
$0当前脚本的文件名 $n传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $#传递给脚本或函数的参数个数. $*传递给脚本或函数的所有参数. $@传 ...
- java版gRPC实战之七:基于eureka的注册发现
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 328 day07线程池、Lambda表达式
day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念 -[ ] 能够理解等待唤醒机制 -[ ] 能够描述Java中线 ...
- 1.24学习总结——HTML常见标签
HTML 标签简写及全称 下表列出了 HTML 标签简写及全称: 标签 英文全称 中文说明 a Anchor 锚 abbr Abbreviation 缩写词 acronym Acronym 取首字母的 ...
- Spring框架(第一天)
一. 引言 a) 什么是Spring框架?(spring官网:www.springsource.org) 3.x 不提供第三发依赖jar 目前已经到了5.x版本. Spring轻量级(代码入侵性小) ...