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. Emqtt集群搭建

    1 Emqtt简单搭建 1.1  介绍:EMQ:EMQ 2.0,号称百万级开源MQTT消息服务器,基于Erlang/OTP语言平台开发,支持大规模连接和分布式集群,发布订阅模式的开源MQTT消息服务器 ...

  2. vim插件管理器:Vundle的介绍及安装(很全)(转载)

    转载自:https://blog.csdn.net/zhangpower1993/article/details/52184581 背景 Vim缺乏默认的插件管理器,所有插件的文件都散布在~/.vim ...

  3. P1613跑路

    题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...

  4. 【TWRP】使用adb sideload线刷ROM的方法

    本教程详细介绍 手机刷三方ROM 之前需要安装的 TWRP 这个神器工具 楼主的手机是小米,所以此教程以小米手机为例.其他手机原理类似 第一步,解锁引导程序 访问小米的官方解锁网站并申请解锁权限. 等 ...

  5. RabbitMQ ——整体架构

    一 .概述 从整体上讲Rabbitmq就是一个生产者消费者的模型. 我们将中间的整个broker就当做是一个消息中间件的实体就可以了. 单从这个方面上讲,生产者发送消息到broker上面,然后消费者从 ...

  6. PHP-不涉及第三个变量交换两个变量的值

    不涉及第三个变量交换两个变量的值 方法1:使用加减法 <?php $a = 1; $b = 2; $a = $a+$b; $b = $a-$b; $a = $a-$b; printf(" ...

  7. css: IE没法调整那些使用px作为单位的字体大小

    <style type="text/css"> h1{font-size:40px;} h3{font-size:30px;} p{font-size:14xp;} & ...

  8. Java实现sock5代理服务器

    入职练手socks5代理服务器,过程总结一下. 1.下载火狐浏览器,设定代理为socks5代理,地址为127.0.0.1:1080. 2.socks5协议1928,中文版,原版,认真阅读 3.按照协议 ...

  9. React Native框架如何白盒测试-HIPPY接口测试架构篇

    本文转载自腾讯TMQ团队 ,侵权删. 1.开天辟地 Hippy是什么呢?简单点,能用JavaScript来写Android和iOS应用的框架, 类似业界的React Native. 好吧,我们还是严谨 ...

  10. Django前后端分离跨域请求问题

    一.问题背景 之前使用django+vue进行前后端分离碰到跨域请求问题,跨域(域名或者端口不同)请求问题的本质是由于浏览器的同源策略导致的,当请求的响应不是处于同一个域名和端口下,浏览器不会接受响应 ...