牛客小白月赛7
github博客地址
比赛链接
A. 送分题
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin >> n;
if(n < 20180001)
cout << n + 2017 << endl;
else
cout << 20182017 << endl;
return 0;
}
C. 谁是神射手
思路: 列出前几次概率: 1. a: ,b: ; 2. a : , b:
比较 两边概率大小时,不管是第几层,都会约成
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (100 * a > (100 - a) * b)
cout << "MWH" << endl;
else if (100 * a < (100 - a) * b)
cout << "CSL" << endl;
else
cout << "equal" << endl;
return 0;
}
E. Applese的超能力
硬币个数 n , m 个硬币合并一次
n == 1
,直接yes
如果
n != 1
且m == 1
永远合并不完普通情况,先从
n
个中取出1
枚,从n - 1
个中取出m - 1
枚,总共取了m
枚。 然后把合成好的一枚硬币还回去,剩下n - m + 1
枚,重复上面的操作,先去1
枚,再取m - 1
枚 …… ,可以发现,如果n - 1
枚里 正好有整数个m - 1
,就可以一直和独立的那一枚合并,直到1
枚。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
ll n, m;
cin >> n >> m;
if (n == 1)
cout << "Yes" << endl;
else if (m == 1)
cout << "No" << endl;
else if ((n - 1) % (m - 1) == 0)
cout << "Yes" << endl;
else
cout << "No" << endl;
return 0;
}
F. BFS
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
for (auto& i : s)
i = toupper(i);
int item;
if ((item = s.find("BOB")) != s.npos)
cout << item << endl;
else
cout << -1 << endl;
return 0;
}
G. CSL分苹果
无脑背包。 先算出总质量,然后除以 2
,这就是第一个人的背包上限,然后求最优解, 总质量减去这个数,就是另一人的
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
int a[102] = {0}, sum = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
sum += a[i];
}
int tmp = sum;
sum /= 2;
int ans[10002] = {0};
for (int i = 0; i < n; i++)
for (int j = sum; j >= a[i]; j--)
ans[j] = max(ans[j], ans[j - a[i]] + a[i]);
cout << ans[sum] << ' ' << tmp - ans[sum] << endl;
return 0;
}
I. 新建 Microsoft Office Word 文档
编号放
set
里新建时,取
set 首
并从set
中删除编号删除时,向
set
中 插入编号,若set.size()
增大了,说明之前没有这个号,删除成功。反之,失败
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, id;
string s;
cin >> n;
set<int> st;
for (int i = 1; i <= n; i++)
st.insert(i);
while (n--)
{
cin >> s;
if (s == "New")
{
cout << *st.begin() << endl;
st.erase(st.begin());
}
else
{
cin >> id;
int size = st.size();
st.insert(id);
if (st.size() == size)
cout << "Failed" << endl;
else
cout << "Successful" << endl;
}
}
return 0;
}