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) 头奶牛,每天挤奶时总会按同样的顺序站好.一日,农夫约翰决定为奶牛们举行一个“终极飞盘”比 ...
随机推荐
- testng 工程报错java.net.SocketException
报错如下: java.net.SocketException: Software caused connection abort: socket write error at java.net.Soc ...
- OpenCV2.3.1在CentOS6.5下的安装
安装的linux版本号是centos6.5.选择的是opencv2.3.1.不是非常新的版本号. 由于在安装opencv2.4.9的时候.make的过程中出现了问题. 一:安装依赖包 依赖包用yum安 ...
- UVA - 12338 Anti-Rhyme Pairs 二分+hash
题目链接:传送门 题意: 给你n个串 问你任意两个串的最大公共前缀长度是多少 题解: 二分+hash 思路很明显,我最近用来写hash 很鸡肋 #include<bits/stdc++.h> ...
- js编程精解--笔记
看这本书的目的是为了更好的使用mongodb,所以只看js编程语言基础,不看浏览器和画布. 需要看1-11章,共160页 第一章 值.类型和运算符 第二章 程序结构 第三章 函数 第四章 数据结构:对 ...
- 小程序登录方式切换 不做url跳转
var filegUP = require('../../utils/getUserPassword.js'); var filemd5 = require('../../utils/md5.min. ...
- strong and weak 强引用和弱引用的差别
(weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它. 一旦最后一个strong型指针离去 .这个对象将被释放,全部剩余 ...
- stm8 停机模式与外部中断唤醒中一个小问题
做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗.而对外接口只有4个按键,也就是唤醒必须要通过这四个按键. 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码. 使用芯片为st ...
- Unity3D集成腾讯语音GVoice SDK
友情提示:最近发现腾讯GVoice有另一个官网,叫做腾讯游戏服务,经过对比发现这个网站才是最新的,下面我介绍的那个估计是已经废弃的,但不知道为啥老的网站没有直接链接到新网址而是仍然保留了.不过新官网的 ...
- js-easyUI格式化时间
formatter : function(value, row) { if(value != null){ var date = new Date(value); var y = date.getFu ...
- CSS中的那点事儿(一)--- CSS中的单位2
在上篇博客提到了%.px.em三个单位,其中最复杂的是em,因为要计算当前元素内的font-size,必须知道其父元素的font-size,层层累积,容易出错.现在CSS3中引入了新的单位rem,改变 ...