2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 蓝桥杯最终冲刺(冲刺Day2)

蓝桥杯最终冲刺(冲刺Day2)

时间:2023-11-30 00:36:19

相关推荐

蓝桥杯最终冲刺(冲刺Day2)

1.含2天数(国赛——3月16日)

思路:这一天的年月日中只要有一个2即符合条件

#include <iostream>using namespace std;bool isyear(int x){return (x % 400 == 0 || x % 4 == 0 && x % 100 != 0);}bool check(int n){while(n){if(n % 10 == 2)return true;n /= 10;}return false;}int main(){int cnt = 0;for(int i = 1900; i <= 9999; i ++)//枚举年份{if(check(i)) //年份包含2{if(isyear(i)) cnt += 366;else cnt += 365;}else{if(isyear(i))cnt += 180;//每个月含2天数 + 2月 + 12月elsecnt += 179;}}cout << cnt << endl;return 0;}

2.蓝桥幼儿园(3月21日)

OP 判定

#include <bits/stdc++.h>using namespace std;const int MAXN = 2e5+10;int fa[MAXN];void init(int n){for(int i=1;i<=n;i++){fa[i] = i;}}int find(int x){return x==fa[x] ? fa[x] : (fa[x]=find(fa[x]));}void merge(int x,int y){int fx = find(x);int fy = find(y);if(fx!=fy){fa[fx] = fy; }}int main(){int n,m;cin >> n >> m;init(n);for(int i=0;i<m;i++){int t,x,y;cin >> t >> x >> y;if(t==1){merge(x,y);}else{if(find(x)==find(y)){cout << "YES" << endl;}else{cout << "NO" << endl;}}}}

3.七星填数(国赛——3月27日)

暴力就完事了

#include <iostream>#include <algorithm>using namespace std;int a[11]={1,2,3,4,5,7,8,9,10,12,13};int main(){do{int sum=a[0]+a[1]+a[2]+a[3];if(6+a[2]+a[5]+11==sum&&6+a[1]+a[4]+14==sum&&a[0]+a[4]+a[6]+a[9]==sum&&a[3]+a[5]+a[7]+a[10]==sum&&14+a[6]+a[8]+a[10]==sum&&a[9]+a[8]+a[7]+11==sum){printf("%d %d %d %d",a[0],a[1],a[2],a[3]);}}while(next_permutation(a,a+11));return 0;}

4.日志统计(省赛——3月13日)

该题为二刷题,解题思路与第一次做一致,所以就直接上代码了

#include<cstdio>#include<algorithm>using namespace std;int n,d,k;int nowlike[100005];struct node{int ts;int id;};node arr[100005];bool ishot[100005];bool cmp(node x,node y){return x.ts<y.ts;}int main(){scanf("%d%d%d",&n,&d,&k);for(int i=1;i<=n;i++)scanf("%d%d",&arr[i].ts,&arr[i].id);sort(arr+1,arr+1+n,cmp);int l = 1;for(int i=1;i<=n;i++){ nowlike[arr[i].id]++;while(arr[i].ts >= arr[l].ts + d) nowlike[arr[l++].id]--;if(nowlike[arr[i].id]>=k) ishot[arr[i].id] = true;}for(int i=0;i<=100005;i++)if(ishot[i])printf("%d\n",i);return 0;}

5.子串分值

#include <iostream>#include <vector>using namespace std;vector<int> pos[26]; int main() {string s;cin >> s;int lgh = s.length();for(int i = 0; i < lgh; i++) {int index = s[i] - 'a';if(!pos[index].size()) pos[index].push_back(-1); pos[index].push_back(i);}for(int i = 0; i < 26; i++)if(pos[i].size()) pos[i].push_back(lgh);long long ans = 0;for(int i = 0; i < 26; i++)if(pos[i].size())for(int j = 1; j < pos[i].size() -1; j++) ans += (pos[i][j] - pos[i][j - 1] - 1) + (pos[i][j + 1] - pos[i][j] -1)+ 1ll * (pos[i][j] - pos[i][j - 1] - 1) * (pos[i][j + 1] - pos[i][j] - 1);ans += lgh; cout << ans << endl;return 0;}

6.小数第N位

#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <vector>#include <queue>#define ll long longusing namespace std;int b;long long qpow(ll base,ll num){long long ans=1,r=1;while(num){if(num&1){ans=base*ans%(b*1000);}num>>=1;base=base*base%(b*1000);}return ans;}int main(){ll a,c;cin>>a>>b>>c;cout<<(a*qpow(10,c+2)%(b*1000)/b);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。