洛谷P2724 联系 Contact
P2724 联系 Contact
- 17通过
- 86提交
- 题目提供者该用户不存在
- 标签
- 难度普及/提高-
提交 讨论 题解
最新讨论
- 暂时没有讨论
题目背景
奶牛们开始对用射电望远镜扫描牧场外的宇宙感兴趣。最近,他们注意到了一种非常奇怪的脉冲调制微波从星系的中央发射出来。他们希望知道电波是否是被某些地外生命发射出来的,还是仅仅是普通的的星星发出的
题目描述
帮助奶牛们用一个能够分析他们在文件中记下的记录的工具来找到真相。他们在寻找长度在A到B之间(包含A和B本身)在每天的数据文件中重复得最多的比特序列 (1 <= A <= B <= 12)。他们在找那些重复得最多的比特序列。一个输入限制告诉你应输出多少频率最多的序列。
符合的序列可能会重叠,并且至少出现一次的序列会被计数
输入输出格式
输入格式:
第一行: 三个用空格分隔的整数: A, B, N; (1 <= N < 50)
第二行及以后: 一个最多200,000字符的序列,全是0或1; 每行字符数不大于80。
输出格式:
输出N个频率最高的序列(按照频率由高到低的次序)。由短到长排列频率相同的这些序列,如果长短相同,按二进制大小排列。如果出现的序列个数小于N,输出存在的序列。
对于每个存在的频率,先输出单独包含该频率的一行,再输出以空格分隔的这些序列。每行六个(除非剩下的少于六个)。
输入输出样例
2 4 10
01010010010001000111101100001010011001111000010010011110010000000
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
说明
在样例里,序列100出现了12次,而序列1000出现了5次。次数最多的序列是00,出现了23次。
题目翻译来自NOCOW。
USACO Training Section 3.1
分析:一开始想到的是dp,但是发现不太现实,那么就要枚举所有可能的序列,并且记录次数?那么用结构体吗?这样的话每搜到一个序列,就要在已经记录的结构体中查找,花费了太长时间,可以将序列和次数关联起来的还有map,那么用一个map,将所有符合条件的序列的次数都统计下来,先枚举长度为a的,再枚举长度为a+1的,枚举到长度为b的为止.,由于序列的个数不明确,所以用一个不定长数组vector,那么根据题目的条件排序后,再按照要求输出,这个输出要求真**多.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector> using namespace std; struct node
{
string s;
int sizee;
}; int a, b, n;
string temp, s;
map<string, int> m;
vector <node> v; bool cmp(node a, node b)
{
if (a.sizee != b.sizee)
return a.sizee > b.sizee;
if (a.s.size() != b.s.size())
return a.s.size() < b.s.size();
return a.s < b.s;
} int main()
{
scanf("%d%d%d\n", &a, &b, &n);
while (cin >> temp)
s += temp; while (a <= b)
{
for (int i = s.size() - a; i >= ; i--)
{
string t = s.substr(i, a);
if (m[t] == )
{
node tt;
tt.s = t;
tt.sizee = ;
v.push_back(tt);
}
m[t]++;
}
a++;
}
for (int i = ; i < v.size(); i++)
v[i].sizee = m[v[i].s];
sort(v.begin(), v.end(), cmp);
int cur = ;
while (n--)
{
if (cur == v.size())
break;
cout << v[cur].sizee << endl << v[cur].s;
int num = ;
while (++cur < v.size() && v[cur].sizee == v[cur - ].sizee)
{
if (num == )
{
printf("\n");
num = ;
}
else
printf(" ");
cout << v[cur].s;
++num;
}
printf("\n");
} return ;
}
洛谷P2724 联系 Contact的更多相关文章
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- Linux常用命令记录
产用Linux命令 cat /proc/partitions //查看系统分区情况 fdisk -l /dev/sdb //查看磁盘物理存储 mount /dev/目录 /mnt/目录 //挂载文件 ...
- 解决RPM包相互依赖的有效方法
出自:http://blog.csdn.net/kai27ks/article/details/7473683 前言:常用RPM的朋友们都知道,RPM简单易用,但是它的依赖关系是最头疼的!有时候比方说 ...
- php的函数iconv在转"utf-8"到"gb2312"时会自动截断
最近在写网站后台时候,需要用到iconv函数把前端jquery Post来过的utf-8编码内容转成gb2312, 发现只有用iconv函数把内容的数据一转码数据就会无缘无故的少了一部分. 问了我 ...
- Android一 流
补充Java知识:流 java.io 四个抽象类: 字节流:InputStream OutputStream 字符流:Reader Writer 站在程序角度上,输入(读入到程序)输出(从程序写出) ...
- ADF_Starting系列1_JDeveloper IDE开发环境简介
2013-05-01 Created By BaoXinjian
- python入门,猜数
#this is a sample guess program import random guesses_made =0 name = raw_input('Hello! whats your na ...
- centos下安装mycat
1.在某个临时文件夹下下载mycat(此处用的是1.4 RELEASE)wget https://raw.githubusercontent.com/MyCATApache/Mycat-downloa ...
- Git hub pull时候的错误 : The current branch is not configured for pull No value for key branch.master.merge found in configuration
网上多半都是命令行下的解决方案,我用的是EGit,所以要在eclipse里(我的版本是kepler)把下面这句话添加到配置文件中. Window->Preference->Team-> ...
- JDBC常用代码
try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://127.0.0 ...
- mysql特有语法
1.插入多条记录insert into test.new_table(t1) values('1'), ('2'); 2.复制表结构及数据 create table test.tb2 SELECT * ...