Acwing第37场周赛题解
文章目录
- A
- B
- C
A
原题链接4296. 合适数对
方法:
题目的数据量给的不是很大,直接双循环,通过公式暴力求解就好了。
#include<iostream>
using namespace std;int main(){int n,a,b;int flag=0;//(1)scanf("%d%d%d",&n,&a,&b);int t1;int t2;for(int i=0;i<=1000;i++){for(int j=0;j<=1000;j++){if(a*i+b*j==n){flag=1;//(2)t1=i;t2=j;break;}}if(flag)break;}if(flag){//(3)cout<<"YES"<<endl;cout<<t1<<" "<<t2;}elsecout<<"NO";
}
(1)令flag=0,用来表示当前并未找到符合条件的x,y。
(2)找到了x,y,这时就需要退出循环,因为要求找的x是所有方案中最小的。
(3)通过flag判断是否找到了x和y。
B
原题链接AcWing 4297. 截断数组
方法:
头尾双指针算法。
解析:
第一步:设置变量及其初始化。
left指针:指向数组的第一个数字
right指针:指向数组的最后一个数字
sum1:存储数组第一个数字
sum3:存储数组的最后一个数字
ans:用来表示最后输出的结果
第二步:进入循环
三个if语句:
1.第一个最为重要,通过头尾双指针进行前后遍历,只有当sum1数组数字总和=sum3数组时,才更新sum1数组的最大值ans。并让头尾指针各走一步,更新sum1和sum3数组的数据。
2.sum1数组的总和>sum3数组,right指针走一步,sum3数组加上下一个数据
3.sum1数组的总和<sum3数组,right指针走一步,sum1数组加上下一个数据。
第三步:输出结果ans
因为一共有两种情况:结果为0或者不为0
因为ans的初值为0,并且只有sum1数组数字总和=sum3数组时才进行更新。
所有包含了两种情况,不需要分类讨论。
#include<iostream>
using namespace std;
typedef long long ll;
const int N=200010;
ll n;
ll arr[N];int main(){scanf("%d",&n);for(ll i=0;i<n;i++)scanf("%d",&arr[i]);ll sum=0;ll left=0;ll right=n-1;ll sum1=arr[left];ll sum3=arr[right];while(left<right){if(sum1==sum3){sum=sum1;left++;right--;sum1+=arr[left];sum3+=arr[right];}else if(sum1>sum3){right--;sum3+=arr[right]; }else if(sum1<sum3){left++;sum1+=arr[left];}}cout<<sum;
}
C
原题链接AcWing 4298. 搭档
方法:排序+双指针两个数组同时遍历
解析:
第一步:初始化操作,设置双指针i,j分别指向两个数组的第一个数字
配对个数res
第二步:分别对男生,女生的魅力值进行从小到大排序
第三步:进行男女魅力值配对比较,如何对应位置的魅力值绝对值<=1,说明配对成功,两个指针++,res++。
如果男生的魅力值>女生,说明这个女生的魅力值太小,无人可以与其匹配,则让女生数组的指针++
反之,男生的魅力值小于女生,与上一步同理,男生数组的指针++
#include<iostream>
#include <algorithm>
using namespace std;
const int N=101;
int n,m;
int i=1,j=1;
int res;
int a[N];
int b[N];
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%d",&b[i]);sort(a+1,a+n+1);sort(b+1,b+m+1);while(i<=n&&j<=m){if(abs(a[i]-b[j])<=1){res++;i++;j++;}else if(a[i]>b[j])j++;else if(a[i]<b[j])i++;}cout<<res;
}
}
Acwing第37场周赛题解相关推荐
- Acwing第 37 场周赛【完结】
目录 4296. 合适数对[签到] 4297. 截断数组[双指针] 4298. 搭档[贪心] 4296. 合适数对[签到] https://www.acwing.com/problem/content ...
- acwing第72场周赛题解
4624. 最小值: 题目链接: 4624. 最小值 - AcWing题库 给定两个整数 a,b,请你计算并输出 a,b,⌊a+b3⌋ 这三个整数中的最小整数.⌊ ⌋ 表示下取整,即忽略小数部分,只取 ...
- Acwing第77场周赛题解
T1:AcWing 4716. 进球 开哈希表存字母数量,一旦数目超过 ,就输出,水题 #include <iostream> #include <cstring> #incl ...
- 【题解】AcWing 第73场周赛题解
A. 数对 题目链接:AcWing 4704. 数对 没啥好说的,题目意思都给你写在脸上了.直接暴力 O ( N 2 ) \mathcal{O}(N^2) O(N2). #include <io ...
- 【题解】AcWing 第71场周赛题解
A. 三个整数 题目链接:AcWing 4621. 三个整数 一眼题,由于保证了一定有解,所以只需要保证 x , y x,y x,y 尽量大, z z z 尽量小即可.即 x x x 取 b b b, ...
- AcWing第 70 场周赛题解
目录 4618. 两个素数 4619. 减法操作 4620. 旅行 4618. 两个素数 暴力枚举判断即可 bool is_primes(int x) {for(int i=2;i<=x/i;i ...
- AcWing第 71 场周赛题解
目录 4621. 三个整数 4622. 整数拆分 4623. 买糖果 4621. 三个整数 按要求枚举 void solve() {int a,b,c,d;cin>>a>>b& ...
- LeetCode第 227 场周赛题解
LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-an ...
- 20201015:力扣第210场周赛题解(上)
力扣第210场周赛题解上 题目 思路与算法 代码实现 写在最后 题目 括号的最大嵌套深度 最大网络秩 思路与算法 第一题典型的栈数据结构求最大栈长的题目 第二题是一个经典的出入度题目,本题更加简单,统 ...
最新文章
- LED是否可以将光能转换成电能?
- C语言中:在头文件中使用static定义变量意味着什么?
- c++新特性11 (6) =default
- Akka Types of dispatchers
- boost::range_reference相关的测试程序
- 搭建discuz论坛
- [转]Hamcrest使用方法实例
- P2680 运输计划(树上差分+lca+二分)
- 增加新分类daily——“每天学了啥?”
- 【渝粤题库】广东开放大学 社交礼仪 形成性考核
- 50个数据可视化最有价值的图表(附完整Python代码,建议收藏
- 管理动物园动物c++_中国动物园行业供需预测及投资潜力分析
- kubernetes资源--RC和RS
- ArcGIS 10.3 AddIN编译旧版本项目问题
- 简易计算器app的制作
- 3个工具助你玩转正则表达式
- Kaggle教程 机器学习中级3 分类变量
- TensorFlow 特征列介绍
- 前端热门工具简直不要太好用了!
- AutoCAD软件盗版