CF Edu Round 131 简要题解 (ABCD)
A
分类讨论即可 .
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int main()
{
int T, a11, a12, a21, a22; scanf("%d", &T);
while (T--)
{
scanf("%d%d%d%d", &a11, &a12, &a21, &a22);
if (!a11 && !a12 && !a21 && !a22) puts("0");
else if (a11 && a12 && a21 && a22) puts("2");
else puts("1");
} return 0;
}
t 宝那个判 \(a\) 里所有数之和的是真妙 .
B
显然 \(d=2\) 最优,然后模拟即可 .
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int N = 5e5 + 233;
vector<int> g[N];
inline void addedge(int u, int v){g[u].emplace_back(v);}
int n;
bool vis[N];
int main()
{
int T; scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
puts("2");
for (int i=1; i<=n; i++)
{
if (vis[i]) continue;
vis[i] = true;
for (int j=i; j<=n; j*=2) vis[j] = true, printf("%d ", j);
}
puts("");
for (int i=1; i<=n; i++) vis[i] = false;
} return 0;
}
C
二分答案,于是考虑把时间都用满可以做多少工作 check 即可 .
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int N = 5e5 + 233;
int n, m, a[N];
inline bool check(int x)
{
ll ans = 0;
for (int i=1; i<=n; i++) ans += min(x, a[i]) + (x - min(x, a[i])) / 2;
return ans >= m;
}
inline void solve()
{
scanf("%d%d", &n, &m);
for (int i=1, x; i<=m; i++) scanf("%d", &x), ++a[x];
int l = 0, r = 2 * m, ans;
while (l <= r)
{
int mid = (l + r) >> 1;
if (check(mid)){ans = mid; r = mid - 1;}
else l = mid + 1;
}
for (int i=1; i<=n; i++) a[i] = 0;
printf("%d\n", ans);
}
int main()
{
int T; scanf("%d", &T);
while (T--) solve();
return 0;
}
D
找到每个 \(a_i\) 能取的区间 \([l,r]\),于是问题就变成每个区间取一个数使得两两不重复 .
二分图匹配会 TLE on #4
可以贪心,枚举左端点,右端点扔到 priority_queue 里面取最小的选即可 .
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int N = 5e5 + 233;
vector<pii> g[N];
int n;
int main()
{
int T; scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
for (int i=1, x; i<=n; i++)
{
scanf("%d", &x);
int L, R;
if (x == 0){L = i + 1; R = n;}
else {L = i / (x + 1) + 1; R = i / x;}
g[L].emplace_back(make_pair(R, i));
}
priority_queue<pii, vector<pii>, greater<pii> > q;
vector<int> ans(n+5);
for (int i=1; i<=n; i++)
{
for (auto _ : g[i]) q.emplace(_);
auto _ = q.top(); q.pop();
ans[_.second] = i;
}
for (int i=1; i<=n; i++) printf("%d ", ans[i]);
puts("");
for (int i=1; i<=n; i++) g[i].clear();
} return 0;
}
CF Edu Round 131 简要题解 (ABCD)的更多相关文章
- CF Educational Round 78 (Div2)题解报告A~E
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students 依题意模拟即可 #include<bits/stdc++.h> us ...
- 【题解】Comet OJ Round 70 简要题解
[题解]Comet OJ Round 70 简要题解 A 将放在地上的书按照从小到大排序后,问题的本质就变成了合并两个序列使得字典序最小.可以直接模拟归并排序.直接用循环和std::merge实现这个 ...
- [Codeforces Round #431]简要题解
来自FallDream的博客,未经允许, 请勿转载,谢谢. 好久没写cf题解了zzz 代码比较丑不贴了,cf上都可以看 Div2A. 给你一个长度为n(n<=100)的序列 判断是否可以分成奇数 ...
- Codeforces Round#433 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. 我的号自从几个月前姿势水平过低疯狂掉分之后就没动过了 突然想上点分 就打了一场Div1 没想到打到了rank5 一发上橙了,可还行. ...
- Codeforces Round#432 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. Div2A 小判断题 Div2B 小判断题,合法的条件是|AB|=|BC|且三点不共线 Div1A 类比二维.三维空间,可以猜测n太大的时候没 ...
- Codeforces Round #557 (Div. 1) 简要题解
Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...
- CF Round #580(div2)题解报告
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...
- Codeforces Round #258 (Div. 2)[ABCD]
Codeforces Round #258 (Div. 2)[ABCD] ACM 题目地址:Codeforces Round #258 (Div. 2) A - Game With Sticks 题意 ...
- Noip 2014酱油记+简要题解
好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...
随机推荐
- 项目完成小结 - Django3.x版本 - 开发部署小结 (2)
前言 好久没更新博客了,最近依然是在做之前博客说的这个项目:项目完成 - 基于Django3.x版本 - 开发部署小结 这项目因为前期工作出了问题,需求没确定好,导致了现在要做很多麻烦的工作,搞得大家 ...
- VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程
前言 2020 年,CentOS 宣布:计划未来将重心从 CentOS Linux 转移到 CentOS Stream.CentOS 8 的生命周期已于 2021 年 12 月 31 日终止,而 Ce ...
- Spring Boot+微信小程序_保存微信登录者的个人信息
1. 前言 微信小程序开发平台,提供有一类 API,可以让开发者获取到微信登录用户的个人数据.这类 API 统称为开放接口. Tip:微信小程序开发平台,会把微信登录用户的个人信息分为明文数据和敏感数 ...
- nodejs使用 svg-captcha 做验证码及验证
一.需求 使用 nodejs 做后端开发,需要请求验证码,在 github 上看到了 svg-captcha 这个库,发现他是将 text 转 svg 进行返回的,安全性也有保证,不会被识别成文字. ...
- 【单片机】CH32V103C8T6定时器3程序实验
代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...
- WPF|快速添加新手引导功能(支持MVVM)
阅读导航 前言 案例一 案例二 案例三(本文介绍的方式) 如何使用? 控件如何开发的? 总结 1. 前言 案例一 站长分享过 眾尋 大佬的一篇 WPF 简易新手引导 一文,新手引导的效果挺不错的,如下 ...
- 功耗优化之Sensor功耗分析
功耗优化之Sensor功耗分析 一.Sensor功耗问题分类 二.Sensor功耗问题分析方法 SSC子系统引起系统无法进入AOSD问题分析: SSC子系统频繁唤醒AP问题分析方法 SSC子系统的GP ...
- Ubuntu安装python固定版本
一. 安装python3.7 本篇文章使用python3.7安装步骤为例 1.直接使用apt-get安装python3.7 apt-get install python3.7 该方法经常会出现unab ...
- 前端学习 linux —— 第一篇
前端学习 linux - 第一篇 本文主要介绍"linux 发行版本"."cpu 架构"."Linux 目录结构"."vi 和 v ...
- kubernetes集群简单实例搭建
systemctl stop firewalld && systemctl disable firewalldvim /etc/selinux/configSELINUX=disabl ...