POJ-2887(块状链表)
来源:互联网 发布:linux编程实践教程 编辑:程序博客网 时间:2024/05/18 21:43
题目:http://poj.org/problem?id=2887
我的块状链表第一题,调了好久~~~~(>_<)~~~~ ,好在从思路到编码到调试都是自己搞的
#include <cstdio>#include <cstring>#define MAX_LEN6000#define HALF_LEN3000#define MAX_COUNT1000struct Node{char str[MAX_LEN];size_t len;Node* next;} node[MAX_COUNT] = {0};size_t nex = 0;inline Node* newNode(){return node + nex++;}struct BigString{Node* head;BigString(const char* s, size_t n){head = newNode();if(n <= HALF_LEN){memcpy(head->str, s, n);head->len = n;return;}memcpy(head->str, s, HALF_LEN);head->len = HALF_LEN;Node* p = head;size_t i = HALF_LEN;for(; i + HALF_LEN < n; i += HALF_LEN){p->next = newNode();memcpy(p->next->str, s + i, HALF_LEN);p->next->len = HALF_LEN;p = p->next;}p->next = newNode();memcpy(p->next->str, s + i, n - i);p->next->len = n - i;}void insert(Node* p, char ch, size_t pos){memmove(p->str + pos + 1, p->str + pos, p->len - pos);p->str[pos] = ch;++p->len;if(p->len < MAX_LEN) return;Node* q = p->next;p->next = newNode();memcpy(p->next->str, p->str + HALF_LEN, HALF_LEN);p->next->len = HALF_LEN;p->next->next = q;p->len = HALF_LEN;}void insert(char ch, size_t pos){Node* p = head, *q;size_t len = 0;while(p && len + p->len <= pos){len += p->len;q = p;p = p->next;}if(!p){//append ch at last nodeinsert(q, ch, q->len);}else{//insert ch at pos - leninsert(p, ch, pos - len);}}char operator[](size_t pos)const{Node* p = head;size_t len = 0;while(len + p->len <= pos){len += p->len;p = p->next;}return p->str[pos - len];}};char s[1000005];int main(){gets(s);BigString bs(s, strlen(s));int n, i;for(scanf("%d", &n); n--; ){scanf("%s", s);if(s[0] == 'Q'){scanf("%d", &i);putchar(bs[i - 1]);putchar('\n');}else{scanf("%s%d", s, &i);bs.insert(s[0], i - 1);}}return 0;}
0 0
- POJ-2887(块状链表)
- poj 2887 big string (块状链表)
- [POJ 2887] Big String [块状链表]
- 【POJ 2887】Big String 块状链表
- POJ 2887Big String(块状链表)
- poj 2887 Big String 块状链表
- POJ 2887 Big String 块状链表
- 【POJ 2887】Big String(块状数组)
- poj 2887 块状数组
- 初识块状数组/块状链表(讲解+ 例题)
- 块状链表(附NOI 2003 Editor,POJ 2131 Key Insertion)
- [POJ 2104] K-th Number [块状链表]
- [BZOJ1507][NOI2003]Editor(块状链表)
- 块状链表(分块)2016.10.3
- [BZOJ3337]ORZJRY I(块状链表)
- poj3580:SuperMemo(块状链表/Splay)
- 块状链表
- 块状链表 poj2887
- Socket通讯
- Webkit IDL的各种自定义接口
- 【BZOJ 1257】 [CQOI2007]余数之和sum
- 构建ARM GCC工具链(更新版)
- KMP实现
- POJ-2887(块状链表)
- centos 7 挂载NTFS硬盘
- 【BZOJ 1084】 [SCOI2005]最大子矩阵
- A+B Problem III
- 轻松搭建hadoop-1.2.1集群--快速配置SSH免密码登陆
- 矩阵链乘(Matrix Chain Multiplication)
- 组合博弈(NIM博弈和巴什博奕组合) hdu 1851
- import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包
- hdu 3911 Black And White 线段树区间合并