Problem - A - Codeforces

暴力枚举 就可以;

#include <bits/stdc++.h>
#define int long long
using namespace std;
vector<int>a;
int n;
signed main()
{
int _;
cin >> _;
while(_ --)
{
a.clear();
cin >> n;
int p = 1 , q = 1e9; while(n --)
{
int x , k;
cin >> x >> k; if(x == 1) p = max(p , k);
else if(x == 2) q = min(q , k);
else a.push_back(k);
}
int num = 0;
for(int i = 0 ; i < a.size() ; i ++)
if(a[i] <= q && a[i] >= p) num ++;
if(q < p) cout << 0 << endl;
else cout << q - p + 1 - num << endl; } return 0;
}

Problem - B - Codeforces

对于这道题,因为鲍勃需要将数组总和变得最小,所以他一定会用尽每次数次将最大的数几个数乘上-1,而爱丽丝需要将数组的总和变得最大,所以他可以进行删除操作,来防止 鲍勃将大数乘上-1从而使数组总和变小,所以我们可以使用前缀的方法,来进行判断;

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
#define int long long
int a[N];
int p[N]; void solve()
{
int n , k , x;
cin >> n >> k >> x; for(int i = 1 ; i <= n ; i ++) cin >> a[i]; sort(a + 1 , a + 1 + n); //进行排序; for(int i = 1; i <= n ; i ++) p[i] = p[i - 1] + a[i]; int res = -2e9; for(int i = 0 ; i <= k ; i ++) //枚举所删的个数
{
res = max(res , p[max(n - i - x ,(LL)0)] - (p[n - i] - p[max(n - x - i, (LL)0)]));
}
cout << res << endl;
} signed main()
{
int _;
cin >> _; while(_ --)
{
solve();
} return 0;
}

Problem - C - Codeforces

​ 这一题,用到数学的知识,我们发现 每一段 必须均匀分割,那么也就是说 这个分割的长度k必须是数组长度n的因数;这是第一;然后我们需要 让每一段的数 对k取模之后 与 后一段 的同一位置的数 对k取模之后的余数 要想等,也就是说

\[\{x_1+...+x_{k}\} \ + \ \{x_{k + 1}+...+x_{2k}\}\ + \ \{x_{n-k + 1} + ...+x_{n}\}
\]

按照上面所说就是要保证

\[x_1\ \equiv\ x_{k+1}\ (mod\ k)
\]
\[x_2\ \equiv\ x_{k+2}\ (mod\ k)
\]
\[x_k\ \equiv\ x_{2k}\ (mod\ k)
\]

这只是拿两段来举例,对于每一段来说 都是这样,让每一段相同位置的数取模k余数相同

根据这个同余公式移向,我们可以得出:$ |x-x_{k+1}|\equiv 0 \ (mod\ k) $

如果k是|x_1-x_{k+1}|的因数, 那么x和x_{k+1}一定同余k\

所以当k为|x_1-x_{k+1}|的因数时,可以满足这个式子,若k又是|x_2-x_{k+2}|的因数,就满足上面 两个式子\

所以如果 k是 \(|x_1−x_{1+k}| , |x_2−x_{2+k}| ,..., |x_{n-k}−x_{n}|\)的因数,则满足所有条件:

所以k就为\(gcd(x_1−x_{1+k} , |x_2−x_{2+k}| ,..., |x_{n-k}−x_{n}|)\)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
#define int long long
int a[N];
int n; void init()
{
for(int i = 1 ; i <= n ; i ++) a[i] = 0;
} void solve()
{ int n;
cin >> n; init(); int ans = 0; for(int i = 1 ; i <= n ; i ++) cin >> a[i]; for(int k = 1 ; k <= n ; k ++) //枚举因数
{
if(n % k != 0) continue;
else //如果可以被n整除
{
int res = 0;
for(int i = 1 ; i + k <= n ; i ++)//从x1开始枚举一直枚举到第x_n-k
{
res = __gcd(res , abs(a[i + k] - a[i])); //公约数;
} if(res != 1) ans ++;//找到公约数,如果不是1的话就会得分
}
} cout << ans << endl;
} signed main()
{
int _;
cin >> _; while(_ --)
{
solve();
} return 0;
}

Codeforces round 919 (div2)的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  3. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. Codeforces Round #359 div2

    Problem_A(CodeForces 686A): 题意: \[ 有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里 ...

  9. Codeforces Round #360 div2

    Problem_A(CodeForces 688A): 题意: 有d天, n个人.如果这n个人同时出现, 那么你就赢不了他们所有的人, 除此之外, 你可以赢他们所有到场的人. 到场人数为0也算赢. 现 ...

  10. Codeforces Round#310 div2

    C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...

随机推荐

  1. openGauss内核分析:SQL by pass & 经典执行器

    摘要:执行引擎一般负责查询的执行,执行引擎在SQL执行栈中起到接收优化器生成的执行计划Plan.并对通过存储引擎提供的数据读写接口,实现对数据进行计算得到查询的结果集. 本文分享自华为云社区<o ...

  2. DataLeap的全链路智能监控报警实践(三): 系统实现

    系统实现 整体架构 基线管理模块:负责基线创建.更新.删除等操作,管理基线元信息,包括保障任务,承诺时间,余量及报警配置等): 基线实例生成:系统每天定时触发生成基线实例,生成实例的同时根据保障任务, ...

  3. Solon Aop 特色开发(4)Bean 扫描的三种方式

    Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...

  4. Axure 选中同意复选框后,改变登录按钮的颜色

    登录时,当选中 同意用户协议后 复选框,登录按钮变颜色 登录按钮 设置登录按钮的选中颜色 同意协议 当同意复选框被选中后,设置 登录 的选中状态为 真,这时候触发登录按钮改变颜色, 取消勾选后,登录按 ...

  5. Mac下安装mysqlclient出错解决「mysql_config not found」

    错误信息如下图 解决方法 安装mysql-client brew install mysql-client 设置环境变量 export PATH=$PATH:/usr/local/Cellar/mys ...

  6. 注册中心/配置管理 —— SpringCloud Consul

    Consul 概述 Consul 是一个可以提供服务发现,健康检查,多数据中心,key/Value 存储的分布式服务框架,用于实现分布式系统的发现与配置.Cousul 使用 Go 语言实现,因此天然具 ...

  7. 3-3 vector 和 迭代器

    1 vector 容器vector可以理解为变长数组,它里面放的是相同类型的元素. vector<int> vec={1,2,3,4};//拷贝构造 vector<string> ...

  8. 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了,因为数据库自增 ID 只适用于单机环境,但如果是分布式环境,是将数据库进行分库.分表或数据库分片等操作时,那么数据库自增 ID 就会生成重复 ID,从 ...

  9. CPP-移动语义

    "Move semantics allows us to optimize the copying of objects, where we no longer need the value ...

  10. JavaScript 基础 - Day01

    了解变量.数据类型.运算符等基础概念,能够实现数据类型的转换,结合四则运算体会如何编程. 体会现实世界中的事物与计算机的关系 理解什么是数据并知道数据的分类 理解变量存储数据的"容器&quo ...