*[topcoder]LittleElephantAndIntervalsDiv1
http://community.topcoder.com/stat?c=problem_statement&pm=12822&rd=15707
第一次用C++提交,艰辛。
首先想到可以从尾往前扫,只有最后覆盖的颜色才有效;
然后是想到用线段来做,用map记录线段;
然后学到了lower_bound是找到元素插入的位置,返回的*it>=该元素,也可能是end。cp博士一般得到lower后处理边界,同时用+-来做。
但这里用map不好,因为先前一道题是不用merge。这里如果要merge,可能一个很大的线段要连续merge很多小线段。
然后看了题解发现根本不用线段,每个小球就用一个A[i]表示,然后用朴素的线段表示染色就行了。
最后用1LL<<count来做pow。
#include <set>
#include <vector>
using namespace std;
class LittleElephantAndIntervalsDiv1
{
public:
long long getNumber(int M, vector <int> L, vector <int> R);
}; long long LittleElephantAndIntervalsDiv1::getNumber(int M, vector <int> L, vector <int> R)
{
vector<int> color(M+1, -1);
for (int i = 0; i < L.size(); i++)
{
for (int j = L[i]; j <= R[i]; j++)
{
color[j] = i;
}
}
set<int> result;
for (int i = 1; i <= M; i++)
{
if (color[i] != -1)
{
result.insert(color[i]);
}
}
return 1LL << result.size();
}
原来DIV 1的250题也是挺值得做的。
*[topcoder]LittleElephantAndIntervalsDiv1的更多相关文章
- TopCoder kawigiEdit插件配置
kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...
- 记第一次TopCoder, 练习SRM 583 div2 250
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...
- TopCoder比赛总结表
TopCoder 250 500 ...
- Topcoder几例C++字符串应用
本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...
- TopCoder
在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...
- TopCoder SRM 596 DIV 1 250
body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...
- 求拓扑排序的数量,例题 topcoder srm 654 div2 500
周赛时遇到的一道比较有意思的题目: Problem Statement There are N rooms in Maki's new house. The rooms are number ...
- TopCoder SRM 590
第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement Fox Ciel is going to play Gomoku with her friend ...
- Topcoder Arena插件配置和训练指南
一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...
随机推荐
- Python(2.7.6) 迭代器
除了对列表.集合和字典等进行迭代,还能对其他对象进行迭代:实现 __iter__ 方法的对象.例如, 文件对象就是可迭代的: >>> dir(file) ['__class__', ...
- 20160522--20160526----mybatis入门基础
一.基础知识: 1.对原生态jdbc程序(单独使用jdbc开发)问题总结 2.mybatis框架原理 (掌握) 3.mybatis入门程序 4.用户的增.删.改.查 5.SqlMapConfi ...
- Acitivity间数据的传递
使用startActivityForResult方法进行数据传递. MainActivity.java: public class MainActivity extends Activity { ...
- iOS 键盘回收实现步骤
第一步:遵守协议 (UITextFieldDelegate) @interface AppDelegate : UIResponder <UIApplicationDelegate,UIText ...
- java中内部类的定义与访问规则
java内部类总结 简单来说,内部类就是在我们所熟悉的类中的里面再定义一个类 为什么需要内部类? 当我们描述事物时,事物之中还有事物,我们就用内部类描述事物 因为内部事物在使用外部事物的内容 我举一个 ...
- 用VIM写作
Write in VIm 1.Writing in Vim by Dr. Bunsen
- 桶排序(BucketSort)
1 桶排序核心思想是 根据数据规模n划分 m个相同大小的区间 (每个区间为一个桶,桶可理解为容器) 2 每个桶存储区间内的元素(区间为半开区间 例如[0,10) 或者 [200,300) ) 3 将n ...
- OpenJudge/Poj 2001 Shortest Prefixes
1.链接地址: http://bailian.openjudge.cn/practice/2001 http://poj.org/problem?id=2001 2.题目: Shortest Pref ...
- Node安装与环境配置
1.nodejs(npm)安装 下载nodejs(http://nodejs.cn/)安装后,cmd下如输入 node -v 与 npm -v 出现下图版本提示就是完成了NodeJS的安装 2.n ...
- 怎样用sourceTree将自己本地的项目上传到github网站上
前言:GitHub 是基于 Git 的一个代码托管网站.开发者可以将代码在 GitHub 上开源,可以浏览其它项目的代码. 准备工作:1.github网站账号.2.sourceTree软件. 一.在g ...