相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列a,他對這個序列產生了濃厚的興趣。他好奇是否存在乙個數k,使得一些數加上k,一些數減去k,一些數不變,使得整個序列中所有的數相等。
其中對於序列中的每個位置上的數字,至多只能執行一次加運算或減運算或是對該位置不進行任何操作。
由於瑞神只會刷b站,所以他把這個問題交給了你!
input輸入第一行是乙個正整數t表示資料組數。
接下來對於每組資料,輸入的第乙個正整數n表示序列a的長度,隨後一行有n個整數,表示序列a。
output輸出共包含t行,每組資料輸出一行。對於每組資料,如果存在這樣的k,輸出"yes",否則輸出「no」。(輸出不包含引號)
sample input251 2 3 4 5
51 2 3 4 5
sample output對於輸入的序列,可能出現如下5種情況:nono
① 序列出現1種數字:顯然存在k。
② 序列出現2種數字:存在k。例如:
輸入:1 1 1 2 2
則k=0.5,前面3個1加上0.5,後面2個2減去0.5,得到 1.5 1.5 1.5 1.5 1.5。
③ 序列出現3種數字n1、n2、n3(n1
< n2
< n3),且n1 + n3 = 2 * n2:存在k。例如:
輸入:1 1 1 2 2 3 3 3 3
則k=1,前面3個1加上1,後面4個3減去1,得到 2 2 2 2 2 2 2 2 2。
④ 序列出現3種數字n1、n2、n3(n1
< n2
< n3),且n1 + n3 != 2 * n2:不存在k。
⑤ 序列出現3種以上數字:不存在k。
#include
#include
#include
using
namespace std;
long
long num[4]
;// num[0]不用
bool use[4]
;// use[0]不用
bool overflow;
int t;
int n;
int cnt;
void
reset()
void
input
(long
long in)
else
overflow =
true
;return;}
void
print()
if(overflow) cout <<
"overflow!"
<< endl;
else cout <<
"not overflow"
<< endl;
}void
printarray()
intmain()
//print();
//printarray();
sort
(num +
1, num + cnt)
;//printarray();
int min =1;
int max = cnt -1;
//cout << max << endl;
bool solve =
false;if
(overflow) solve =
false
;else
if(max <
3) solve =
true
;else
if(max ==
3&& num[1]
+ num[3]
==2* num[2]
) solve =
true
;else solve =
false;if
(solve) cout <<
"yes"
<< endl;
else cout <<
"no"
<< endl;
}return0;
}
程式設計思維(CSP模擬題)B HRZ 學英語
瑞神今年大三了,他在寒假學會了英文的26個字母,所以他很興奮!於是他讓他的朋友tt考考他,tt想到了乙個考瑞神的好問題 給定乙個字串,從裡面尋找 連續的26個大寫字母 並輸出!但是轉念一想,這樣太便宜瑞神了,所以他加大了難度 現在給定乙個字串,字串中包括26個大寫字母和特殊字元 特殊字元 可以代表任...
程式設計思維與實踐 Week4 CSP模擬賽
咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。對於給定的...
Helping the HR 思維模擬題
這道題我一看,那麼長 結果就是乙個模擬題 這道題如果都把他化成秒就很好算了,因為題目有規定輸入的時間不會發生衝突 所以我直接比較秒的大小就行了 主要是題意的理解 1.如果在白班換崗,那麼就是必須在9 30之前到崗,否則就遲到了 並且在到崗後必須值班至少8個小時 2.如果在晚班換崗,那麼就必須在12 ...