CSP
写了一部分CCF CSP的题解
Alan_Lowe
世上没有白走的路,每一步都算数!——狂神
展开
-
俄罗斯方块
俄罗斯方块from CCF-CSP 2016-04-2Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int x[30][30];int xx[5][5];int num,now;bool note[30][30];void init(){ for(int i = 1;i <= 15;++i) for(int j = 1;j原创 2021-04-11 12:52:18 · 161 阅读 · 0 评论 -
ISBN号码
ISBN号码from CCF-CSP 2013-12-2Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;string s1,s2;char ch;int sum;int main(){ cin>>s1; for(int i = 0;i <= 10;++i) //提取数字位 if(s1[i] != '-原创 2021-04-11 10:32:32 · 97 阅读 · 0 评论 -
出现次数最多的数
出现次数最多的数from CCF-CSP 2013-12-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,m,x[10005],maxn,note;int main(){ cin>>n; while(n--) cin>>m,++x[m]; for(int i = 1;i <= 10原创 2021-04-11 10:12:27 · 84 阅读 · 0 评论 -
窗口
窗口from CCF-CSP 2014-03-2Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,m,now,a,b,i;struct ck{ int id; int now; int x1,y1,x2,y2;}x[15];bool cmp(ck a,ck b){ //根据优先级将窗口从底层到顶层排序原创 2021-04-11 10:06:18 · 118 阅读 · 0 评论 -
相反数
相反数from CCF-CSP 2014-03-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,x[1005],a,sum;int main(){ cin>>n; while(n--) cin>>a,++x[abs(a)]; for(int i = 0;i <= 1000;++i)原创 2021-04-11 09:44:57 · 117 阅读 · 0 评论 -
画图
画图from CCF-CSP 2014-09-2Time limit:1sMemory limit:256MB用二维数组,用点模拟方块,数据量很小,直接暴力就可以了ac代码:#include<bits/stdc++.h>using namespace std;int n,x2,y2,x3,y3,sum;bool note[105][105];int main(){ cin>>n; for(int i = 1;i <= n;++i){原创 2021-04-11 09:39:42 · 85 阅读 · 0 评论 -
相邻数对
相邻数对from CCF-CSP 2014-09-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,x[10005],a,sum;int main(){ cin>>n; while(n--) cin>>a,++x[a]; for(int i = 0;i <= 10000;++i)原创 2021-04-11 09:27:53 · 139 阅读 · 0 评论 -
Z字形扫描
Z字形扫描from CCF-CSP 2014-12-2Time limit:2sMemory limit:256MB模拟一下扫描标记的移动,注意扫描超过了副对角线过后扫描转移会改变就可以了ac代码:#include<bits/stdc++.h>using namespace std;int m,n,x[505][505],i,j,k,row,col;void solve1(){ //向左下 while(col >= 1 &原创 2021-04-11 09:17:47 · 2735 阅读 · 9 评论 -
门禁系统
门禁系统from CCF-CSP 2014-12-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,m,num[1005];int main(){ cin>>n; while(n--) cin>>m,++num[m],cout<<num[m]<<" "; retur原创 2021-04-07 09:20:54 · 119 阅读 · 0 评论 -
数字排序
数字排序from CCF-CSP 2015-03-2Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,m;pair<int,int> p[1005]; //first存储数字,second存储该数字出现的次数bool cmp(pair<int,int> p1,pair<int,int> p2){ //原创 2021-04-07 09:11:34 · 102 阅读 · 0 评论 -
图像旋转
图像旋转from CCF-CSP 2015-03-1Time limit:5sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,m,x[1005][1005];int main(){ cin>>n>>m; for(int i = 1;i <= n;++i) for(int j = 1;j <= m;++j)原创 2021-04-07 08:59:04 · 98 阅读 · 0 评论 -
消除类游戏
消除类游戏from CCF-CSP 2015-12-2Time limit:1sMemory limit:256MB分别按行按列进行处理,每一行或每一列只要有连续3个以上相等的数,就将其标记为需要消除。最后将所有需要消除的位置都改为0,然后输出即可。ac代码:#include<bits/stdc++.h>using namespace std;int n,m,i,j,k;int x[35][35];bool note[35][35];void row(){原创 2021-04-07 08:53:49 · 130 阅读 · 2 评论 -
日期计算
日期计算from CCF-CSP 2015-09-2Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int year,month = 1,day;int x[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){ cin>>year>>day; if(year %原创 2021-04-07 07:56:02 · 123 阅读 · 0 评论 -
数列分段
数列分段from CCF-CSP 2015-09-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,x,pre = -1,sum;int main(){ cin>>n; while(n--){ cin>>x; if(x != pre) ++sum,pre =原创 2021-04-06 22:08:48 · 110 阅读 · 0 评论 -
数位之和
数位之和from CCF-CSP 2015-12-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,sum;int main(){ cin>>n; while(n) sum += n % 10,n /= 10; cout<<sum; return 0;}...原创 2021-04-06 21:57:17 · 95 阅读 · 0 评论 -
折点计数
折点计数from CCF-CSP 2016-04-1Time limit:1sMemory limit:256MBac代码:#include<bits/stdc++.h>using namespace std;int n,x[1005],sum;int main(){ cin>>n; for(int i = 1;i <= n;++i) cin>>x[i]; for(int i = 2;i < n;原创 2021-04-05 21:31:33 · 102 阅读 · 0 评论 -
火车购票
火车购票from CCF-CSP 2016-09-2Time limit:1sMemory limit:256MBac代码:#include<iostream>using namespace std;int n;pair<int,int> pii[25];//pii存储每一排的信息,first存储该排还有几个空座,second记录该排所剩座位的开始序号void solve(){ int p;cin>>p; //票 f原创 2021-03-31 18:39:43 · 122 阅读 · 0 评论 -
最大波动
最大波动from CCF-CSP 2016-09-1Time limit:1sMemory limit:256MBac代码:#include<iostream>#include<algorithm>using namespace std;int n,pre,today,maxn;int main(){ cin>>n>>pre; for(int i = 2;i <= n;++i) cin>&g原创 2021-03-31 08:48:45 · 98 阅读 · 0 评论 -
工资计算
工资计算from CCF-CSP 2016-12-2Time limit:1sMemory limit:256MBac代码:#include<iostream>using namespace std;int s,t;int main(){ cin>>t; if(t <= 3500) s = t; else if(t <= 4955) s = 3500 + (t - 3500) / 0.97;原创 2021-03-31 08:40:04 · 133 阅读 · 0 评论 -
中间数
中间数from CCF-CSP 2016-12-1Time limit:1sMemory limit:256MB前缀和问题,先将所有数字进行从小到大排序,然后统计比它大的数和比它小的数的个数,如果个数相等,那么就是找到了,否则输出-1。ac代码:#include<iostream>#include<algorithm>using namespace std;int n,x[1005]; //n个数,存储这些数的数组int原创 2021-03-29 20:11:05 · 288 阅读 · 0 评论 -
分蛋糕
分蛋糕from CCF-CSP 2017-03-1Time limit:1sMemory limit:256MBac代码:#include<iostream>using namespace std;int n,k,sum,num,a;//nk如题,sum是某个人已分得蛋糕重量,num是已经有多少人分到了蛋糕,a是一个蛋糕的重量int main(){ cin>>n>>k; while(n--){ cin>>原创 2021-03-29 14:44:57 · 90 阅读 · 0 评论 -
学生排队
学生排队from CCF-CSP 2017-03-2Time limit:1sMemory limit:256MBac代码:#include<iostream>#include<algorithm>using namespace std;int n,m,p,q; //如题int note[1005]; //记录每个学生所在位置int que[1005]; //记录某个位置的学生编号void init原创 2021-03-29 14:23:58 · 88 阅读 · 0 评论 -
公共钥匙盒
公共钥匙盒from CCF-CSP 2017-09-2Time limit:1sMemory limit:256MB将每个老师的信息分为两个操作,一个操作是取,一个操作时放,这样一共有2*k个操作,每个操作信息包括钥匙编号、时间、和存取。struct Node{ int num; //钥匙编号 bool pick; //真为拿钥匙,假为还钥匙 int time; //时间};将这些操作按规则排序,然原创 2021-03-29 13:37:51 · 139 阅读 · 0 评论 -
打酱油
打酱油from CCF-CSP 2017-09-1Time limit:1sMemory limit:256MB思路:优先买5瓶,然后买3瓶,最后买1瓶ac代码:#include<iostream>using namespace std;int n,sum; //如题n和购买总数int main(){ cin>>n; sum += (n / 50 * 7); sum += (n % 50 / 30 * 4); su原创 2021-03-29 11:06:37 · 91 阅读 · 0 评论 -
碰撞的小球
碰撞的小球from CCF-CSP 2018-03-2Time limit:1sMemory limit:256MB思路:数据范围比较小,直接暴力就行了。对于每个小球,它的信息都包括当前的位置和移动的方向,所以用一个pair数组存储所有小球的信息。pair<int,bool> p[105];//存储小球的信息,int表示小球所在位置,bool真表示正向移动,假表示负向移动对于每一秒:1.让小球移动for(int i = 1;i <= n;++i) if(p原创 2021-03-29 10:58:09 · 130 阅读 · 0 评论 -
游戏
游戏from CCF-CSP 2017-12-2Time limit:1sMemory limit:256MB考虑到玩家退出,那么我用到了set,哪个玩家出局了,那么就将该玩家从set中去掉。ac代码:#include<iostream>#include<set>using namespace std;int n,k,num; //n,k,记录报数的数字set<int> s;int main(){ cin>原创 2021-03-27 21:41:15 · 107 阅读 · 0 评论 -
差值
差值from CCF-CSP 2017-12-1Time limit:1sMemory limit:256MBac代码:#include<iostream>#include<algorithm>using namespace std;int n,x[1005],mini = 10005;int main(){ cin>>n; for(int i = 1;i <= n;++i) cin>>x[i];原创 2021-03-27 19:27:38 · 130 阅读 · 0 评论 -
跳一跳
跳一跳from CCF-CSP 2018-03-1Time limit:1sMemory limit:256MBac代码:#include<iostream>using namespace std;int n,score,add;int main(){ while(cin>>n){ if(n == 0) //游戏结束 break; else if(n == 1) //加1原创 2021-03-27 18:54:04 · 128 阅读 · 0 评论 -
买菜
买菜from CCF-CSP 2018-09-2Time limit:1sMemory limit:256MB搞两个指针指向两个人的时间数组,指针不断移动来判断两个人的某两个时间段是否有交集,有交集则累加。ac代码:#include<iostream>#include<algorithm>using namespace std;pair<int,int> pii1[2005]; //第一个人的信息pair<int,int>原创 2021-03-27 18:35:49 · 108 阅读 · 0 评论 -
卖菜
卖菜from CCF-CSP 2018-09-1Time limit:1sMemory limit:256MBac代码:#include<iostream>using namespace std;int x[1005],n;int main(){ cin>>n; for(int i = 1;i <= n;++i) cin>>x[i]; cout<<(x[1] + x[2]) / 2;原创 2021-03-25 21:23:13 · 102 阅读 · 0 评论 -
小明放学
小明放学from CCF-CSP 2018-12-2Time limit:1sMemory limit:512MB题目简单,但是要注意int会溢出,106*105=1011了,我最开始没注意数据范围被卡了好久ac代码:#include<iostream>using namespace std;int r,y,g,n,k,t,all; //如题(all表示三种灯一轮一共需要多长时间,即all=r+y+g)long long sum; //总原创 2021-03-25 18:01:54 · 108 阅读 · 0 评论 -
小明上学
小明上学from CCF-CSP 2018-12-1Time limit:1sMemory limit:512MB简单累加问题,只需要考虑到红绿灯需要等待多长时间就可以了。ac代码:#include<iostream>using namespace std;int x,y,g,n,sum; //如题红灯、黄灯、绿灯、道路路段和红绿灯数目、总时间int main(){ cin>>x>>y>>g>>n;原创 2021-03-24 22:52:21 · 93 阅读 · 0 评论 -
二十四点
二十四点from CCF-CSP 2019-03-2Time limit:1sMemory limit:512MB这个题目相比于数据结构当中的求后缀表达式再求解表达式是简单很多的,因为没有括号,而且表达式很简单。乘除运算的优先级高,那么每次遇到乘除号就直接处理,遇到加减号就存起来等待处理,从前往后遍历,将乘除处理完,遍历完后再从前往后处理加减。最开始我想的是用两个栈来存储待处理数字和符号,但是那样的话,只能从后往前操作,比如5-4+5运算出来结果就是-4,如果我们不将中缀表达式转化成后原创 2021-03-24 22:15:17 · 146 阅读 · 0 评论 -
小中大
小中大from CCF-CSP 2019-03-1Time limit:1sMemory limit:512MB题目很简单注意小数就可以了。ac代码:#include<iostream>using namespace std;int n,x[100005];int main(){ cin>>n; for(int i = 1;i <= n;++i) cin>>x[i]; if(x[1] > x[原创 2021-03-24 20:41:46 · 134 阅读 · 0 评论 -
回收站选址
回收站选址from CCF-CSP 2019-12-2Time limit:1sMemory limit:512MB这个题目n的个数是1000,所以是可以直接O(n2)暴力解决的,我们在嵌套循环里面分别记录某个点上下左右垃圾的个数和对角位置垃圾的个数,如果上下左右四个位置都存在垃圾,那么这个点是适合建立垃圾回收站的,进而把得分存入score数组就可以了。ac代码:#include<iostream>using namespace std;pair<int,in原创 2021-03-24 16:49:28 · 199 阅读 · 0 评论 -
小明种苹果(续)
小明种苹果(续)from CCF-CSP 2019-09-2Time limit:1sMemory limit:512MBac代码:#include<iostream>using namespace std;int n;bool drop[1005]; //记录每一棵树是否自然掉落过果子int sum; //后续记录int main(){ cin>>n; for(int i = 1;i <原创 2021-03-24 16:06:15 · 97 阅读 · 0 评论 -
小明种苹果
小明种苹果from CCF-CSP 2019-09-1Time limit:2sMemory limit:512MBac代码:#include<iostream>using namespace std;int n,m; //如题n,mint all,maxnum,maxpick; //剩余果子数、最大疏果数对应的编号、最大疏果数int main(){ cin>>n>>m; for(i原创 2021-03-24 08:42:18 · 112 阅读 · 0 评论 -
报数
报数from CCF-CSP 2019-12-1Time limit:1sMemory limit:512MB简单累加问题,我们可以发现,一个数除于7等于1的话,那么这个数刚好对应甲,2对应乙,3对应丙,0对应丁所以需要跳过的那个数除于7等于多少,就给对应的人累加1。ac代码:#include<iostream>using namespace std;int n,note = 0; //n如题,note记录已经报的数的个数(不包含跳过的)int a,b,c,原创 2021-03-18 11:48:49 · 141 阅读 · 0 评论 -
稀疏向量
稀疏向量from CCF-CSP 2020-06-2Time limit:2sMemory limit:512MB数据结构里面稀疏矩阵的思想就可以了,找到相同的维度的地方就相乘,然后累加。ac代码:#include<iostream>using namespace std;int n,a,b;pair<int,int> p1[500005]; //存储向量1pair<int,int> p2[500005];原创 2021-03-17 22:47:59 · 407 阅读 · 0 评论 -
线性分类器
线性分类器from CCF-CSP 2020-06-1Time limit:1sMemory limit:512MB这是一个数学题目,只需要看一下是否A和B类的点分别在直线的两边,直接将点带入直线,大于0的点都在同一边,而小于0的点在另一边。这个题我使用了一个小技巧,我们假设A是对应大于0,而B是对应小于0,那么如果大于0并且类别是A或者小于0并且类别是B我们就累加,最后如果能分成两类的话,那么这个累加数一定是n(假设正确)或者0(和假设相反)if((theta0 + theta1原创 2021-03-17 21:41:08 · 142 阅读 · 0 评论