小学生现在都开始参加算法竞赛了,一起来感受下难度

1.扑克牌


error


解题思路
用空间换取时间,利用一个num二维数组储存各个花色不同点数缺少的纸牌数,行代表花色,列代表点数,例如:该语句num[0][8]=1;意为花色P点数为8的纸牌缺少一张。(其中num[i][0]储存四种花色剩余纸牌的总数)

具体解法
输入字符串S并解析它,将各花色缺少的纸牌数储存到num数组中,检查缺少的纸牌是否重复,并记录每种花色缺少的数量,用每种花色纸牌的总数减去缺少的数量即为每种花色剩余的纸牌数量。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void)
{freopen("card.in","r",stdin);freopen("card.out","w",stdout);string s;//缺少的纸牌语句int num[4][14]={0};//储存四种花色、十三个点数的纸牌缺少的数量(num[i][0]储存四种花色剩余纸牌的总数)cin >> s;//记录缺少的纸牌for (int i =0;i<s.length();i+=3)//每隔三个字符为纸牌的花色{int temp = 10 * (s[i + 1] - '0') + (s[i + 2] - '0') + 1;//储存点数if (s[i] == 'P')num[0][temp]++;else if (s[i] == 'K')num[1][temp]++;else if (s[i] == 'H')num[2][temp]++;else if (s[i] == 'T')num[3][temp]++;}//检查是否重复并记录每种花色缺少的数量for (int i = 0; i < 4; i++){int temp = 0;//一种花色缺少牌的总数for (int j = 1; j < 14; j++){if (num[i][j] == 2)//重复{cout << "ERROR";return 0;}else if (num[i][j] == 1)//缺少一张该花色牌temp++;}num[i][0] = 13 - temp;}for (int i = 0; i < 4; i++)cout << num[i][0];return 0;
}

2.东湖航线



第二题考察的知识点是递推相对简单

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1010
using namespace std;
int f[N];
int main()
{freopen("route.in","r",stdin);freopen("route.out","w",stdout);int n;scanf("%d",&n);int i,j;f[0]=1;f[1]=1;for(i=2;i<=n;i++){f[i]=f[i-1];for(j=2;j<=i;j++)(f[i]+=f[j-2]*f[i-j])%=10007;}printf("%d",f[n]);return 0;}

3.甲虫入侵






#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
const int MAXN=2010;
const ll INF=1ll<<47;
const ll way[4][2]={{0,1},{0,-1},{1,0},{-1,0}};struct rect{ll p1,q1,p2,q2;
}rec[MAXN];int n,tot=0;
int vis[MAXN][MAXN];
int lst[2],now[2];
map<ll,int>xpos,ypos;
vector<ll>x,y;
queue<pair<ll,ll> >q;inline int max(int x,int y){return x>y?x:y;
}
inline int min(int x,int y){return x<y?x:y;
}void adde(int ord){char opt[3];int val;scanf("%s%d",opt,&val);switch(opt[0]){case 'U':{now[0]=lst[0]-val;now[1]=lst[1];break;}case 'D':{now[0]=lst[0]+val;now[1]=lst[1];break;}case 'L':{now[0]=lst[0];now[1]=lst[1]-val;break;}case 'R':{now[0]=lst[0];now[1]=lst[1]+val;break;}default:{puts("Error");return;}}x.push_back(min(lst[0],now[0]));x.push_back(max(lst[0],now[0])+1);y.push_back(min(lst[1],now[1]));y.push_back(max(lst[1],now[1])+1);rec[ord]=(rect){min(lst[0],now[0]),min(lst[1],now[1]),max(lst[0],now[0])+1,max(lst[1],now[1])+1};lst[0]=now[0];lst[1]=now[1];
}int match(vector<ll>v,ll num){return find(v.begin(),v.end(),num)-v.begin();
}int main(){//freopen("beetle.in","r",stdin);//freopen("beetle.out","w",stdout);x.push_back(-INF);x.push_back(INF);y.push_back(-INF);y.push_back(INF);scanf("%d",&n);for(int i=0;i<n;i++)adde(i);sort(x.begin(),x.end());sort(y.begin(),y.end());x.resize(unique(x.begin(),x.end())-x.begin());y.resize(unique(y.begin(),y.end())-y.begin());for(int i=0;i<n;i++){lst[0]=match(x,rec[i].p1);now[0]=match(x,rec[i].p2)-1;lst[1]=match(y,rec[i].q1);now[1]=match(y,rec[i].q2)-1;for(int j=lst[0];j<=now[0];j++)for(int k=lst[1];k<=now[1];k++)vis[j][k]=1;}q.push(make_pair(0,0));vis[0][0]=2;while(!q.empty()){pair<ll,ll>u,v;u=q.front();q.pop();for(int i=0;i<4;i++){v=u;v.first+=way[i][0];v.second+=way[i][1];if(v.first>=0&&v.first<x.size()&&v.second>=0&&v.second<y.size()&&vis[v.first][v.second]==0){vis[v.first][v.second]=2;q.push(v);}}}ll ans=0;for(int i=0;i<x.size()-1;i++)for(int j=0;j<y.size()-1;j++)if(vis[i][j]!=2)ans+=(x[i+1]-x[i])*(ll)(y[j+1]-y[j]);printf("%lld\n",ans);return 0;
}

【CSPJ】CSPJ小学组相关推荐

  1. 【题解】CSP2022-J第二轮题解

    概述 & 前言 看到许多评价,说这次 CSP-J\texttt{CSP-J}CSP-J 的比赛题目质量甚至不如你谷的模拟赛,再加上 whk 实在落下太多了,所以就没打算补题.但是学校的老师非让 ...

  2. windowsmobile软件_经验:CSPJ/S初赛知识点整理(NOIP硬件与软件基础)

    noip暂停,CCF推出CSP-J/S,推荐往年NOIP初赛内容参考一下 「NOIP初赛--硬件与软件基础」 计算机组成 计算机硬件由五大部分组成:运算器.控制器.存储器.输入设备.输出设备.如下图 ...

  3. c++怎么输入带有空格的字符串_CCF CSP-J/S中常用的输入输出 总结(三)

    实验环境: DEV-C++ 5.11 六.关于文件的输入输出 七.关于string类型变量的赋值和连接操作 八.关于string类型的主要函数和运算 六.关于文件的输入输出 需要使用头文件#inclu ...

  4. 国家计算机二级申诉,CCF关于CSP-J/S2020第二轮认证申诉的通知

    CSP-J/S2020第二轮认证者通过报名系统提出申诉请求,只有通过报名系统注册并报名的认证者方可申诉.认证者可就多题目提出申诉,但各题目申诉必须分开,每个题目只能申诉1次. 认证者申诉前须仔细阅读& ...

  5. 动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)

    信息学奥赛到底考什么?NOI大纲文字收藏版 信息学奥赛到底考什么?NOI大纲文字收藏版_A-别针少儿编程的博客-CSDN博客 NOI大纲 CSP初赛篇·知识大纲 CSP-入门级-NOI大纲 NOI大纲 ...

  6. P7909 [CSP-J 2021] 分糖果 方法二

    https://www.luogu.com.cn/problem/P7909 /* P7909 [CSP-J 2021] 分糖果 方法二 好 https://www.luogu.com.cn/prob ...

  7. 洛谷P5661 公交换乘(CSP-J 2019 T2)

    传送门 题目可能排版有问题,导致出现一些乱码,具体请参考洛谷原题 题目描述 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 在搭乘一次地铁后可以获得一张优惠 ...

  8. 信息学奥赛(NOIP/CSP-J/S)学习全目录

    CSP-J/S第一轮知识点 请关注模拟训练赛及讲解 第一轮全目录 NOIP/CSP-J/S第二轮课程学习顺序指引 一.纲要 二.CL0-CL4内容后续更新 三.CL5 递归:地址 四.JL4搜索 1. ...

  9. csp-j 2022 比赛心得

    csp-j 2022 比赛心得 昨天在长沙打了 csp−jcsp-jcsp−j 202220222022 普及组第二轮,深有感触,用一个字形容就是:差!!! 本次考试,我认为我还有许多缺陷需要改正,也 ...

最新文章

  1. win10系统Mysql5.7服务启动报:1053错误:服务没有及时响应启动或控制请求
  2. 杂记2017.10.16
  3. 08.update_by_query操作
  4. Xcode9 之 Xcode Server 持续集成
  5. php html asp .net iis tomcat,iis+apache+tomcat 整合共享80口 支持ASP .NET JSP PHP全能WEB服务...
  6. 在Quartus下仿真FIFO的读写
  7. 菜鸟玩状态机之样式表解析
  8. 目标检测之FPN网络详解
  9. jsp教师档案信息管理系统ssh
  10. C语言 汉字名字排列组合
  11. (附源码)springboot垃圾自动分类管理系统 毕业设计 160846
  12. QQ连连看外挂核心算法(检测点对点)
  13. poi生成Workbook转成pdf(java实现excel转pdf)
  14. 英伟达NVIDIA驱动安装失败
  15. element ui中table合并相同内容单元格
  16. VS2013使用教程总结(3)---修改VA的注释
  17. DM36x Rate Control Modes
  18. dijkstra算法详解加例题分析 NOIP 2012 文化之旅
  19. Kali及Windows安装和使用OpenVPN
  20. (转)EJB是什么?

热门文章

  1. Android电池矫正方法
  2. 赛灵思运行linux,玩转赛灵思Zedboard开发板(6):如何在Zedboard上运行linux下的应用程序?...
  3. qt编译quazip静态库_Qt之QuaZip编译-使用教程
  4. Nginx 从入门到实践(超级详细)
  5. 客户关系管理项目——用户登录模块设计
  6. 【Spring】依赖注入的几种方式
  7. 数学建模常用算法汇总及python,MATLAB实现(五) —— 拟合
  8. 杭电OJ4544 湫湫系列故事——消灭兔子(优先队列过)
  9. 将 vim 外的内容复制并粘贴到 Vim 里使用,如从windows系统复制内容到vim中使用
  10. iOS开发系列-音频、视频以及摄像