CSP刷题记录
从CSP第一期开始一直往后刷,一次比赛一篇文章
liyihwa____
这个作者很懒,什么都没留下…
展开
-
CSP 2020-9
1.称监测点查询#include<iostream>#include<algorithm>using namespace std;#define ll long longll px,py;#define N 210struct node{ ll x,y,p; bool operator<(const node &nd)const{ ll dis1=(this->x-px)*(this->x-px)+(this->y-py)*(thi原创 2021-11-05 12:08:41 · 116 阅读 · 0 评论 -
CSP 2020-06
1.线性分类器设点的坐标为(x0,y0)直线坐标为A+BX+CY=0则将点坐标代入直线方程,结果若为负则在该直线下方,反之在上方。很重要的公式!!#include<iostream>using namespace std;#define N 1010#define ll long longll x[N],y[N],tp[N]; //-1代表a,1代表b ll res[N];int n,m;int main(){ cin>>n>>m; int原创 2021-11-04 20:19:25 · 85 阅读 · 0 评论 -
CSP 2019-12
1.报数看注释即可:#include<iostream>#include<cstring>using namespace std;int is_7(int x){ if(x%7==0) return 1; while(x){ if(x%10==7) return 1; x/=10; } return 0;}int n; //记录当前报了多少个数字int t;//记录当前报到了哪个数字, t不一定等于nint pass[4];int main(){原创 2021-11-03 13:56:35 · 79 阅读 · 0 评论 -
CSP 2021-9
#include<bits/stdc++.h>#define lyh(i,a,b) for(int i=a;i<b;++i)using namespace std;int main(){ int n; int lst=-1; cin>>n; int mx=0,mi=0; lyh(i,0,n) { int tmp; cin>>tmp; if(tmp!=lst){ mi+=tmp; lst=tmp; } mx+=...原创 2021-10-02 18:32:24 · 301 阅读 · 0 评论 -
CSP 2019-9
1.小明种苹果#include<iostream>#include<vector>#include<cstring>using namespace std;#define ll long longll n,m,t=0,k,p,tp;int main(){ cin>>n>>m; for(int i=0;i<n;i++){ ll now,sum=0; cin>>now; for(int j=0;j<原创 2021-10-30 23:02:57 · 85 阅读 · 0 评论 -
CSP 2019-3
2.24点比较恶心的小模拟题,有几个小技巧:1.有 - 时,直接op栈push + , num 栈push 负下一个数字即可2.遇到乘法或者除法时直接和下一个数计算好结果再push到num栈里#include<iostream>#include<stack>using namespace std;int cal(int a,char c,int b){ if(c=='+') return a+b; if(c=='-') return a-b; if(c==...原创 2021-10-28 13:01:35 · 104 阅读 · 0 评论 -
CSP 2018-12
1.小明上学无脑模拟即可#include<iostream>using namespace std;int r,y,g;int n,k,t;#define ll long longint main(){ ll ans=0; cin>>r>>y>>g; cin>>n; while(n--){ cin>>k>>t; if(k==0){ ans+=t; } if(k==1){ an原创 2021-10-26 19:49:29 · 116 阅读 · 0 评论 -
CSP 2018-9
1.卖菜第一项和最后一项特殊处理一下即可#include<iostream>using namespace std;int main(){ int n; int a[1010]; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; int b[1010]; for(int i=2;i<=n-1;i++){ b[i]=(a[i-1]+a[i]+a[i+1])/3; } b[1]=(a[1]+原创 2021-10-25 11:12:18 · 107 阅读 · 0 评论 -
CSP 2018-3
1.跳一跳#include<iostream>using namespace std;int main(){ int n; int ans=0,sc=1; while(cin>>n){ if(n==1){ sc=1; } if(n==2){ if(sc==1) sc=2; else sc+=2; } if(n==0) break; ans+=sc; } cout<<ans<<endl;}2.碰撞原创 2021-10-22 19:36:54 · 126 阅读 · 0 评论 -
CSP 2017-12
1.最小差值排序枚举int a[N];int main(){ int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); int ans=0x3f3f3f3f; for(int i=1;i<n;i++) ans=min(ans,a[i]-a[i-1]); cout<<ans;}2.游戏约瑟夫环bool is(原创 2021-10-21 11:07:04 · 1558 阅读 · 0 评论 -
CSP 2017-9
1.打酱油贪心模拟即可#include<iostream>using namespace std;int main(){ int n; cin>>n; int ans=0; while(n>=10){ if(n>=50){ n-=50; ans+=7; }else if(n>=30){ n-=30; ans+=4; }else if(n>=10){ n-=10; ans++; } } c原创 2021-10-19 22:57:37 · 111 阅读 · 0 评论 -
CSP 2017-3
1.分蛋糕注意题目的问题是分到蛋糕的人数,而不是分到蛋糕数>=k的人数#include<iostream>#include<algorithm>using namespace std;#define N 1010int a[N],n,k;int main(){ cin>>n>>k; for(int i=0;i<n;i++) cin>>a[i]; int ans=0; for(int i=0;i<n;原创 2021-10-18 22:35:37 · 170 阅读 · 0 评论 -
CSP 2016-12
1.中间数o(n平方)模拟即可,可以预排序o(n)#include<iostream>#include<vector>using namespace std;#define N 1010int a[N];int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i<n;i++){ int l=0,b=0; for(in原创 2021-10-17 22:01:18 · 91 阅读 · 0 评论 -
CSP 2016-9
1.最大波动o(n) 模拟即可#include<iostream>#include<cmath>#include<algorithm>using namespace std;#define N 1000 int a[N];int main(){ int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=0; for(int i=原创 2021-10-14 15:18:24 · 114 阅读 · 0 评论 -
CSP 2016-4
1.折点计数O(n) 模拟即可#include<iostream>using namespace std;#define N 1010int a[N];int main(){ int n; cin>>n; int ans=0; for(int i=0;i<n;i++) cin>>a[i]; for(int i=1;i<n-1;i++){ if(a[i-1]>a[i]&&a[i]<a[i+1]||a原创 2021-10-12 22:40:43 · 1003 阅读 · 0 评论 -
CSP 2015-12
1.数位和#include<iostream>using namespace std;int main(){ char c; int ans=0; while(cin.get(c)){ if(c=='\n') break; ans+=c-'0'; } cout<<ans;}原创 2021-10-11 21:02:05 · 852 阅读 · 0 评论 -
CSP 2015-9
1.数列分段自己写的:#include<iostream>using namespace std;#define N 1010int a[N];int main(){ int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=0; for(int i=0;i<n;) { int j; for(j=i;j<n&&a[j]==a[i];j++); an原创 2021-10-09 11:45:41 · 92 阅读 · 0 评论 -
CSP 2015-3
1.图像旋转#include<iostream>using namespace std;#define N 1010int a[N][N];int n,m;int main(){ cin>>n>>m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j]; for(int i=m-1;i>=0;i--) { for原创 2021-10-08 13:46:21 · 131 阅读 · 0 评论 -
CSP 2014-12
1.门禁系统#include<iostream>#define N 1010using namespace std;int a[N]={0};int main(){ int n; cin>>n; while(n--){ int t; cin>>t; cout<<++a[t]<<" "; }}2.Z字型扫描自己写的:#include<iostream>#define N 510#include原创 2021-10-07 16:16:57 · 146 阅读 · 0 评论 -
CSP 2014-9
1.相邻数对#include<iostream>#include<cstring>#include<algorithm>#include<map>using namespace std;#define N 1010 int a[N];int main(){ int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); long long an原创 2021-10-06 15:01:01 · 116 阅读 · 0 评论 -
CSP 2014-3
1.相反数#include<bits/stdc++.h>using namespace std;#define N 1000 map<int,int> a;int main(){ int n; cin>>n; for(int i=0;i<n;i++) { int tp; cin>>tp; a[tp]++; } int ans=0; for(int i=0;i<=1000;i++){ ans+=a[i]*a原创 2021-10-04 17:23:39 · 179 阅读 · 0 评论 -
CSP 2013-12
TIPS: 如果输入数据的个数小于10W,cin和scanf都可以反之用scanf1.出现次数最多的数字#include<bits/stdc++.h>using namespace std;int h[10001];int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int tp; cin>>tp; h[tp]++; } int ans=0,ansv=0; for(int i=0原创 2021-10-03 14:18:39 · 126 阅读 · 0 评论