校內測 11 27 T2 數字遊戲 二分

2021-10-10 22:27:59 字數 984 閱讀 2032

傳送門

一共有n

nn個數,已知有k

kk對數的和為正數

問最多有多少對數的乘積為正數

因為要使得積為正數的對數盡可能的多,所以我們原本的數應該都是些非零的數

這樣我們設有x

xx個正數,就會有n−x

n-xn−

x個負數

此時積為正數的對數為x∗(

x−1)

2+(n

−x)∗

(n−x

−1)2

\frac+\frac

2x∗(x−

1)​+

2(n−

x)∗(

n−x−

1)​所以顯然我們要使得兩項中的任意乙個盡可能的大,所以我們可以二分x

xx的最大值和最小值,在兩者中取最大值作為答案

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

inline ll read()

while

(c>=

'0'&&c<=

'9')

return s*f;

}ll n=

read()

,k=read()

;ll get

(ll x)

intmain()

l=0;r=n;ll a2=-1

;while

(l<=r)

cout<<

max(a1==-1

?-1:

get(a1)

,a2==-1

?-1:

get(a2));

return0;

}

猜數字遊戲,二分查詢 ,輸密碼遊戲

1.完成猜數字遊戲 首先這個 要先理解他如何猜數字。不可能是在 中寫乙個數,你來猜它吧。所以你得有乙個可以產生隨機數的函式。也就是rand 所以接下來就好寫了。只要通過迴圈比較來告訴它值低了 還是 高了 我是通過函式來實現的,乙個輸出函式,乙個遊戲函式。結合起來。define crt secure ...

猜數字遊戲 二分查詢顯威力

規則就像剛才說的一樣,現在開始猜數字,假設待猜數字為57,讓我們先用之前的猜法試一下,乙個乙個猜,從1開始,這樣猜的話,最少得猜57次,6要是99的話,得猜99次,現在讓我們試一下從中間開始的猜法。從50開始,則猜數過程如下 50 小了 75 大了 63 大了 57 猜對了 從以上過程可以看出,從中...

1 猜數字遊戲 2 二分查詢 3 模擬使用者登入

猜數字遊戲 void eumn void game else if num tem else intmain else if choice 0 else while 1 system pause return0 二分查詢,找到了返回該數字的下標 intbinarysearch int arr,int...