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) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
随机推荐
- 手动编译一个c文件(Win7下如何使用GCC编译器)
主要参考这篇http://jingyan.baidu.com/article/c275f6bacc0126e33c756771.html 我没找到minGW的下载地址,而是直接用codeblocks自 ...
- 【转载】FAT12格式的引导程序
FAT12格式的引导程序 在上一篇文章中详细介绍了FAT12格式的引导扇区数据结构,详情请浏览: 地址是:http://blog.sina.com.cn/s/blog_3edcf6b80100cr08 ...
- 关于cocos2d-x 3.0的点击交互处理
转自:http://blog.csdn.net/fansongy/article/details/12716671 1.概述 游戏也好,程序也好,仅仅有能与用户交互才有意义.手机上的交互大致能 ...
- 树莓派wiringPi经常使用的函数介绍
1.void pinMode (int pin, int mode) ; 这个函数式设置pin脚的输入和输出模式以及PWM的输入和输出模式.在wiringPi中仅仅有 pin 1 (BCM_GP ...
- Unity3D游戏开发之粒子系统实现具体解释
今天为大家分享的是Unity3D中的粒子系统.粒子系统通经常使用来表现烟雾.云等高级效果.是一个十分注重制作技巧的部分.今天我们将以一个气泡的演示实例来一起学习怎样在Unity3D中使用粒子系统 ...
- 完美解决android显示gif
今天是周5啊.纠结了一天.android显示gif,没该控件 网上找开源项目 找到个viewgif.该作者在各大站点都在推荐自己的项目...好吧.用下吧. . . . 结果呢: 图片略微一大就 内存溢 ...
- 两个月刷完Leetcode前400题经验总结
更新:气死了,挂个傻逼: 每次做个分享.组织个活动,就会有一些傻逼冒泡生怕别人不知道他是傻逼,气死我了!自己好好看看非法集资的概念,我办这个活动,一分钱都没收,入群99元是督促大家完成刷题任务,最后完 ...
- app直播原理
之前写的一系列文章或者小经验一直没有时间去整理放在博客上,今天整理出来,之前是写在作业部落,语法是markdown,点击链接浏览,仅供参考,希望对你有帮助. https://www.zybuluo.c ...
- Shell hook
[目的]实现 ll -as +hook+ clear Shell脚本及钩子 - CSDN博客 https://blog.csdn.net/shengzhu1/article/details ...
- Visio 2010 绘制流程图布局技巧
设置多个元件大小一致:https://zhidao.baidu.com/question/176608306.html 设置多个元件的对齐方式,水平等距.垂直等距等:http://jingyan.ba ...