站长工具综合权重查询,上海企业建站提供商,网站优化策略分析,网络推广专员是干嘛的题目解析 通过解析题目我们发现有以下这些情况#xff1a;
#xff08;1#xff09;输出0#xff1a; 数组a和数组b中有一个值超过了k。#xff08;包括所有已知的a[i]的值#xff0c;还有所有已知的b[i]和未知的b[i]#xff09; 有两种不同的b[i] ! -1的{a[i], b[i]}数… 题目解析 通过解析题目我们发现有以下这些情况
1输出0 数组a和数组b中有一个值超过了k。包括所有已知的a[i]的值还有所有已知的b[i]和未知的b[i] 有两种不同的b[i] ! -1的{a[i], b[i]}数对。(利用maxn 和minn来判断其中数对相不相同)
2输出1 只有一种{a[i], b[i]}数对且不满足上述输出0的情况。 有多个{a[i], b[i]}数对但是他们的和都相同。
(3)输出其他值b[i]全部都是-1 利用数学规律输出的值只和a数组中的最大值maxa和最小值mina以及k值有关。种类数为k - (maxa - mina) 1;
代码
#includebits/stdc.h
using namespace std;
#define ll long long
void go()
{int n, k, t 0;cin n k;vectorll a, b;for(int i 0; i n; i){cin t;a.push_back(t);}for(int i 0; i n; i){cin t;b.push_back(t);}//输出0的情况1有一个值超过了k2b[i] ! -1 中有两种情况不相同ll sum 0, maxn -1, minn 1e9, maxa -1, mina 1e9;for(int i 0; i n; i){mina min(mina, a[i]);maxa max(maxa, a[i]);if(a[i] k){cout 0 \n;return;}if(b[i] ! -1){sum;maxn max(maxn, a[i] b[i]);minn min(minn, a[i] b[i]); }if(maxn ! minn maxn ! -1 minn ! 1e9){cout 0 \n;return;}}for(int i 0; i n; i){if((a[i] maxn maxn ! -1) || (maxn - a[i] k)){//a与b中有一个是大于k的情况cout 0 \n;return;}}if(sum 1)cout 1 \n;else{if(maxn minn)cout 1 \n;else cout k - (maxa - mina) 1 endl;}//输出1只有一种b[i] ! -1//输出多种的 b[i] 全部都是-1 输出k到maxa - mina}
int main()
{int t;cin t;while(t--){go();} return 0;
}