Practice

tower

有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \(B\) 的长度 \(+D\) 要长。问有几种方法,输出答案 \(\bmod 1\,000\,000\,009\) 的值。

此题无法暴力。

观察,发现对于任意一块砖,其可插入在长度为 \([\text{len},\text{len}+D]\) 的任一块砖之上;对于任意一块砖,其插入位置与其他砖的摆放无关。由此可应用分步乘法计数原理(乘法原理)。

复习 lower_boundupper_bound

lower_boundupper_bound 本质是二分查找,时间复杂度为对数级别:

  • lower_bound(begin, end, val):从数组的 begin 位置到 end-1 位置二分查找第一个大于或等于 val 的数字,找到返回该数字的地址,不存在则返回 end。通过返回的地址减去起始地址 begin,得到找到数字在数组中的下标。
  • upper_bound(begin, end, val):从数组的 begin 位置到 end-1 位置二分查找第一个(严格)大于 val 的数字,找到返回该数字的地址,不存在则返回 end。通过返回的地址减去起始地址 begin,得到找到数字在数组中的下标。
  • lower_bound(begin, end, val, greater<type>()):从数组的 begin 位置到 end-1 位置二分查找第一个小于或等于 val 的数字。
  • upper_bound(begin, end, val, greater<type>()):从数组的 begin 位置到 end-1 位置二分查找第一个(严格)小于 val 的数字。
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long const ll mod=1000000009; int n, d, g[600002]; ll ans=1, sum; int main() {
scanf("%d%d", &n, &d);
for (int i=1; i<=n; i++) scanf("%d", g+i);
sort(g+1, g+n+1);
for (int i=1; i<n; i++) {
sum=upper_bound(g+i+1, g+n+1, g[i]+d)-lower_bound(g+i+1, g+n+1, g[i])+1;
ans=ans*sum%mod;
}
printf("%lld\n", ans);
return 0;
}

[NOI导刊2011提高01] 单词分类

分类 \(N\) 个单词,单词均由大写字母组成。两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类。求所有分类的总数。

复杂字符串处理如果没有意外的话,应该要用 string 来替代 cstring

同理要包含 iostream 库。此时要应用 cin/cout 优化:

ios::sync_with_stdio(false);
cin.tie(0);

对于本题,先对每个字符串做排序,这样分为一类的两个字符串就自动等价。然后对所有字符串统一去重,去重后的个数即为分类数。

代码:

#include <string>
#include <algorithm>
#include <iostream>
using namespace std; int n;
string s[10002]; int main() {
cin>>n;
for (int i=0; i<n; i++) {
cin>>s[i]; sort(s[i].begin(), s[i].end());
}
sort(s, s+n);
n=unique(s, s+n)-s;
cout<<n<<endl;
return 0;
}

26 October in 614的更多相关文章

  1. 23-25 October in 614

    Practice sort 给定一系列形如 \(A<B\) 的不等关系,判断前 \(k\) 个不等关系是否即可确定 \(n\) 个元素之间的大小顺序:如果不可确定,判断前 \(k\) 个不等关系 ...

  2. 22 October in 614

    Contest A. defile struct 自定义排序.按照题意抽象成模型模拟就可以了. 自定义排序核心代码: struct node { int x, id; } d[1000003]; bo ...

  3. HTML 的 meta 标签

    我们先来看看维基百科上对 meta element 的定义: Meta elements are tags used in HTML and XHTML documents to provide st ...

  4. HTML5性能优化

    HTML5性能优化 在看完这两章内容之后,我意犹未尽,于是乎从网上搜索关键字“Java Web高性能”,在IBM社区找到两篇不错的文章,而让人更意外的是我发现那两篇文章的内容跟<高性能HTML5 ...

  5. [转] 《高性能HTML5》读后整理的Web性能优化内容

    读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...

  6. HTML meta标签总结与属性使用介绍

    之前学习前端中,对meta标签的了解仅仅只是这一句. <meta charset="UTF-8"> 但是打开任意的网站,其head标签内都有一列的meta标签.比如我博 ...

  7. HTML5性能优化[转]

    在看完这两章内容之后,我意犹未尽,于是乎从网上搜索关键字“Java Web高性能”,在IBM社区找到两篇不错的文章,而让人更意外的是我发现那两篇文章的内容跟<高性能HTML5>前两章高度相 ...

  8. 面试常考---html篇

    1.html5新特性,语义化 HTML5为我们提供了一系列的语义标签. 1.<section></section> 定义文档中的主体部分的节.段. 2.<article& ...

  9. IndexedDB,FileSystem- 前端数据库,文件管理系统

    "我们不再需要下载并且安装软件.一个简单的web浏览器和一个可供使用的互联网就足以让我们在任何时间, 任何地点, 还有任何平台上使用任何web应用程序." web应用很酷, 但是相 ...

随机推荐

  1. apicloud地图、即时通讯、人脸识别登录、以及平时踩过得坑

    apicloud技术浅谈 导语 apicloud 的学习也有一段时间了,这是我个人的一些经验,和踩过的坑,希望对大家能有一些帮助. apicloud的知识准备 apicloud 是一个用原生的思想搭建 ...

  2. Vagrant 入门 - share

    原文地址 译者注:Vagrant Share 功能通过 ngrok 向所有人提供访问内网开发环境的能力. 现在我们已经启动并运行了一台 Web 服务器,并且可以从你的机器访问,我们拥有一个相当实用的开 ...

  3. redis为什么内存不宜过大

    redis的高性能.稳定性都是不用怀疑的,但如果redis塞入数据过多,内存过大,那如果出问题,那它可能会给我们的就是灾难性的. 1 主库宕机 主库宕机,常见的策略为“切主”.具体为从该集群剩余从库中 ...

  4. Bootstrap 学习笔记11 按钮和折叠插件

     复选框: <div class="btn-group" data-toggle="buttons"> <label for="se ...

  5. 08 (h5*) js第9天--原型、继承

    目录: 1:原型和原型链 2:构造函数的原型可以改变 3:原型的最终指向 4:先修改原型指向,在添加方法. 5:实例对象中的属性和原型属性重合, 6:一个神奇的原型链 7:继承 8:原型链 9:利用c ...

  6. Show Me the Code

    最近在练习写Python代码,拥有150多道程序员面试题的LeetCode注重算法的实现,锻炼思维,还能在线测试代码的正确性,而Python练习册涉及到了Python实际的应用,锻炼解决问题的能力,托 ...

  7. Pandas处理缺失的数据

    处理丢失数据 有两种丢失数据: None np.nan(NaN) import numpy as np import pandas from pandas import DataFrame 1. No ...

  8. UVAlive 6756 Increasing Shortest Path

    We all love short and direct problems, it is easier to write, read and understand the problem statem ...

  9. js IntersectionObserver api

    API const options = { root: null, threshold: [0, 0.5, 1], rootMargin: '30px 100px 20px' } var io = n ...

  10. 如何在C#中使用sqlite,一个简单的类

    </pre><pre name="code" class="csharp"> using System.Collections.Gene ...