http://codeforces.com/contest/962/problem/E

E. Byteland, Berland and Disputed Cities
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

The cities of Byteland and Berland are located on the axis OxOx. In addition, on this axis there are also disputed cities, which belong to each of the countries in their opinion. Thus, on the line OxOx there are three types of cities:

  • the cities of Byteland,
  • the cities of Berland,
  • disputed cities.

Recently, the project BNET has been launched — a computer network of a new generation. Now the task of the both countries is to connect the cities so that the network of this country is connected.

The countries agreed to connect the pairs of cities with BNET cables in such a way that:

  • If you look at the only cities of Byteland and the disputed cities, then in the resulting set of cities, any city should be reachable from any other one by one or more cables,
  • If you look at the only cities of Berland and the disputed cities, then in the resulting set of cities, any city should be reachable from any other one by one or more cables.

Thus, it is necessary to choose a set of pairs of cities to connect by cables in such a way that both conditions are satisfied simultaneously. Cables allow bi-directional data transfer. Each cable connects exactly two distinct cities.

The cost of laying a cable from one city to another is equal to the distance between them. Find the minimum total cost of laying a set of cables so that two subsets of cities (Byteland and disputed cities, Berland and disputed cities) are connected.

Each city is a point on the line OxOx. It is technically possible to connect the cities aa and bb with a cable so that the city cc (a<c<ba<c<b) is not connected to this cable, where aa, bb and cc are simultaneously coordinates of the cities aa, bb and cc.

Input

The first line contains a single integer nn (2≤n≤2⋅1052≤n≤2⋅105) — the number of cities.

The following nn lines contains an integer xixi and the letter cici (−109≤xi≤109−109≤xi≤109) — the coordinate of the city and its type. If the city belongs to Byteland, cici equals to 'B'. If the city belongs to Berland, cici equals to «R». If the city is disputed, cici equals to 'P'.

All cities have distinct coordinates. Guaranteed, that the cities are given in the increasing order of their coordinates.

Output

Print the minimal total length of such set of cables, that if we delete all Berland cities (cici='R'), it will be possible to find a way from any remaining city to any other remaining city, moving only by cables. Similarly, if we delete all Byteland cities (cici='B'), it will be possible to find a way from any remaining city to any other remaining city, moving only by cables.

Examples
input
Copy
4
-5 R
0 P
3 P
7 B
output
Copy
12
input
Copy
5
10 R
14 B
16 B
21 R
32 R
output
Copy
24
Note

In the first example, you should connect the first city with the second, the second with the third, and the third with the fourth. The total length of the cables will be 5+3+4=125+3+4=12.

In the second example there are no disputed cities, so you need to connect all the neighboring cities of Byteland and all the neighboring cities of Berland. The cities of Berland have coordinates 10,21,3210,21,32, so to connect them you need two cables of length 1111 and 1111. The cities of Byteland have coordinates 1414 and 1616, so to connect them you need one cable of length 22. Thus, the total length of all cables is 11+11+2=2411+11+2=24.

思路:

第一感觉,就是把所有的R与P链接起来,然后在把B连接起来,遇到p时,p与p之间的距离就不算了,可是如果是PRP这种还要不要算呢?看来我还需要再读一遍题。

嗯,读题完毕!顺便说一句,上一题,也就是D题,是个傻逼题,只不过我这个傻逼比它更傻逼,所以没有做出来。对于这题,PRP这种结构,连接B时,P与P还是要再连接一次;感觉应该不是很难写,两个遍历时间也就是2*n,也就是4*1e5,应该跑的完(题目的2s让我有些害怕),数据大小达到了1e9,应该是要long long的,结果我想用unsigned long long来存,好吧,就是它了!

#include<iostream>
using namespace std;
struct node
{
int x;
char p;
}a[200086];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].x>>a[i].p;
}
unsigned long long ans=0;
for(int i=1;i<n;i++){
if(a[i].p==a[i-1].p&&(a[i].p=='R'||a[i].p=='P')){ans+=(a[i].x-a[i-1].x);}
else if(a[i].p=='P'&&a[i-1].p=='R'){ans+=(a[i].x-a[i-1].x);}
else if(a[i].p=='R'&&a[i-1].p=='P'){ans+=(a[i].x-a[i-1].x);}
}
for(int i=1;i<n;i++){
if(a[i].p==a[i-1].p&&a[i].p=='B'){ans+=(a[i].x-a[i-1].x);}
else if(a[i].p=='P'&&a[i-1].p=='B'){ans+=(a[i].x-a[i-1].x);}
else if(a[i].p=='B'&&a[i-1].p=='P'){ans+=(a[i].x-a[i-1].x);}
}
cout<<ans<<endl;
}

没有考虑有敌国拦在中间的情况,真是该打!

写了老半天,还是wa了,但是我的代码是没有问题的,是我把题目理解错了

#include<iostream>
#include<cstdio>
using namespace std;
struct node
{
int x;
char p;
}r[150000],b[150000],s[150000];
int main()
{
int n; int tr,tb;cin>>n;
//cout<<"n="<<n<<endl;
tr=tb=0;
for(int i=0;i<n;i++){
//cout<<i<<endl;
scanf("%d %c",&s[i].x,&s[i].p);
if(s[i].p=='R'){r[tr++]=s[i];}
else if(s[i].p=='B'){b[tb++]=s[i];}
else if(s[i].p=='P'){r[tr++]=s[i];b[tb++]=s[i];}
}
unsigned long long ans;
ans=0;
for(int i=1;i<tr;i++){
ans+=(r[i].x-r[i-1].x);
}
for(int i=1;i<tb;i++){
ans+=(b[i].x-b[i-1].x);
}
for(int i=1;i<n;i++){
if(s[i].p==s[i-1].p&&s[i].p=='P'){
ans-=(s[i].x-s[i-1].x);
}
}
cout<<ans<<endl; }

Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities的更多相关文章

  1. Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities(贪心)

    E. Byteland, Berland and Disputed Cities time limit per test2 seconds memory limit per test256 megab ...

  2. Educational Codeforces Round 42 (Rated for Div. 2) D. Merge Equals

    http://codeforces.com/contest/962/problem/D D. Merge Equals time limit per test 2 seconds memory lim ...

  3. Educational Codeforces Round 42 (Rated for Div. 2)F - Simple Cycles Edges

    http://codeforces.com/contest/962/problem/F 求没有被两个及以上的简单环包含的边 解法:双联通求割顶,在bcc中看这是不是一个简单环,是的话把整个bcc的环加 ...

  4. Educational Codeforces Round 42 (Rated for Div. 2) C

    C. Make a Square time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. Educational Codeforces Round 42 (Rated for Div. 2) B

    B. Students in Railway Carriage time limit per test 2 seconds memory limit per test 256 megabytes in ...

  6. Educational Codeforces Round 42 (Rated for Div. 2) A

    A. Equator time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  7. D. Merge Equals(from Educational Codeforces Round 42 (Rated for Div. 2))

    模拟题,运用强大的stl. #include <iostream> #include <map> #include <algorithm> #include < ...

  8. Educational Codeforces Round 42 (Rated for Div. 2)

    A. Equator(模拟) 找权值的中位数,直接模拟.. 代码写的好丑qwq.. #include<cstdio> #include<cstring> #include< ...

  9. C Make a Square Educational Codeforces Round 42 (Rated for Div. 2) (暴力枚举,字符串匹配)

    C. Make a Square time limit per test2 seconds memory limit per test256 megabytes inputstandard input ...

随机推荐

  1. python基础学习笔记(五)

    字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...

  2. Daily Scrumming* 2015.12.22(Day 14)

    一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1112 无 任务说明 今天没有写前端界面,而是完成了跨域请求的实现以及用户实名认证API 前后端大部分数 ...

  3. 《Linux内核分析》 第八节 进程的切换和一般的执行过程

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第八 ...

  4. sring引入mybatis

    1.首先框架结构是这样的(jar包还是要导的) 2.web.xml和springMVC-servlet.xml未作任何新的配置,这里简单贴一下代码: <?xml version="1. ...

  5. Android WebView 文明踩坑之路

    情景一 webview 以头布局的形式添加到 RecyclerView 中,第一次进入页面,当页面中有 EditText 并且点击时,甚至是类似点赞更换图片.点击 WebView 任意区域,都会造成 ...

  6. ecshop验证码图片无法显示终极解决办法

    ecshop验证码图片无法显示终极解决办法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2014-06-06   客户在安装好ecshop之后所有前台的证码不显示,后 ...

  7. Oracle18c OnlyExadataVersion 安装说明

    1.根据惜分飞还有盖国强老师云和恩墨的文章, 验证了下OnlyExadataVersion的Oracle18c的数据库安装过程. 2.oracle参数修改以及创建用户, 目录, 修改.bash_pro ...

  8. php 中instanceof的使用

    转载:https://www.cnblogs.com/tengjian/p/7999107.html 作用:(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口. 第一种用法: ...

  9. Jquery 组 tbale表格滚动条

    <!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...

  10. Node require

    var user = require("./module_user");//使用模块 module_userconsole.log(user.userCount);user.use ...