天天看點

2021門檻題(I J K)題解

頒獎環節:

2021門檻題(I J K)題解

恭喜以上兩位種子選手獲得I J K三題的一血!

———————————————————題解分界線————————————————————

I題:

題意:給定最終時刻,通過計算中途花費時間計算開始時刻。

題解:通過路程和步行速度計算出中途花費時間,注意可能會提前一天出發以及時間格式。

代碼:

int main()
{
    int s, v;
    cin >> s >> v;
    int t = s /v;
    if(s %v != 0) t ++;//不能整除,向上取整,相當于ceil函數
    t += 30;
    if(t <= 9*60) t = 9*60-t;
    else
    {
        t -= 9*60;
        t = 24*60-t;
    }
    printf("%02d:%02d", t /60, t %60);
    return 0;
}
           

J題:

題意:計算序列中非最小值的個數。

題解:開個cnt變量統計非最小值數量,然後進行判斷輸出。

代碼:

const int N = 1e6+10;
int a[N];
int main()
{
	int n;
	int MIN = N;//初始化最小值
	scanf("%d", &n);
	for(int i = 0;i < n;i ++)
	{
		scanf("%d", a+i);
		if(MIN > a[i]) MIN = a[i];
	}
	int cnt = 0;
	for(int i = 0;i < n;i ++)
		if(a[i] > MIN) cnt ++;
	if(cnt > n /2) cout << "YES";
	else cout << "NO";
	return 0;
}
           

K題:

題意:給定藍球和紅球數量以及每個籃子中兩種球的最大內插補點,判斷是否滿足要求。

題解:将數量較小的球看作籃子,将另一種球放入籃子中且至少放一個。放完後判斷每個籃子的數量差是否滿足不大于最大內插補點。

代碼:

#define ll long long
int main()
{
    ll n, m, d;
    cin >> n >> m >> d;
    ll MIN = min(n, m);
    ll a = abs(n - m);
    if(MIN*d >= a) cout << "YES";
    else cout << "NO";
    return 0;
}
           

2021/8/2