cf 443 D. Teams Formation](细节模拟题)
cf 443 D. Teams Formation(细节模拟题)
题意:
给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证消除的顺序对答案不会造成影响)
\(n <= 10^{5} ,m <= 10^{9} ,k <= 10^{9},a_i <= 10^{5}\)
思路:
直接上题解好了
首先要用栈预处理序列本身,然后考虑处理后的序列
比较头和尾是否能够消除,细节需要处理好。
#include<bits/stdc++.h>
#define P pair<int,int>
#define LL long long
using namespace std;
const int N = 1e5 + 10;
P st[N];
int main(){
int x,n,k,m;
while(cin>>n>>k>>m){
int top = 0;
for(int i = 1;i <= n;i++){
scanf("%d",&x);
if(top && x == st[top].first) st[top].second++;
else st[++top].first = x,st[top].second = 1;
if(st[top].second == k) top--;
}
if(top == 1){
cout<<1LL * st[1].second * m % k<<endl;
continue;
}
int res = 0;
for(int i = 1;i <= top;i++) res += st[i].second;
if(m == 1) {
cout<<res<<endl;
continue;
}
int p = 0;
for(int i = 1;i <= top - i + 1;i++){
if(st[i].first != st[top - i + 1].first || st[i].second + st[top - i + 1].second != k) break;
p = i;
}
if(p >= top - top / 2) { ///超过一半,全消除的情况
if(m % 2 == 0) cout<<0<<endl;
else cout<<res<<endl;
}else{
if(top % 2 == 0 || p != top / 2) {
LL dec = p * k;
if(st[p+1].first == st[top - p].first) dec += st[p+1].second + st[top - p].second - (st[p+1].second + st[top - p].second)%k;
cout<<1LL * m * res - (m - 1) * dec<<endl;
}
else if(p == top / 2){
if(1LL * m * st[p + 1].second % k == 0) cout<<0<<endl;
else {
res = 0;
for(int i = 1;i <= p;i++) res += st[i].second + st[top - i + 1].second;
cout<<res + 1LL * m * st[p + 1].second % k <<endl;
}
}
}
}
return 0;
}
cf 443 D. Teams Formation](细节模拟题)的更多相关文章
- 443 D. Teams Formation
http://codeforces.com/contest/879/problem/D This time the Berland Team Olympiad in Informatics is he ...
- 【Codeforces】879D. Teams Formation 思维+模拟
题意 给定$n$个数,重复拼接$m$次,相邻$k$个重复的可消除,问最后序列中有多少个数 首先可以发现当$k>=n$时,如果要使$n$个数可以被消除,那么$n$个数必须一样,否则$n$个数不能被 ...
- CF 352 D 罗宾汉发钱 模拟题+贪心
D. Robin Hood time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 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 ...
- CF 420B Online Meeting 模拟题
只是贴代码,这种模拟题一定要好好纪念下 TAT #include <cstdio> #include <cstring> #include <algorithm> ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- csu 1312 榜单(模拟题)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec Memory Limit: 128 ...
- NOIP模拟题汇总(加厚版)
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...
- Capture the Flag ZOJ - 3879(模拟题)
In computer security, Capture the Flag (CTF) is a computer security competition. CTF contests are us ...
随机推荐
- unity share current game screen
using UnityEngine; using System.Collections; using UnityEngine.UI; using System.IO; public class Tak ...
- 180620-mysql之数据库导入导出
文章链接:https://liuyueyi.github.io/hexblog/2018/06/20/180620-mysql之数据库导入导出/ mysql之数据库导入导出 实际工作中,需要做一下数据 ...
- python+selenium 环境配置
配置环境: python:3.5 selenium:3.3.0 安装方式:python pip install -u selenium windows: 10 firefox:52 因为firefox ...
- katalon系列四:使用Katalon Studio录制WEB自动化脚本
一.点击图1工具栏中的+号,选Test Case,新建一个用例. 图1 二.接着点图1录制按钮(地球上有个红点图标),打开的Web Recorder中URL输入百度的地址,浏览器选择Chrome,点击 ...
- Unity Lighting - Lighting overview 照明概述
Lighting overview 照明概述 In order to calculate the shading of a 3D object, Unity needs to know the ...
- browsersync 插件
自从发现了这个 browsersync 插件 ... 在也不用每次改一行代码就去手动刷新 HTML 页面了省去了很多繁琐的操作,当有多个显示器的时候,更加的方便,在IDEA上编辑代码之后,点击 com ...
- CryptoZombies学习笔记——Lesson4
第四课主要介绍payable函数相关. chapter1: payable修饰函数 以太坊允许同时调用函数和eth转账.msg.value显示发送到合约的以太币数,ether是内置整型数.如果函数没有 ...
- Ext JS 6学习文档-第6章-高级组件
Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...
- PHP中通过preg_match_all函数获取页面信息并过滤变更为数组存储模式
// 1. 初始化 $ch = curl_init(); // 2. 设置选项 curl_setopt($ch, CURLOPT_URL, "http://test.com/index.js ...
- addeventlistener和attachevent
区别: 1.ie8及以下版本前者无效,只能使用后者: 2,关于第三个参数,如果是true则捕获状态触发,为false;则为冒泡状态触发 何为冒泡,何为捕获? 这就好比捕鱼,冒泡吗,鱼向上吐泡泡,所以当 ...