Find interval
Find interval
比赛题目
比赛题目
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
内存限制:C/C++ 256MB,其他语言 512MB
描述
给你一个数组 a,你可以通过数组a的到一个数组b 其中转换规则是 b[i] = pow(2,a[i]); 现在你是否可以找到4个数 L1,R1,L2,R2,其中L1<=R1 < L2<=R2;问在数组 b 中是否存在区间L1到R1的和等于L2到R2区间的和,如果存在请输出 "YES"否则输出 “NO” ,注意:不加引号输出。
输入描述
第一行输入一个 T(1<=T<=1000)表示T组样例
接下来的T组样例中,第一行输入一个 n(1<=n<=1000)
第二行输入 a[0],a[1]…a[n];(保证每个 2的a[i]次方在长整型范围内)。
输出描述
输出 T 行每行表示一个答案(“YES”or “NO”)。
用例输入 1
2 6 4 3 0 1 2 0 2 2 5
用例输出 1
YES NO
提示
第一个样例中的数组b为[16,8,1,2,4,1] L1选择 1,R1选择 1,L2选择 2 ,R2选择6 因为: 16 = 8+1+2+4+1.
第二组样例 找不出这样的数组。
题目:
观察就知道这个就是让你求2的幂的和,使得他们相等,对于这种,其实我们要使他们相等,必然有一对相等的Bi解,这样使得左右两边相等。,就可以转换为这个数组中有没有两个相同的元素。
AC:
#include<bits/stdc++.h> using namespace std; string str; int main(){ int t; cin>>t; while(t--){ set<int>st; int n; cin>>n; for(int i=0;i<n;i++){ int x; cin>>x; st.insert(x); } if(st.size()==n)cout<<"NO"<<endl; else cout<<"YES"<<endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现