作者:博客园小蔡编程

这次是作者第一次参加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大家能考出好成绩

最新文章

  1. discuz教程:discuz模板js与jQuery冲突的解决方案
  2. django修改admin密码
  3. Wordpress-数据库结构分析(转)
  4. [原]Unity3D深入浅出 - 脚本开发基础(Scripts)
  5. maven 打包源文件
  6. Protel99se教程七:创建PCB元件封装
  7. POJ 1947 - Rebuilding Roads 树型DP(泛化背包转移)..
  8. 第一章ASP.NETMVC
  9. linux中fork()函数详解(转)
  10. sfs - django start from scratch
  11. css3快速复习
  12. .md即markdown文件的基本常用编写语法(图文并茂)
  13. 解决 Win10 UWP 无法使用 ss 连接
  14. 使用bat打开多个cmd窗口执行gulp、node
  15. Galaxian 小蜜蜂
  16. maven聚合工程无法install
  17. Postgresql - jsonb_pretty &amp; dateStyle
  18. IOS支持多国语言
  19. JS滚轮mousewheel事件和DOMMouseScroll事件
  20. odoo开发笔记--与微信集成

热门文章

  1. 什么是云效持续集成?如何关联Jenkins进行持续集成?
  2. WEB漏洞——CSRF、SSRF
  3. MongoDB(15)- 查询操作里面的游标 cursor
  4. windows操作系统和java常识
  5. [Linux系列]DNS系列理论笔记与DNS服务器配置
  6. 自定义cs程序安装界面
  7. Excel删除重复数据及用公式筛选重复项并标记颜色突出显示
  8. mybatis零碎
  9. CSS写一个缺角的div和菱形
  10. django ORM教程(转载)