Codeforces Round #695 (Div. 2)
A (水题)
题目:
给出\(n\)个面板,每个面板初始时间相同,每过1s面板上数字会加1(数字在\(0\sim9\)循环播放),任意时刻选择一个面板\(x\)使他的时间停止,其他的面板\(y\)会在间隔\(|x-y|\)s以后停止,问从左到右顺序组成的数字序列所对应的十进制数最大值是多少?
解析:
只要最高位最大即可,因此首先需要最高位为9,那么次高位一定得是8,再次高位并不是7,因为可以在次高位为8时停止第二个面板构成989的序列
总结:
- 当\(n=1\)时,只输出9
- 当\(n\ne1\)时,输出\(98\)其余位模十加1即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
int n;
scanf("%d", &n);
if (n == 1)
printf("9\n");
else
{
printf("98");
int t = 8;
for (int i = 2; i < n; ++i)
printf("%d", t = (t + 1) % 10);
printf("\n");
}
}
}
B (暴力)
题目:
给出一个数组\(a\),可以改变一次数组中某一元素的值,问数列\(a\)中最小的极值点个数是多少?
解析:
- 对于改变任意一个数而言,能够影响到的极值点的情况也只有自己或者左右的两个数据,而为了减小极值点数量,必然是使\(a[i]=a[i-1]\mid a[i]=a[i+1]\)两种情况,
- 这样便可以对已经是极值点的数据进行操作,并且暴力检查两种情况下缩减极值点数目的最大值即可
注意:可以对端点值进行复制,避免在遍历过程中对端点进行特判
#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 5;
int dat[maxn];
int cnt;
bool check(int i)
{
return dat[i] > dat[i - 1] && dat[i] > dat[i + 1] || dat[i] < dat[i - 1] && dat[i] < dat[i + 1];
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
cnt = 0;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &dat[i]);
dat[0] = dat[1], dat[n + 1] = dat[n];
int mx = 0;
for (int i = 2; i < n; ++i)
{
if (check(i))
{
++cnt;
int t = dat[i], now = 0, aa = 0;
for (int j = i - 1; j <= i + 1; ++j)
now += check(j);
dat[i] = dat[i - 1];
for (int j = i - 1; j <= i + 1; ++j)
aa += check(j);
mx = max(mx, now - aa);
aa = 0;
dat[i] = dat[i + 1];
for (int j = i - 1; j <= i + 1; ++j)
aa += check(j);
mx = max(mx, now - aa);
dat[i] = t;
}
}
printf("%d\n", cnt - mx);
}
}
C (贪心+思维)
题目:
给出三个数列,每次可以从两个数列中分别挑出两个数 \(a,b\) 并从原数列中删去,并将\(a-b\)放进第一个数列,问最后剩余的一个数最大是多少(其余两个数列为空)?
解析:
两种贪心策略
- 每次选出某一个序列的最小值,用这个最小值减去其他序列的”所有“(保留一个)值,再用保留值减去这个所选的序列中所有的值,最后剩余数的值=其他两个序列的值之和-2*选中序列的值
- 分别选出两个序列中的最小值,分别用各自的最小值减去另一个序列的除最小值以外的其他值,未选中序列的“所有”(保留一个)值被两个最小值中任意一个减去都可以,然后再用保留值减去这两个最小值进行了若干次操作后的结果,最后剩余数的值=除两个选中最小值的和-选中的最小值的和
总结:
\]
注意:要开long long
#include<bits/stdc++.h>
using namespace std;
LL mn[3] = { INF,INF,INF }, sum[3], t;
LL n[3];
int main()
{
scanf("%d%d%d", &n[0], &n[1], &n[2]);
for (int i = 0; i < 3; ++i)
{
while (n[i]--)
{
scanf("%lld", &t);
sum[i] += t;
mn[i] = min(mn[i], t);
}
}
printf("%lld", sum[0] + sum[1] + sum[2] - 2 * min({ mn[0] + mn[1],mn[1] + mn[2],mn[0] + mn[2],sum[0],sum[1],sum[2] }));
}
Codeforces Round #695 (Div. 2)的更多相关文章
- Codeforces Round #695 (Div. 2) C. Three Bags (贪心,思维)
题意:有三个背包,每个背包里都用一些数字,你可以选择某一个背包的数字\(a\),从另外一个背包拿出\(b\)(拿出之后就没有了),然后将\(a\)替换为\(a-b\),你可以进行任意次这样的操作,使得 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
随机推荐
- PyQt(Python+Qt)学习随笔:Qt Designer中QAbstractButton派生按钮部件的shortcut 属性
shortcut 属性保存与按钮关联的快捷键.可以使用shortcut()和setShortcut(QKeySequence)访问和设置该属性. 关于这个属性官网介绍的不多,经老猿实际验证,它与tex ...
- PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的accepted、rejected和helpRequested信号
QDialogButtonBox中可以包含多个pushButton,但QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpReques ...
- PHP代码审计分段讲解(5)
11 sql闭合绕过 源代码为 <?php if($_POST[user] && $_POST[pass]) { $conn = mysql_connect("**** ...
- 【Alpha冲刺阶段】Scrum Meeting Daily5
[Alpha冲刺阶段]Scrum Meeting Daily5 1.会议简述 会议开展时间 2020/5/27 8:30-9:00 PM 会议基本内容摘要 大家讲述了自己的任务完成情况以及遇到的问题 ...
- 【NOI2019】弹跳(KDT优化建图)
Description 平面上有 \(n\) 个点,分布在 \(w \times h\) 的网格上.有 \(m\) 个弹跳装置,由一个六元组描述.第 \(i\) 个装置有参数:\((p_i, t_i, ...
- Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置
Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...
- Docker 安装 Redis 需要注意的地方
Docker 安装 Redis 需要注意的地方 拉取镜像 docker pull redis 可以使用redis:xxx xxx为版本号,不写默认是latest 启动容器 无配置文件无密码: dock ...
- Day10 python高级特性-- 生成器 Generator
列表生成式可以创建列表,但是受内存限制,列表容量时有限的,创建一个巨量元素的列表,不仅占用很大的存储空间,当仅仅访问前几个元素时,后面的绝大多数元素占用的空间都被浪费了. 如果list的元素可以按照算 ...
- Java NIO之Buffer(缓冲区)
Java NIO中的缓存区(Buffer)用于和通道(Channel)进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这 ...
- 蒲公英 · JELLY技术周刊 Vol.34: 芜湖~ Flutter
蒲公英 · JELLY技术周刊 Vol.34 提及跨端,你能想到那些技术?PWA.小程序.Ionic.React Native.Weex--当然也少不了 Flutter,历时 3 年,Flutter ...