// 签到题,比赛时候写双向链表debug了半天,发现有更好方法,记录一下。

 

Shuffle Card HDU 6707

题意:

  有一 \(n\) 张卡片,编号 \(1~n\) ,给定初始编号排列和 \(m\) 次操作,每次操作将编号为 \(s_i\) 的卡片放到第一张上面。求最后卡片的编号序列。

 

思路:

  直接想法就是模拟,复杂度 \(O(nm)\) ,会T掉。如果采用双向链表储存编号,每次洗牌操作复杂度都是 \(O(1)\) ,总复杂度\(O(m)\),可行。比赛时候写链表少连了一条边调了半天

  双向链表交换两个节点太麻烦了,今天发现可以直接用,输出序列标出上面已拿出的卡片编号即可,复杂度 \(O(n+m)\) 。

 

AC代码1:

 // 栈实现
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 100010; bool vis[maxn];
int arr[maxn];
vector<int> S; int main() {
int n, m;
cin>>n>>m;
for(int i=0;i<n;i++) {
scanf("%d", &arr[i]);
}
for(int i=n-1;i>=0;i--) {
S.push_back(arr[i]);
}
while(m--) {
int card; scanf("%d", &card);
S.push_back(card);
}
int left = n;
while(!S.empty() && left) {
int now = *--S.end();
if(!vis[now]) {
printf("%d ", now);
vis[now] = 1;
--left;
}
S.pop_back();
}
return 0;
}

 

AC代码1:

 // 双向链表实现
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 100010; struct node {
int pre, next;
}cards[maxn];
int head; int arr[maxn]; int main() {
int n, m;
cin>>n>>m;
for(int i=1;i<=n;i++) {
scanf("%d", &arr[i]);
} head = arr[1];
cards[arr[1]].pre = -1;
cards[arr[n]].next = -1;
for(int i=1;i<n;i++) {
cards[arr[i]].next = arr[i+1];
cards[arr[i+1]].pre = arr[i];
} while(m--) {
int c; scanf("%d", &c);
if(c==head) continue; int h = c; // 新的头结点
int pre = cards[c].pre;
int next = cards[c].next; if(pre!=-1)
cards[pre].next = next;
if(next!=-1)
cards[next].pre = pre; cards[c].next = head;
cards[head].pre = c; // 别忘了这一行!!!
cards[c].pre = -1;
head = c; } int p = head;
while(p!=-1) {
printf("%d ", p);
p = cards[p].next;
}
return 0;
}

CCPC 2019 网络赛 1006 Shuffle Card的更多相关文章

  1. CCPC 2019 网络赛 1002 array (权值线段树)

    HDU 6703 array   题意:   给定一个数组 \(a_1,a_2, a_3,...a_n\) ,满足 \(1 \le a[i]\le n\) 且 \(a[i]\) 互不相同.   有两种 ...

  2. CCPC 2019 网络赛 HDU huntian oy (杜教筛)

    1005 huntian oy (HDU 6706) 题意: 令,有T次询问,求 f(n, a, b). 其中 T = 10^4,1 <= n,a,b <= 1e9,保证每次 a,b互质. ...

  3. 大连网络赛 1006 Football Games

    //大连网络赛 1006 // 吐槽:数据比较水.下面代码可以AC // 但是正解好像是:排序后,前i项的和大于等于i*(i-1) #include <bits/stdc++.h> usi ...

  4. 16年大连网络赛 1006 Football Games

    题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?cid=725&pid=1006 Football Games Time ...

  5. 2017ICPC沈阳网络赛 HDU 6205 -- card card card(最大子段和)

    card card card Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. hdu5442(2015长春赛区网络赛1006)后缀数组+KMP /最小表示法?

    题意:给定一个由小写字母组成的长度为 n 的字符串,首尾相连,可以从任意一个字符开始,顺时针或逆时针取这个串(长度为 n),求一个字典序最大的字符串的开始字符位置和顺时针或逆时针.如果有多个字典序最大 ...

  7. Subsequence Count 2017ccpc网络赛 1006 dp+线段树维护矩阵

    Problem Description Given a binary string S[1,...,N] (i.e. a sequence of 0's and 1's), and Q queries ...

  8. 【赛后总结+部分题解】2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛

    赛后总结: T:今天状态一般,甚至有点疲惫.然后12点比赛开始,和队友开始看题,从最后往前面看,发现数学题公式看不懂.然后发现队友已经双开做1001和1006了,我看着1007有人A,开始做1007. ...

  9. HDU 4764 Stone (2013长春网络赛,水博弈)

    Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. CSIC_716_20191128【多态、绑定与非绑定方法、isinstance与issubclass 】

    多态 what: 同一个事物有不同的形态. 多态的目的:在不知道对象具体类型的情况下,统一对象调用方法的规范.(通俗讲,即规定实现同样功能的方法,一定要起同样的名字). 多态的表现形式之一就是继承,先 ...

  2. ES6 简化对象写法

    简化的对象写法 * 省略同名的属性值 * 省略方法的function <!DOCTYPE html> <html lang="en"> <head&g ...

  3. 26.String类(1)

    1. 下面是一个使用equals的例子: 我查看了一下源代码,string类中equals方法的源代码如下: public boolean equals(Object anObject) { if ( ...

  4. C# 与 C/C++ 网络传输字符串解决方案

    { 不管你的数据加没加密,只要有中文,请转16进制后再处理,把16进制再转为GB2312的byte再发送, 接收的话同样 c++ 发送时转16进制再发送,c#16进制转字符串后再转GB2312就可以了 ...

  5. Dubbo从拜师到入坟

    第一个Dubbo程序:Hello world 创建业务接口工程 我们将这个接口单独抽取出来,打成jar包被多个服务锁依赖 创建服务提供者Provider Provider工程的pom文件如下: < ...

  6. pytorch实现kaggle猫狗识别

    参考:https://blog.csdn.net/weixin_37813036/article/details/90718310 kaggle是一个为开发商和数据科学家提供举办机器学习竞赛.托管数据 ...

  7. NX-二次开发删除对象UF_OBJ_delete_object

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_obj.h> UF_initialize ...

  8. Comparison of FastText and Word2Vec

    Comparison of FastText and Word2Vec   Facebook Research open sourced a great project yesterday - fas ...

  9. mac 安装配置使用 mongoldb

    mac 安装配置使用 mongoldb 安装和配置 brew install mongos brew install mongo # 密码就是用户的密码 # 配置数据文件 //如果不配置会出现错误62 ...

  10. AtCoder ABC 128F Frog Jump

    题目链接:https://atcoder.jp/contests/abc128/tasks/abc128_f 题目大意 给定长度为 N 的序列$s_0, s_1, \dots, s_{N-1}$,现在 ...