USACO Training3.1联系【排序终极题目】By cellur925
这题我们很容易想到直接枚举即可。算法本身并没有什么难度但是细节超多!于是这题整整卡了一天.......
(不,还是我太弱了。)
期间还暴露出一些平时没有特别注意的问题,这次一起解决。
开始想的是枚举每个长度的串,然后把这个二进制转为十进制的哈希值,用桶来记录一下。但很快就会发现,可能有很多个前导0.譬如说01与001与0001都是不一样的。
那么我们怎么做呢?可以用map映射。也不要转什么哈希值了,直接建立从string到int的映射。(建立方法:如果在map表中出现,对应的桶直接计数器加一;否则没出现(map值为0)则新开)。
另外,我们完全没有必要把串都读入后再统一枚举,而可以边读入边枚举串。
然后输出也是很恶心的....最后抄redbag的了
那些小问题写在代码里。
Code
/*
ID:cellur_2
TASK:contact
LANG:C++
*/
#include<cstdio>
#include<algorithm>
#include<map>
#include<iostream>//string类型在iostream库里 using namespace std; map<string,int>m;
int n,A,B,res,len;
char ch,seq[];//不是200 qwq 读错题。
struct node{
string str;
int tong;
}p[]; bool cmp(node x,node y)
{
if(x.tong==y.tong)
{
if(x.str.size()==y.str.size())
return x.str<y.str;
return x.str.size()<y.str.size();
}
return x.tong>y.tong;
} int main()
{
freopen("contact.in","r",stdin);
freopen("contact.out","w",stdout);
scanf("%d%d%d",&A,&B,&n);//输入顺序错了yyy
while((ch=getchar())!=EOF)//这里竟然要加括号。
{
if(ch==''||ch=='')
{
seq[++len]=ch;
string tmp="";//string加值不能为空 而且要双引号
int lim=max(,len-B+);
for(int i=len;i>=lim;i--)
{
tmp=seq[i]+tmp;//必须这样写
//是有严格先后顺序的 否则不对
if(len-i+>=A)
{
if(m[tmp]==)//用map 从未出现
{
m[tmp]=++res;
p[m[tmp]].str=tmp;
}
p[m[tmp]].tong++;
}
}
}
}
sort(p+,p+res+,cmp);
// for(int i=1;i<=res;i++) printf("%d\n",p[i].tong);
/* while(n--)
{
printf("%d\n",p[pos].tong);
int fake=0,pre=pos;
// cout<<pre<<"@@@";
while(p[pos].tong==p[pos+1].tong)
pos++;
for(int i=pre;i<=pos;i++)
{
fake++;
if(fake>6) printf("\n"),fake=0;
cout<<p[i].str<<" ";
}
if(pos==pre) pos++;
printf("\n");
}
之前自己写的输出 但是用while控制就会出现死循环。
比如数据2:
1 4 10
1
在我写的之下可能会陷入死循环。
*/
int xx=;
for (int i=;i<=res;i++)
{
if (n==&&p[i].tong!=p[i-].tong) break;
if (p[i].tong==p[i-].tong)
{
if (xx%==) cout<<p[i].str;
else cout<<" "<<p[i].str;
xx++;
if (xx%==) printf("\n");
}
else
{
n--;
if (i!=&&xx%!=) printf("\n");
printf("%d\n",p[i].tong);
cout<<p[i].str;
xx=;
}
}
if (xx%!=) printf("\n");
return ;
}
USACO Training3.1联系【排序终极题目】By cellur925的更多相关文章
- UVa 10905 - Children's Game 排序,题目没有说输入是int 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- USACO Training3.3亚瑟王的宫殿【搜索】By cellur925
题目传送门 因为太蒟了,所以参考了dalao@zbtrs == 对此表示感谢并侵删. 看起来我们就知道这是搜索题. 最后的情况分两种:有骑士背国王/国王自食其力走到集合点. 首先,我们不知道大家 ...
- USACO Training3.2 01串 By cellur925
题目传送门 一句话题意:求长度为n的有m个1的大小为第k个的01串. 暑假我做的时候是真·大暴力,用二进制枚举,55分,成功T掉无数点. 正解:开始可以用计数类dp来“预处理”,状态和转移都比较好想. ...
- USACO Training3.3 A Game【区间Dp】 By cellur925
题目传送门 一股浓浓的博弈论香气...然而本蒟并不会博弈论. 开始用双端队列+假的dp水过了24pts水数据. 其实是布星的,两人都绝顶聪明会深谋远虑不像我只看眼前,所以上述算法错误. 正解:区间dp ...
- Luogu P1137 旅行计划 【拓扑排序+Dp】By cellur925
题目传送门 由于满足游览先后顺序从西到东的性质,我们很自然的想到用拓扑排序处理出一个合理的游览顺序. 然鹅,之后呢? 事实上,拓扑排序常与Dp相结合,解决后效性.我们就可以在每次拓扑入队的时候更新答案 ...
- 算法笔记(c++)--桶排序题目
算法笔记(c++)--桶排序 记得题目是排序,输入n个1-1000的数字然后去重然后排序. 桶排序没毛病 #include<iostream> using namespace std; i ...
- USACO翻译:USACO 2013 NOV Silver三题
USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...
- USACO翻译:USACO 2014 FEB SILVER 三题
USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...
- RMQ——[USACO Jan07] 均衡队形题解
题目:[USACO Jan07] 均衡队形 描述: 题目描述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
随机推荐
- 【转载】win7下IIS的安装和配置图文教程
1. 首先是安装IIS.打开控制面板,找到"程序与功能",点进去 2. 点击左侧"打开或关闭Windows功能" 3. 找到"Internet 信息服 ...
- window.open() 父子页面的传值问题
if(window.opener){//判断是否有父窗口,即打开本页面的窗口 window.opener.location.reload();//刷新父窗口 window.op ...
- XML语法笔记
XML(可扩展标记语言) XML的特点: XML是一种标记语言,适合跨平台.跨语种信息交互XML被用于存储.传输数据XML可扩展性良好,没有预定义标签,需要用户自定义标签XML具有自我描述性XML采用 ...
- 值得收藏的45个Python优质资源(附链接)
REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API https://www.udemy.com/rest- ...
- 2016/06/10 日历插件 Datepicker
显示效果: <!doctype html> <html lang="en"> <head> <meta charset="utf ...
- 启用了不安全的HTTP方法解决办法 IBM APPSCAN
启用了不安全的HTTP方法解决办法 IBM APPSCAN 安全风险: 可能会在Web 服务器上上载.修改或删除Web 页面.脚本和文件. 可能原因: Web 服务器 ...
- Sublime Text web开发神器
开发工具介绍 开发工具一般分为两种类型:文本编辑器和集成开发环境(IDE) 常用的文本编辑器:Sublime Text.Notepad++.EditPlus等 常用的IDE:WebStorm.Inte ...
- CodeForces 24D Broken robot(期望+高斯消元)
CodeForces 24D Broken robot 大致题意:你有一个n行m列的矩形板,有一个机器人在开始在第i行第j列,它每一步会随机从可以选择的方案里任选一个(向下走一格,向左走一格,向右走一 ...
- iOS中区分照片的来源
原理就是通过枚举出每个assets group,然后取得group property,group property是个整数,对应头文件中的一些枚举值.用这个可以判断照片是从哪来的(相机胶卷.照片流.相 ...
- Hive 特性及原理
特点:Hive是构建在hadoop之上的数据仓库.数据存储在hdfs上,数据计算用的mapreduce框架.用户无需掌握MR的编写,通过类SQL语句即可自动生成查询计划. 主要内容: 接入入口 ...