牛客IOI周賽20 普及組

2022-05-20 16:40:35 字數 2059 閱讀 5246

牛客的簽到題,最暴力的做法就是把數每個因子羅列出來,但是這樣只有60的暴力分,我們從題目的資料可以看到

資料範圍是1e7的,在學習素數的時候我們知道乙個因子就能推出另乙個因子,所以我們沒必要從1判斷到n-1

直接i*i <= n就能找到所有的因子,但是注意像16這樣的數,當我們的i為4的時候,這個4的因子只能算一次

解題思路:這個題是乙個模擬題,我們先記錄牛牛的操作,然後在記錄的時候每次遇到z,就把上乙個操作刪掉

最後直接按照沒有z的操作模擬,然後輸出最終的座標,注意這裡的z,可能z的上乙個位置沒有任何操作,用棧的同學請注意空棧的情況

code:

#includeusing namespace std;

int main()

else

} int x,y;

x = y = 0;

for(int i = 0; i < v.size(); ++i) else if(v[i] == 'a') else if(v[i] == 's') else if(v[i] == 'd')

} cout << x << " " << y << endl;//最後輸出x和y

解題思路:牛牛要想分數拿的高,那麼就要盡可能的不輸,我們可以計算牛牛最多能贏的場數,然後再把贏的場數從遊戲場數剪掉

然後再計算平局可能的場數就是最高的分數,然後……然後就ac了呀

code:

#includeusing namespace std;

int main()

return r;

}int main()

long long sum = 0;

sort(a,a+n);

for(int i = 0;i < n; ++i)

printf("%lld\n",sum);

return 0;

}

當然這題還能用雙指標做,但是不知道為什麼我的雙指標寫出來炸了,然後寫了個'單指標'?hh如果但看這個左邊界或者有邊界的話,我們可以直接寫出乙個0(n)的操作,然後我們會發現這樣寫的話會有值的重疊所以我們直接把考慮右邊界的情況減去左邊界的情況就ok啦,不懂的話可以手算一下哦code

#include#include#includeusing namespace std;

const int n = 100005;

int a[n];

int main()

sort(a,a+n);

int l = 0, r = 0;

long long sum = 0;

for(int i = 0, j = n - 1 ;i < n; ++i)

for(int i = 0, j = n - 1 ;i < n; ++i)

printf("%lld\n",sum);

}

第一次ak,++rp;

牛客IOI周賽20 普及組(題解)

b 移動撤銷 c 石頭剪刀布 d 夾縫中求和 題目分析 首先,完全數是可以打表的,完全數就是那麼幾個直接打表判斷,剩下的就是過剩數和不足數,那麼有乙個定理那就是奇數是不足數,偶數是過剩數,但是有乙個特例,那就是2835,他雖然是乙個奇數但是卻是過剩數,特殊判斷一下就行 include include...

牛客IOI周賽22 普及組

1.戰爭尾聲 題目鏈結 題解 因為資料量非常小,直接遍歷每乙個點即可 include include include using namespace std typedef pair int,int pii double getlength double x,double y,pii v intma...

牛客IOI周賽22 普及組

暴力列舉 author sunlakewalk include include include include include include include include include include include include include include include includ...