CodeForces 518C - Watto and Mechanism(模拟)

原创 2016年08月29日 23:30:22

题意:有n(1 <= n <= 10^5)个应用,每屏有k(1 <= k <= 10^5)个应用,现在有m(1 <= m <= 10^5)个操作,每次操作会使用一个应用(使用时需滑到应用所在的屏),使用后此应用与前边的相邻应用交换位置,退出此应用后会回到初始屏。问这m次操作总的滚动屏幕次数。


模拟即可。


#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<list>
typedef long long ll;
typedef unsigned long long llu;
const int MAXN = 100 + 10;
const int MAXT = 100000 + 10;
const int INF = 0x7f7f7f7f;
const double pi = acos(-1.0);
const double EPS = 1e-6;
using namespace std;

int n, m, k, a[MAXT], loc[MAXT][2];
vector<int> g[MAXT];



int main(){
    memset(loc, -1, sizeof loc);
    scanf("%d%d%d", &n, &m, &k);
    for(int i = 0; i < n; ++i)  scanf("%d", a + i);
    int lur = 0;
    for(int i = 0; i < n; ++i){
        int j;
        for(j = 0; j < k && i + j < n; ++j){
            g[lur].push_back(a[i + j]);
            loc[a[i + j]][0] = lur;
            loc[a[i + j]][1] = j;
        }
        ++lur;
        i = i + j - 1;
    }
    llu ans = 0;
    while(m--){
        scanf("%d", &lur);
        ans += (llu)(loc[lur][0] + 1);
        if(loc[lur][1] == 0){
            if(loc[lur][0]){
                int ll = loc[lur][0];
                int tmp = g[ll - 1][k - 1];
                loc[lur][0] = ll - 1;
                loc[lur][1] = k - 1;
                loc[tmp][0] = ll;
                loc[tmp][1] = 0;
                swap(g[ll - 1][k - 1], g[ll][0]);
            }
        }
        else{
            int r1 = loc[lur][0];
            int r2 = loc[lur][1];
            int tmp = g[r1][r2 - 1];
            loc[lur][1] = r2 - 1;
            loc[tmp][1] = r2;
            swap(g[r1][r2 - 1], g[r1][r2]);
        }
    }
    printf("%I64u\n", ans);
    return 0;
}


相关文章推荐

CodeForces - 518C Anya and Smartphone(链表)

题意: 最近Anya买了一个B卓系统的手机,手机上面有n个应用,对应n个图标。 但是屏幕有限,每个屏幕只能容纳k个图标,现在如果你要寻找第k个屏幕上面的应用, 那么你要执行k-1次滑动...

CodeForces 518B

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=120930#problem/B B - Han Solo and Lazer Gun...
  • xzt1996
  • xzt1996
  • 2016年07月07日 17:13
  • 136

第二周周赛——加油 题解(分别出自HDU5615,HDU5586,codeforces 319B,codeforces 518C,codeforces 548D)

A题: A题题目链接 题目描述: QAQ又遇到数学问题了 TimeLimit:1000MS  MemoryLimit:65536KB 64-bit integer IO format:%I...

Codeforces 514C Watto and Mechanism【字典树+Dfs】好题!

C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes ...

Codeforces Round #291 (Div. 2) C. Watto and Mechanism

Codeforces Round #291 (Div. 2) C. Watto and Mechanism 备注:只有三个字母,弄个三叉树就好了,,用原有的单词构树,在单词终点树的对应位置标记一下;...

C. Watto and Mechanism 字典树 Codeforces Round #291 (Div. 2)

题意:给n个字符串和m次询问,每次询问的字符串如果能够由前面n个字符串中的某一个只改变一个字母得到 输出YES,否则NO。 用字典树解决,渣渣不熟悉字典树,写在这里以后多看看。。。。...

Codeforces Round #291 (Div. 2)---C. Watto and Mechanism

Watto, the owner of a spare parts store, has recently got an order for the mechanism that can proces...

Codeforces Round #291 (Div. 2) -- C. Watto and Mechanism

C. Watto and Mechanism time limit per test 3 seconds memory limit per test 256 megabytes...

【codeforces 514C】Watto and Mechanism(字符串hash)

【题目链接】:http://codeforces.com/contest/514/problem/C【题意】 给你n个字符串; 然后给你m个询问;->m个字符串 对于每一个询问字符串 你需...

Codeforces 514C Watto and Mechanism Trie树 + dfs

题目大意: 现在需要找的字符串S的T的关系为两者长度相同且刚好有1处字符不同 就是对于给定的n个字符串(n 大致思路: 就是将n个字符串插入Trie树暴搜一下就过了.... 给出一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CodeForces 518C - Watto and Mechanism(模拟)
举报原因:
原因补充:

(最多只允许输入30个字)