Smiling & Weeping

                  ----第一次见你的时候,

                    在我的心里已经炸成了烟花,

                    需要用一生来打扫灰炉。

题目链接:Problem - C - Codeforces

题目大意不难,就是把每种情况枚举,但是记录每种String需要想办法,简单的set<string>会MLE不可行,unordered_set<string>也不行,这就需要我吗使用类似于hashcode一般,用pair<int,int>的形式来记录每种不同的情况,题目解析在代码里:

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int t , n , m;
4 int main()
5 {
6 scanf("%d",&t);
7 while(t--)
8 {
9 scanf("%d%d",&n,&m);
10 vector<int> lf(n+10) , rg(n+10);
11 string s;
12 cin >> s;
13 lf[0] = -1; //当s[0]=='1'的时候赋值-1,s[0]=='0'的时候赋值0,便于区分
14 for(int i = 0; i < n; i++)
15 {
16 if(i > 0) lf[i] = lf[i-1];
17 if(s[i] == '0') lf[i] = i;
18 }
19 rg[n-1] = n; //当s[n-1]=='1'时赋值n-1,s[n-1]=='0'的时候赋值n
20 for(int i = n-1; i >= 0; i--)
21 {
22 if(i < n-1) rg[i] = rg[i+1];
23 if(s[i] == '1') rg[i] = i;
24 }
25 // 如果不区分,这是两种不同的情况,比如:01101001011 , 11101001010就无法区分rg出现错误,lf[0]根本没区别
26 // 如果使用set<string> p必会MLE,ε=(´ο`*)))唉,数据结构好用,但是占用空间太大了
27 set<pair<int , int> > p;
28 while(m--)
29 {
30 int a , b;
31 scanf("%d%d",&a,&b);
32 if(a > b) swap(a,b); //不要问我从哪里得到的教训[○・`Д´・ ○]
33 int ll = rg[a-1] , rr = lf[b-1]; // 计算左端点标记1的历史索引,再求右端点0的历史索引
34 if(ll > rr)
35 {
36 p.insert(make_pair(-1,-1));
37 }
38 else
39 p.insert(make_pair(ll , rr));
40 }
41 cout << p.size() << endl;
42 }
43 return 0;
44 }

文章到此结束,我们下次再见,ヾ( ̄▽ ̄)Bye~Bye~

Binary String Copying的更多相关文章

  1. Binary String Matching

    问题 B: Binary String Matching 时间限制: 3 Sec  内存限制: 128 MB提交: 4  解决: 2[提交][状态][讨论版] 题目描述 Given two strin ...

  2. NYOJ之Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述     Given two strings A and B, whose a ...

  3. ACM Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  4. Binary String Matching(kmp+str)

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  5. encode_json 会对给定的Perl的数据结构转换为一个UTF-8 encoded, binary string.

    use JSON qw/encode_json decode_json/ ; use Encode; my $data = [ { 'name' => 'Ken' , 'age' => 1 ...

  6. perl encode_json 会产生 UTF-8 (binary) string decode_json 需要一个 UTF-8 (binary) string

    encode_json $json_text = encode_json $perl_scalar Converts the given Perl data structure to a UTF-8 ...

  7. NYOJ 5 Binary String Matching

    Binary String Matching 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Given two strings A and B, whose alp ...

  8. [LeetCode] Special Binary String 特殊的二进制字符串

    Special binary strings are binary strings with the following two properties: The number of 0's is eq ...

  9. [Swift]LeetCode761. 特殊的二进制序列 | Special Binary String

    Special binary strings are binary strings with the following two properties: The number of 0's is eq ...

  10. [Swift]LeetCode1016. 子串能表示从 1 到 N 数字的二进制串 | Binary String With Substrings Representing 1 To N

    Given a binary string S (a string consisting only of '0' and '1's) and a positive integer N, return ...

随机推荐

  1. 云服务器挂载easyconnect

    参考:easyconnect命令版地址 https://github.com/Hagb/docker-easyconnect 前提条件: 云服务器(以阿里云服务器 Centos7.6 为例) 用途: ...

  2. Python潮流周刊#5:并发一百万个任务要用多少内存?

    你好,我是猫哥.这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 博客原文:https://python ...

  3. 如何在2023年开启React项目

    在这里,我想给你一个新的React项目入门的简要概述.我想反思一下优点和缺点,反思一下作为一个开发者所需要的技术水平,反思一下作为一个React开发者,每个启动项目都能为你提供哪些功能.最后,你将了解 ...

  4. go 常用命令总结

    转载请注明出处: go build:编译包和依赖项,生成可执行文件.命令用于编译包和依赖项,生成可执行文件.当对Go程序进行修改后,需要使用go build命令重新编译程序,以生成新的可执行文件.该命 ...

  5. CANoe_系统变量的创建过程

    在Canoe中创建系统变量,可以用于定义和管理与CAN网络通信相关的参数和配置.遵循以下步骤: 1.打开Canoe 启动Canoe软件. 2.打开项目 在Canoe的菜单栏中,选择"File ...

  6. KeilMDK制作FlashDriver

    一.前言 ①在ECU OTA 程序升级过程中,需要执行一段比较特殊的代码,这段代码实现对自身flash的擦除与写入,又称flash driver:②为了安全的考虑,会尽可能的避免在代码中固化有对fla ...

  7. 浅聊一下 C#程序的 内存映射文件 玩法

    一:背景 1. 讲故事 前段时间训练营里有朋友问 内存映射文件 是怎么玩的?说实话这东西理论我相信很多朋友都知道,就是将文件映射到进程的虚拟地址,说起来很容易,那如何让大家眼见为实呢?可能会难倒很多人 ...

  8. 整理spring-web里支持的文件以及对应的Content-Type

    前言 最近在弄文件上传.下载.在线预览时经常需要设置请求标头或者响应标头的Content-Type 属性.所以研究了一下spring支持哪些Content-Type,通过研究MediaTypeFact ...

  9. 如何通过数据warehouse更好地支持团队管理

    目录 引言 数据仓库是企业进行数据分析和决策的重要工具之一,能够帮助企业快速.准确地存储.管理和分析海量数据.但是,由于数据仓库系统的复杂性和广泛应用,如何通过数据 warehouse 更好地支持团队 ...

  10. SQL Sever 基础语法(增)

    SQL Sever  插入(Insert)基础语法详解 在SQL中,向表中插入数据是最基础的,任何对数据处理的基础就是数据库有数据,对于SQL而言,向表中插入数据有多种方法,本文列举3种: (一) 标 ...