学习目标:
博主介绍: 27dCnc
专题 : 数据结构帮助小白快速入门
👍👍👍👍👍👍👍👍👍👍👍👍
☆*: .。. o(≧▽≦)o .。.:*☆
Github今日打卡
- ACM题解
学习内容:
1.台风
题目
代码
#include <bits/stdc++.h>
using namespace std;int main(){int a[100];int count=0;//41int all=0;//63int s=0;int e=0;for(int i=1;i<=8;i++){cin>>a[i]; if(a[i]>=118){s++;}if(a[i]>=63){all++;}if(a[i]>=41){count++;}}if(s>0){cout<<10;}else if(all>=4){cout<<8;}else if(count>=4){cout<<3;}else{cout<<1;}}
思路: 概率情况从小到大,这个样子一些情况就会被覆盖
2.式神考试
题目
代码
思路分析:
根据题目的意思,我们不难求出以下两个数值:
- 得到了满分的题一共有 n−m 道;
- 得到了满分的题目,加起来一共有 1e7 x (n - m) / n 分
但是知道了得到了满分的题目一共有多少分,如何用其,以及非满分的题目的个数去计算出结果呢?这一关键在于“循环枚举”的思想,即利用计算机较高的运行速度,使用循环结构去计算出最后的答案。
那对于这一道题目我们如何利用到这个思想求解呢?我们可以枚举有多少题目获得了一半分。假设是有 i 道题目获得了一半的分数,则有:
获得了一半的分数的题目,加起来一共有 1/2×1e7/n×*i*
图解 :
核心代码
3.DNA
题目
代码
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;void QAQ(){int m;int count=0;int q=0;cin>>m;string s;cin>>s;string s1=s;reverse(s.begin(),s.end());// cout<<s<<"\n";// cout<<s1<<"\n";for(int i=0;i<m;i++){if(s[i]=='A'&&s1[i]=='T'){q+=(i+1);count++;}if(s[i]=='C'&&s1[i]=='G'){q+=(i+1);count++;}if(s[i]=='T'&&s1[i]=='A'){q+=(i+1);count++;}if(s[i]=='G'&&s1[i]=='C'){q+=(i+1);count++;}}if(count){cout<<q<<"\n";}else{cout<<0<<"\n";}
}int main(){int n;cin>>n;while(n--) QAQ();
}
思路:
统计计数 对DNA统计因为DNA是对称的所以(i+1)因为出现一次说明有两次非被检测到匹配字符串通过统计来计数
4.方程求解
题目
思路 :
- 通过
unique()
来将重复的元素移动到后面- 然后通过
lower_bound()
来确定左边的范围- 然后通过
lupper_bound()
来确定右边的范围
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;ll x[600000];
int main(){ll n,Q;cin>>n>>Q;for(int i=1;i<=n;i++){int a,b,c;scanf("%dx%d=%d",&a,&b,&c);x[i]=(c-b)/a;}sort(x+1,x+n+1);ll nx=unique(x+1,x+n+1)-x-1;while(Q--){ll L,R;cin>>L>>R;ll L1=lower_bound(x+1,x+nx+1,L)-x-1;ll R1= upper_bound(x+1,x+nx+1,R)-x-1;cout<<R1-L1<<"\n";}return 0;
}
学习时间:
- 周一至周五晚上 7 点—晚上9点
- 周六上午 9 点-上午 11 点
- 周日下午 3 点-下午 6 点
学习产出:
- 技术笔记 2 遍
- CSDN 技术博客 3 篇
- 习的 vlog 视频 1 个
🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏、✍️评论,支持一下博主~