IOI'98
The cows have developed a new interest in scanning the universe outside their farm with radiotelescopes. Recently, they noticed a very curious microwave pulsing emission sent right from the centre of the galaxy. They wish to know if the emission is transmitted by some extraterrestrial form of intelligent life or if it is nothing but the usual heartbeat of the stars.
Help the cows to find the Truth by providing a tool to analyze bit patterns in the files they record. They are seeking bit patterns of length A through B inclusive (1 <= A <= B <= 12) that repeat themselves most often in each day's data file. They are looking for the patterns that repeat themselves most often. An input limit tells how many of the most frequent patterns to output.
Pattern occurrences may overlap, and only patterns that occur at least once are taken into account.
PROGRAM NAME: contact
INPUT FORMAT
Line 1: | Three space-separated integers: A, B, N; (1 <= N < 50) |
Lines 2 and beyond: | A sequence of as many as 200,000 characters, all 0 or 1; the characters are presented 80 per line, except potentially the last line. |
SAMPLE INPUT (file contact.in)
2 4 10 01010010010001000111101100001010011001111000010010011110010000000
In this example, pattern 100 occurs 12 times, and pattern 1000 occurs 5 times. The most frequent pattern is 00, with 23 occurrences.
OUTPUT FORMAT
Lines that list the N highest frequencies (in descending order of frequency) along with the patterns that occur in those frequencies. Order those patterns by shortest-to-longest and increasing binary number for those of the same frequency. If fewer than N highest frequencies are available, print only those that are.
Print the frequency alone by itself on a line. Then print the actual patterns space separated, six to a line (unless fewer than six remain).
SAMPLE OUTPUT (file contact.out)
23 00 15 01 10 12 100 11 11 000 001 10 010 8 0100 7 0010 1001 6 111 0000 5 011 110 1000 4 0001 0011 1100
题意:
给出 a(1 ~ 12) ,b(1 ~ 12),n(1 ~ 50),后给出一个 01 字符串 (1 ~ 200000)。统计连续长度为 a 到 b 的子串中出现频率,输出前 n 个出现频率最高的子字符串。如果有一样的则首先按字符串短到长输出,同样长度则按二进制小到大输出。严格按照每 80 个字符一行输出。
思路:
暴搜。用 map 标记每个子字符串出现的下标位置,统计的时候直接往下标上加就好,不然每次都找一遍的话会导致 TLE ,为方便排序,所以还要转化成二进制,并且保存好子串的长度,最后 sort 一遍后按要求输出即可,输出的时候判断一下会不会超过 80 ,如果超过则跳到下一行输出即可。
AC:
/* TASK:contact LANG:C++ ID:sum-g1 */ #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <string> using namespace std; typedef struct { char bin[15]; int ans; int num; int len; } node; char str[300005]; node no[5000]; map<string, int> m; int change (char *a) { int num = 0, len = strlen(a); for (int i = 0; i < len; ++i) { num = num * 2 + a[i] - '0'; } return num; } bool cmp (node a, node b) { if(a.ans != b.ans) return a.ans > b.ans; if(a.len != b.len) return a.len < b.len; return a.num < b.num; } int main() { freopen("contact.in", "r", stdin); freopen("contact.out", "w", stdout); int a, b, n, len = 0; char c; scanf("%d%d%d", &a, &b, &n); while(~scanf(" %c", &c)) { str[len++] = c; } int sum = 1; for (int i = 0; i < len; ++i) { char bin[15]; int to = min(b, len - i); for (to; to >= a; --to) { memset(bin, 0, sizeof(bin)); strncpy(bin, str + i, to); if (!m[bin]) { strcpy(no[sum].bin, bin); ++no[sum].ans; no[sum].num = change(bin); no[sum].len = strlen(bin); m[bin] = sum; ++sum; } else ++no[ m[bin] ].ans; } } sort(no + 1, no + sum, cmp); int tt = 0, nn = 0; for (int i = 1; i < sum; ++i) { printf("%d\n", no[i].ans); printf("%s", no[i].bin); nn = strlen(no[i].bin); for (int j = i + 1; j < sum; ++j) { if (no[i].ans != no[j].ans) { i = j - 1; break; } if (nn + strlen(no[j].bin) + 1 >= 80) { printf("\n"); printf("%s", no[j].bin); nn = 0; } else printf(" %s", no[j].bin); nn += strlen(no[j].bin); } printf("\n"); ++tt; if(tt == n) break; } return 0; }
相关推荐
"BS+Contact+VRML+-+用户手册.doc"文档很可能是针对上述技术的详细指南,包含如何使用这些技术进行WEB3D开发,如何集成Contact组件进行碰撞检测,以及如何利用VRML创建和展示3D场景等内容。用户手册通常会提供步骤...
BS Contact VRML 用户手册主要针对使用 BS Contact 播放器的用户,该播放器支持VR(虚拟现实)和MPEG-4格式的内容。用户手册旨在帮助读者理解如何在虚拟环境中进行交互,包括移动、查看和与对象互动。以下是手册中的...
### Contact ID协议详解 #### 一、概述 **Contact ID协议**是安防行业中广泛使用的一种电话报警通信协议,主要用于报警主机与接警中心接收设备之间的数据传输。此协议由Ademco集团(现为Honeywell的一部分)开发,...
《接触与磨耗:轮轨接触CONTACT程序解析》 在铁路交通系统中,轮轨接触是决定列车运行安全、效率及磨损程度的关键因素之一。为了深入理解和优化这一过程,工程师们借助于先进的计算机模拟工具,其中之一就是“接触...
《接触角与表面能:MATLAB程序解析及应用》 ...通过对"contact_angle.m"程序的理解和运用,科研人员可以更加深入地理解固体表面的润湿性,为新材料的研发、表面改性等实际问题提供有力的理论指导和技术支持。
标题中的"contact_C语言_contact_Contact.c_"表明这是一个基于C语言编写的联系人管理系统的源代码,主要功能可能包括联系人的添加、修改和删除,并且具备文件读写操作以保存和加载数据。从描述中我们可以进一步了解...
深度学习contact_map_v2 这是进行的非官方实现,这是一种用于的深度学习方法,具有通过其他软件(例如CCMpred,PSICOV等)预测的接触图on)作为输入。 要求 介绍 网络结构:实施了2个网络(剩余网络和高速公路网络...
《BS Contact 6.22:探索虚拟现实与3D互动的新境界》 BS Contact 6.22是一款先进的VRML(Virtual Reality Modeling Language)浏览器,专为用户提供卓越的虚拟现实体验而设计。VRML是一种国际标准的编程语言,用于...
在Android 8.0系统中,Contact应用是用户管理和存储联系人信息的核心组件。这个应用不仅提供了基本的联系人添加、编辑和删除功能,还具备了一系列优化和改进,旨在提升用户体验和数据管理效率。以下是对Android 8.0...
【Laravel 开发 - Contact 模块详解】 在 Laravel 框架中,"Contact" 模块通常指的是用户与网站交互的一种方式,允许访客发送消息或咨询至管理员。在本案例中,我们讨论的是 "Avored Laravel 5电子商务联系模块",...
TF 2.0 Symbols Map (contact: webpaige@google.com) tf2.0函数 该文档为tf2函数对应关系,(你要是会员就下载,不是会员就私我,我给你发)
`grunt-contact`模块是Grunt工作流中的一个插件,用于简化前端开发过程中的任务自动化。Grunt是一款基于JavaScript的任务运行器,它可以帮助开发者执行预处理、编译、压缩、测试等一系列构建任务。在这个场景中,`...
标题中的"contact_id.zip_ADEMCO_contact_contact ID_contact-ID_报警"揭示了这个压缩包文件主要涉及的是关于ADEMCO报警系统中与“contact_id”相关的技术内容。ADEMCO是一家知名的安防系统制造商,其产品广泛应用于...
在IT领域,Google Contact API是一个重要的工具,它允许开发者通过编程方式访问和操作用户的Google联系人数据。这个实例是关于如何使用JavaScript来抓取并处理这些数据的具体实践。以下是对这个实例的详细解读: ...
Contact-RxSwift용된XCode 11.6,Swift 5사용된스RxSwift,RxCocoa 链接: : 불러와서,RxCocoa로테이블,뿌려주고,능입니기능입니다。로Mobile로전화가경우가경우다。다。내보내기기능추가
在本篇中,我们将深入探讨PFC3D的接触模型,特别是"Contact_contact"这一关键概念,以及它在Pfc3D中的应用。Pfc3D(Particle Flow Code in Three Dimensions)是一种离散元素方法(DEM)软件,用于模拟颗粒介质的...
在IT行业中,通讯录(Contact)是一个常见的应用场景,它用于管理和存储个人或组织的联系信息。这个中级通讯录项目显然涵盖了基本的CRUD(Create, Read, Update, Delete)操作,这是数据库操作的基础,也是软件开发...
**Google Contact API** Google Contact API 是谷歌提供的一种接口服务,允许开发者通过编程方式与Google Contacts进行交互,实现对用户联系人数据的创建、读取、更新和删除等操作。这个API是基于RESTful架构,使用...
Kalker s all code 1. Exact solution 2. Linear Solution 3. Simplifiend solution 4. FASTSIM + POLACH s contact algorithm
plot_contact_map.plot_map(fasta_filename, contact_filename, factor, c2_filename='', psipred_filename='', pdb_filename='', is_heavy=False, chain='', sep=',', outfilename='') 终端: [--psipred_horiz...