《看了受制了》第三十八天,8道题,合计210道题
2023年10月9日
Div.2 Round902 C Joyboard
题目大意
在0
到m
中有多少个数,可以满足以下式子:
...
而且k
个值。
题目理解
我们经过思考后,可以得出以下的条件:
k
大于3后无解k
等于1时,m
只能等于0
k
等于2时,有两种可能
时,取大于n
的值必为3种(n的倍数除外)- 当
时,1 ~ m都可
k
等于3时,有两种可能
时,无解,不可能出3种,最多两种 时,一定是(n + 1 ~ m)且,去掉m
的倍数
代码实现
void solve()
{
int n, m, k;
cin >> n >> m >> k;
if(k == 1) cout << 1 << endl;
else if(k == 2)
{
if(m >= n) cout << n - 1 + (m / n) << endl;
else cout << m << endl;
}else{
if(m < n)
cout << 0 << endl;
else
cout << (m - n) - m / n + 1 << endl;
}
return;
}
Div.2 Round899 B Sets and Unino
题目大意
构造一个,所有的集合并集,小的集合,且这个集合最大。
题目理解
枚举,删除每一个集合元素后,构造出来的集合大大小,取最大值即可
代码实现
const int N = 60;
int cnt[N], a[N][N];
void solve()
{
int n;
cin >> n;
vector<int> vec;
for(int i = 0; i < n; i++)
{
cin >> cnt[i];
for(int j = 0 ; j < cnt[i]; j++)
{
cin >> a[i][j];
vec.push_back(a[i][j]);
}
}
sort(vec.begin(), vec.end());
vec.erase(unique(vec.begin(), vec.end()), vec.end());
int res = 0;
for(int i = 0; i < (int)vec.size(); i++)
{
int t = vec[i];
set<int> tmp;
for(int j = 0; j < n; j++)
{
bool flag = true;
for(int k = 0; k < cnt[j]; k++)
if(a[j][k] == t)
flag = false;
if(flag)
for(int k = 0; k < cnt[j]; k++)
tmp.insert(a[j][k]);
}
res = max(res, (int)tmp.size());
}
cout << res << endl;
return;
}
Div.2 Round899 C CardGame
题目大意
可以拿奇数的牌,和偶数的牌,奇数直接加,偶数不加。问拿牌的最大和。
题目理解
我们其实所有的整数都可以拿。因为奇数位的整数直接拿就行,偶数位的整数,我们可以选择拿掉一个最前面的偶数位,然后把所有的偶数位就变成了奇数位,然后比较一下:
比较,拿偶数位的好,还是把第一位也拿走,这样如果第二位是正数,也可以拿到了
代码实现
void solve()
{
ll res = 0;
ll n;
cin >> n;
vector<ll> vec(n);
for(int i = 0; i < n; i++)
{
cin >> vec[i];
if(vec[i] > 0) res += vec[i];
}
if(n < 2){
cout << res << endl;
return;
}
else if(vec[0] < 0 && vec[1] > 0) res = max(res - vec[1], res + vec[0]);
cout << res << endl;
return;
}
Div.2 Round897 A green_gold_dog, array and permutation
题目大意
给了a
数组,和b
数组,要构建一个c
数组,让它的数量最大。
j
可以从1
到n
中任取。
题目理解
我们可以证明让最小的值减第一大的b,第二小的a减第二大的b。即:
越小的值让他更小。那么就一定会是最优解。
代码实现
const int N = 4e4 + 10;
int b[N];
void solve()
{
int n;
cin >> n;
vector<PII> a(n);
for(int i = 0; i < n; i++){
cin >> a[i].x;
a[i].y = i + 1;
}
sort(a.begin(), a.end());
for(int i = 0; i < n; i++)
b[a[i].y] = n - i;
for(int i = 1; i <= n; i++)
cout << b[i] << " ";
cout << endl;
return;
}
Div.3 Round874 A Musical Puzzle
题目大意
问一个字符串至少需要多少个长度为2的连续的字符串构成.
题目理解
因为字符串是ab
+bc
=abc
那么我们只需要统计,s[i] + s[i + 1]能形成的种类即可
代码实现
void solve()
{
int n;
cin >> n;
string s;
cin >> s;
set<string> st;
for(int i = 0; i < (int)s.size() - 1; i++)
{
string a(1, s[i]);
string b(1, s[i + 1]);
string c = a + b;
st.insert(c);
}
cout << st.size() << endl;
return;
}
Div.3 Round874 B Restore weather
题目大意
给了两组数和k,让后让两两做差,让他们的差不超过k
题目理解
利用刚才的越小的数减去越大的数会越小,那么我们只有减去尽可能小的数才会变化更小。所以我们就小数减小数,大数减大数,就不会超过k
,如果第一个小数减小数都超过k
了,那其他必然超过
代码实现
void solve()
{
int n, k;
cin >> n >> k;
vector<PII> a(n);
vector<int> b(n), c(n);
for(int i = 0; i < n; i++)
{
cin >> a[i].x;
a[i].y = i;
}
sort(a.begin(), a.end());
for(int i = 0; i < n; i++) cin >> b[i];
sort(b.begin(), b.end());
for(int i = 0; i < n; i++)
c[a[i].y] = b[i];
for(int i = 0; i < n; i++)
cout << c[i] << " ";
cout << endl;
return;
}
Div.3 Round874 C Vlad Building Beautiful Array
题目大意
能否用b
构造出一个数组c
,使得c
中所有数都是整数。且全是偶数或,都是奇数。c
可以用
题目理解
如果存在奇数,一定得是最小的,才能把所有数变成奇数
如果不存在奇数,那就都是偶数不用变
代码实现
void solve()
{
int n;
cin >> n;
vector<int> a(n);
int k = INF;
bool flag = false;
for(int i = 0; i < n; i++)
{
cin >> a[i];
if(a[i] % 2)
{
k = min(k, a[i]);
flag = true;
}
}
if(!flag) cout << "YES" << endl;
else{
sort(a.begin(), a.end());
if(a[0] != k) cout << "NO" << endl;
else cout << "YES" << endl;
}
return;
}
Div.3 Round867 A TubeTube Feed
题目大意
他有多个电视频道,每个频道有个持续时间和好玩程度。问,他在t
秒内能看到最好玩的电视是哪个?
他从第一个电视就开始看,每换台需要一秒。
题目理解
我们直接枚举,切换到这个台且这个台的持续时间是否小于等于t
,且好玩度是不是高的,记录答案即可
代码实现
void solve()
{
int n, s;
cin >> n >> s;
vector<PII> q(n);
for(int i = 0; i < n; i++)
cin >> q[i].x;
for(int i = 0; i < n; i++)
cin >> q[i].y;
int val = 0, idx = -1;
for(int i = 0; i < n; i++)
if(q[i].x + i <= s && val < q[i].y)
idx = i + 1, val = q[i].y;
cout << idx << endl;
return;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?