题目链接:http://codeforces.com/contest/879/problem/D

题意:这题题意我反正是看了很久,可能是我的理解能力有点差,就是将一个数组倍增m倍然后将连续的相同的k个删除删到不能再删为止。

题解:这里m有点大肯定不能暴力所以可以考虑两个两个之间相互抵消比如

(1231) (1231) (1231) (1231) (1231)

第一部分的后半和第二部分的前半合并,第二部分后半和第三部分前半合并最后第一部分前半和最后一部分后半合并差不多就是这个意思然后就摸你一下就好

#include <iostream>
#include <cstring>
#include <cstdio>
#include <stack>
using namespace std;
const int M = 1e5 + ;
typedef long long ll;
ll Stack[M][];
int main() {
int n , k , m , x , top = ;
ll ans = ;
cin >> n >> k >> m;
for(int i = ; i < n ; i++) {
cin >> x;
if(!top || Stack[top][] != x) {
Stack[++top][] = x;
Stack[top][] = ;
}
else {
Stack[top][]++;
}
if(Stack[top][] == k) {
Stack[top--][] -= k;
}
}
ll sum = ;
for(int i = ; i <= top ; i++) {
sum += Stack[i][];
}
int sta = , ed = top;
while(sta < ed && Stack[sta][] == Stack[ed][]) {
if((Stack[sta][] + Stack[ed][]) % k == ) {
sta++ , ed--;
}
else {
Stack[sta][] = (Stack[sta][] + Stack[ed][]) % k;
Stack[ed][] = ;
break;
}
}
if(sta < ed) {
for(int i = sta ; i <= ed ; i++) ans += Stack[i][];
ans *= (m - );
ans += sum;
}
else if(sta == ed) {
if(Stack[sta][] * m % k == ) ans = ;
else {
ans = sum + Stack[sta][] * (m - );
ans -= Stack[sta][] * m - Stack[sta][] * m % k;
}
}
cout << ans << endl;
return ;
}

codeforces 879 D. Teams Formation(思维)的更多相关文章

  1. 【Codeforces】879D. Teams Formation 思维+模拟

    题意 给定$n$个数,重复拼接$m$次,相邻$k$个重复的可消除,问最后序列中有多少个数 首先可以发现当$k>=n$时,如果要使$n$个数可以被消除,那么$n$个数必须一样,否则$n$个数不能被 ...

  2. Codeforces Round #443 (Div. 1) B. Teams Formation

    B. Teams Formation link http://codeforces.com/contest/878/problem/B describe This time the Berland T ...

  3. codeforces 478B Random Teams

    codeforces   478B  Random Teams  解题报告 题目链接:cm.hust.edu.cn/vjudge/contest/view.action?cid=88890#probl ...

  4. cf 443 D. Teams Formation](细节模拟题)

    cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...

  5. CodeForces 879D Teams Formation

    题意 将一个长度为\(n\)的数组重复\(m\)遍得到一个长度为\(n \times m\)的新序列,然后消掉新序列中连续\(k\)个相同的元素,不断重复这一过程,求最后剩下的序列的长度 分析 首先可 ...

  6. 443 D. Teams Formation

    http://codeforces.com/contest/879/problem/D This time the Berland Team Olympiad in Informatics is he ...

  7. A. Yellow Cards ( Codeforces Round #585 (Div. 2) 思维水题

    ---恢复内容开始--- output standard output The final match of the Berland Football Cup has been held recent ...

  8. codeforces 478B Random Teams 解题报告

    题目链接:http://codeforces.com/problemset/problem/478/B 题目意思:有 n 个人,需要将这班人分成 m 个 组,每个组至少含有一个人,同一个组里的人两两可 ...

  9. CodeForces - 427A (警察和罪犯 思维题)

    Police Recruits Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

随机推荐

  1. 【译】在 Linux 上不安装 Mono 构建 .NET Framework 类库

    在这篇文章中,我展示了如何在Linux上构建针对.NET Framework版本的.NET项目,而不使用Mono.通用使用微软新发布的 Mocrosoft.NETFramework.Reference ...

  2. pycharm与monkeyrunner测试

      操作命令: 导包: import sysfrom com.android.monkeyrunner import MonkeyRunner,MonkeyDevice  device=MonkeyR ...

  3. PHP编码风格规范

    由于PHP的灵活性,很多人写起代码来也不讲求一个好的代码规范,使得本就灵活的PHP代码看起来很乱,其实PSR规范中的PSR-1和PSR-2已经定义了在PHP编码中的一些规范,只要我们好好遵守这些规范, ...

  4. logging模块 旗舰版

    函数式简单配置 import logging logging.debug('debug message') logging.info('info message') logging.warning(' ...

  5. hexo的环境变量被删除怎么办

    这篇文章主要讲在path这一环境变量被删除的情况下,补上哪些环境变量才可以使hexo重新使用. 前两天配置opencv的时候,不小心将环境变量中"path"这一项中的内容给覆盖掉了 ...

  6. 2019前端面试系列——JS高频手写代码题

    实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...

  7. vue-cli3.0创建项目报npm install --loglevel error 踩坑的那把辛酸泪

    创建项目 vue create vue-pro 然后如下图 一开始以为是npm的问题,卸载了Mac的node ,安装nvm,然后再安装node (可参考: Mac中nvm的安装和使用   https: ...

  8. xcode自动刷新resource下的文件

    修改resource下的lua或者ccbi文件时,xcode并不会察觉到,所以需要手动清理xcode缓存和模拟器缓存,开发效率比较低下. 通过以下步骤可以实现自动刷新resource下的文件,且无需手 ...

  9. Maven安装配置及其插件m2e(Eclipse Indigo 和 MyEclipse8.5)的安装配置

    Maven安装配置及其插件m2e(Eclipse Indigo 和 MyEclipse8.5)的安装配置   系统:Windows7 使用软件: Maven3.0.3 + Eclipse Indigo ...

  10. Linux之各程序安装

    python安装 安装python3.6 安装python前的库环境,非常重要 yum install gcc patch libffi-devel python-devel zlib-devel b ...