http://www.nocow.cn/index.php/Translate:USACO/contact

题目大意:给一个只含0和1的序列,统计每个子序列的重复次数,并按次数递减来输出

考虑子序列时将序列前面加一个'1'然后转化成二进制整数,这样每个子序列与整数一一对应,统计二进制整数出现次数,按要求输出即可(ps:usaco老是喜欢在输出上做文章)代码如下(未提交):

 /**********************************************
*** Problem:
*** Author: JKL
*** University: CSUST
*** Team: __Dream
*** Email: 1451108308@QQ.COM
*** My Blog: http://www.cnblogs.com/jklongint/
***********************************************/
//===================================================
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cassert>
#include <numeric>
#include <ctime>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <stack>
#include <list>
#include <set>
#include <bitset>
#include <deque>
using namespace std;
//---------------------------------------------------
#define mem(a,b) memset(a,b,sizeof(a))
#define GO cout<<"HelloWorld!"<<endl
#define Case(x) cout<<"Case "<<x<<":"
#define foru(i,n) for(int i=1; i <= n; i++)
#define ford(i,n) for(int i = n; i >= 1; i--)
#define fin freopen("input.txt","r",stdin);
#define fout freopen("output.txt","w",stdout)
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1 #define sqr(a) ((a)*(a))
#define abs(a) ((a>0)?(a):-(a))
#define pii pair<int,int> #define fmax(a,b) max(a,b)
#define fmin(a,b) min(a,b)
#define fmax3(a,b,c) (fmax(a,fmax(a,b)))
#define fmin3(a,b,c) (fmin(a,fmin(a,b))) #define sfi(x) scanf("%d",&x)
#define sfL(x) scanf("%I64d",&x)
#define sfc(x) scanf("%c",&x)
#define sfd(x) scanf("%lf",&x)
#define sfs(x) scanf("%s",x)
#define sfii(a,b) scanf("%d%d",&a,&b)
#define sfLL(a,b) scanf("%I64d%I64d",&a,&b)
#define sfcc(a,b) scanf("%c%c",&a,&b)
#define sfdd(a,b) scanf("%lf%lf",&a,&b)
#define sfss(a,b) scanf("%s%s",a,b) #define pfi(x) printf("%d",x)
#define pfL(x) printf("%I64d",x)
#define pfs(x) printf("%s",x)
#define pfd(x) printf("%lf",x)
#define pfc(x) print("%c",x)
#define newLine pfs("\n")
#define space pfs(" ") //--------------------------------------------------------
typedef __int64 LL;
typedef unsigned long long ULL;
//typedef __int64 __LL;
typedef unsigned __int64 __ULL; typedef vector<int> vi;
typedef vector<LL> vL;
typedef vector<string> vs;
typedef set<int> si;
typedef map<int,int> mii;
typedef map<LL,LL> mLL;
typedef map<string,int> msi;
typedef map<char,int> mci;
//--------------------------------------------------------
const int dx[]={,-,,};
const int dy[]={,,,-};
const int day[]={,,,,,,,,,,,,};
const int N6=;
const int N5=;
const int N4=;
const int N3=;
const int N2=;
const int N=;
const int MOD=;
const LL LMAX=0x7fffffffffffffff;
const LL IMAX=0x3fffffff;
const double PI=3.14159265359;
//--------------------------------------------------------
template< class T > T gcd(T a, T b) { return (b != ? gcd<T>(b, a%b) : a); }
template< class T > T lcm(T a, T b) { return (a / gcd<T>(a, b) * b); } //------------------------------------------------------------
struct TreeNode{
LL sum;
};
struct Node{
int id, s;
};
char sbuf[];
//=================================================================
Node node[N4];
int cnt[N4], f[N4];
char s[N];
int getState(int n, int len)
{
int c = ;
foru(i, len) c = c * + s[n + i- ] - ;
return c;
}
char *getString(int a)
{
int c = ;
mem(sbuf, );
while(a > ){
sbuf[c++] = (a & ) + ;
a = a >> ;
}
c--;
sbuf[c] = ;
int cc = c / , l = ;
c--;
foru(i, cc){
swap(sbuf[l++], sbuf[c--]);
}
return sbuf;
}
int cmp(Node i, Node j)
{
return i.s > j.s || i.s == j.s && i.id < j.id;
}
int main()
{
//fin;
//fout;
//freopen("contact.in","r",stdin);
//freopen("contact.out","w",stdout)
int a, b, n;
cin>> a>> b>> n;
sfs(s);
int len = strlen(s);
for(int i = len - ; i >= ; i--){
for(int j = a; j <= b; j++){
if(i + j > len)break;
int t = getState(i, j);
f[t] ++;
}
}
int m = ( << (b + )) - , q = b + ;
foru(i, m){
node[i].s = f[i];
node[i].id = i;
}
sort(node + , node + + m, cmp);
//foru(i, m)cout<<node[i].s <<endl;
int cnt = ;
foru(i, m){
if(node[i].s != node[i-].s || i == ){
cnt++;
if(cnt > n)break;
if(i > )cout<<endl;
cout<<node[i].s<<endl<<getString(node[i].id);
}
else cout<<" "<<getString(node[i].id);
}
return ;
}

USACO 3.1 Contact的更多相关文章

  1. USACO 3.2 Contact

    ContactIOI'98 The cows have developed a new interest in scanning the universe outside their farm wit ...

  2. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  3. USACO Section 3.1: Contact

    算法简单,写起来遇到些小问题 /* ID: yingzho1 LANG: C++ TASK: contact */ #include <iostream> #include <fst ...

  4. 洛谷P2724 联系 Contact

    P2724 联系 Contact 17通过 86提交 题目提供者该用户不存在 标签 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 奶牛们开始对用射电望远镜扫描牧场外的宇宙感 ...

  5. USACO 2016 January Contest, Gold解题报告

    1.Angry Cows http://www.usaco.org/index.php?page=viewproblem2&cpid=597 dp题+vector数组运用 将从左向右与从右向左 ...

  6. USACO . Your Ride Is Here

    Your Ride Is Here It is a well-known fact that behind every good comet is a UFO. These UFOs often co ...

  7. 【USACO 3.1】Stamps (完全背包)

    题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...

  8. USACO翻译:USACO 2013 NOV Silver三题

    USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...

  9. USACO翻译:USACO 2013 DEC Silver三题

    USACO 2013 DEC SILVER 一.题目概览 中文题目名称 挤奶调度 农场航线 贝西洗牌 英文题目名称 msched vacation shuffle 可执行文件名 msched vaca ...

随机推荐

  1. form表单里的button调用js函数

    近来发现一个特别奇怪的问题:在form表单里,button的onclick事件无法调用js函数.代码如下(这段代码放在form标签里): dropUpdateAddress调用的js函数为: 这个时候 ...

  2. 关于Sysinternals Suite

    sysinternals 的网站创立于1996年由Mark russinovich和布赖科格斯韦尔主办其先进的系统工具和技术资料·微软于2006年7月收购sysinternals公司 . 不管你是一个 ...

  3. js判断一个元素是否在数组内

    1.indexOf()返回给定元素在数组内的索引值,如果不存在则返回-1 var arr=[0,1,2,3,4,5] console.log(arr.indexOf(1)) console.log(a ...

  4. 0day笔记(1)PE文件格式与虚拟文件内存的映射

    PE文件格式 PE 文件格式把可执行文件分成若干个数据节(section),不同的资源被存放在不同的节中. 一个典型的 PE 文件中包含的节如下: .text 存放着二进制的机器代码 .data 初始 ...

  5. Scala教程之:Future和Promise

    文章目录 定义返回Future的方法 阻塞方式获取Future的值 非阻塞方式获取Future的值 Future链 flatmap VS map Future.sequence() VS Future ...

  6. 更新mac系统到10.15后,virtual box虚拟机无法打开

    更新mac系统到10.15后,virtual box虚拟机无法打开: 尝试解决方案1:下载最新版的virtual box重新安装后,启动成功. 虽然很乌龙,但是下次再也不随便升级系统了,太坑爹了

  7. Vue-cli3.0下的雪碧图插件webpack-spritesmith配置方法

    在前端项目中,为了减少对图片的请求次数,一般而言需要进行雪碧图的配置.即将多张小图标合并成一张图片,这样页面中的小图标都在一张图片上,只需请求一张图片,就可以通过CSS设置各个小图标的显示,利于节省带 ...

  8. values/colors.xml

    <color name="abcd">#FFC4C4C4</color> <color name="white">#FFFF ...

  9. java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  10. 流畅的python读书笔记-第十章-继承优缺点

    继承的优缺点 推出继承的初衷是让新手顺利使用只有专家才能设计出来的框架.--Alan Kay 子类化内置类型很麻烦 (如 list 或 dict)) ,别搞这种 直接子类化内置类型(如 dict.li ...