poj 1200 Crazy Search

   给字母编码后,用NC当进制进行hash,或者直接java水过

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#define INF 1E9
using namespace std;
int N,NC;
char org[1000000];
int hash[10000000];
int v[200];
int find()
{
    int i=0,j=0,now=0,hh,ans=0,len=strlen(org);
    for(i=0,j=0;i<len;i++)
    {
        if(v[org[i]]==0)v[org[i]]=++j;
        if(j==NC)break;
    }
    for(i=0;i<N;i++) now=now*NC+v[org[i]];
    ans++;hash[now]=1;
    int t=pow(NC,N-1);
    for(j=0,i=N;i<len;i++,j++)
    {
        now-=t*v[org[j]];
        now=now*NC+v[org[i]];
        if(hash[now]!=0)continue;
        hash[now]=1;ans++;
    }
    return ans;
}
int main()
{
    scanf("%d%d%s",&N,&NC,org);
    printf("%d\n",find());
    return 0;
}

import java.util.HashMap;
import java.util.Scanner;

public class Main {
	private static Scanner in;

	public static void main(String[] args) {
		HashMap<String, Boolean> vis=new HashMap<String,Boolean>();
		in = new Scanner(System.in);
		@SuppressWarnings("unused")
		int N=in.nextInt(),NC=in.nextInt();
		String s=in.next(),t;
		int i,j,len=s.length(),ans=0;
	    for(i=N,j=0;i<=len;i++,j++)
	    {

	    	t=s.substring(j, i);
	        if(vis.containsKey(t)==true) continue;
	        vis.put(t, true);
	        ans++;
	    }
	    System.out.println(ans);
	}

}

 

import java.util.HashMap;
import java.util.Scanner;

public class Main {
	private static Scanner in;

	public static void main(String[] args) {
		HashMap<String, Boolean> vis=new HashMap<String,Boolean>();
		in = new Scanner(System.in);
		@SuppressWarnings("unused")
		int N=in.nextInt(),NC=in.nextInt();
		String s=in.next(),t;
		int i,j,len=s.length(),ans=0;
	    for(i=N,j=0;i<=len;i++,j++)
	    {

	    	t=s.substring(j, i);
	        if(vis.containsKey(t)==true) continue;
	        vis.put(t, true);
	        ans++;
	    }
	    System.out.println(ans);
	}

}

 

 

时间: 2024-08-19 23:38:48

poj 1200 Crazy Search的相关文章

POJ 1200

View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 6 int hash[30]; 7 bool loc[20000000]; 8 char str[1000000]; 9 10 int main() 11 { 12 int n,m,cnt,sum,len,ans,i,j; 13 while(scanf("%d%d"

POJ题目分类

初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      (4)递推.      (5)构造法.(poj3295)      (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法:      (1)图的深度优先遍历和广度优先遍历.      (2)最短路径算法(dijkstra,bellman-ford

poj 1338 Ugly Numbers【终极打表】

这道题我用的是终极打表的方法.......... 哈哈哈,为了避免代码太长刷屏,把我自己的代码放到最后...这道题当我想到这种方法的时候哈哈大笑... 这题倒是让我变得很会用 word 的替换...回车是^p,先把回车都去掉,然后再把所有的","改成",^p".原因是开始的回车有把很多数字隔开,这样编译器就没法识别了:后一个因为编译器一行最多2048个字符 大家注意亮点[代码长度]: 我自己的代码效率很低,所以想到这种方法...网上的结题报告多用的是,指针法 我的低

CIA首次在网上公开近1200万页解密文件

据外媒报道, 美国中央情报局(CIA)近日在网上首次公开了近1200万页解密文件,允许任何人浏览1940年-1990年期间的解密情报报告.简报及其他一度机密的文件.在这个数据库中包括了美国暗杀菲德尔·卡斯特罗.纳粹战争罪行.UFO目击事件报告及"星门项目(Project Star Gate)"等相关的文件. 比尔·克林顿担任美国总统期间,曾下令CIA解密25年以上的具有历史价值的秘密文件,但在2000年之前该机构未能提供在线检索.但那时候,1940年至1990年期间的文件只能在美国国家

poj 2828 Buy Tickets

点击打开poj 2828 思路: 树状数组/线段树单点更新 分析: 1 题目给定n个人的位置pos和id,要我们求出最后n个人的位置 2 我们先来考虑朴素的算法,假设现在进来一个人那么我们把它放到pos的位置,那么pos之后的所有的人都要向后移动一位,那么n个人的话最坏的情况是O(n^2),很显然时间效率上面是不行的 3 由于正向的插入不行,那么我们考虑反向插入的情况(就像逆向的并查集),那么我们可以马上知道第n个人的位置,那么第n-1个人的位置是基于第n个人的.假设第i个人的要插入pos的位置

转 关闭Windows8的Windows Search服务

默认情况下,Windows8附带的一些程序和功能处于打开状态,其中包括Windows Search.此功能带来了快捷方便强大的搜索功能,但可能有人不需要此功能,或者很少用到此功能,或许还有人认为其在后台建立索引耗费了大量资源并且可能会硬盘产生伤害.如果不使用Windows Search,其实可以将其关闭.当然关闭Windows Search会将其从Windows中删除,但不会减少Windows占用的硬盘空间量,Windows Search仍将存储在硬盘中,因此,您可以根据需要将它重新打开. 首先

利用新浪微博API的Search接口做微博锐推榜

郑昀 20100929   应用入口:http://t.rtmeme.com/ 简单介绍下我们这个榜单与新浪自己的热门转发榜区别: 微博锐推榜 将无视明星推名人推,更关注草根推,更关注社会民生推,屏蔽无营养推. 微博锐推榜 将聚合以新浪微博为首的国内各大微博网站的热门转发消息.     1.新浪的接口 新浪微博的API提供了Search方法,如它的文档所示: URL:http://api.t.sina.com.cn/search.json 格式: 仅支持json  GET 是否需要登录:true

围观一个People Search

郑昀@玩聚RT 20091210 1. 请打开链接: http://martin.atkins.me.uk/peoplesearch/#riku http://martin.atkins.me.uk/peoplesearch/#hecaitou http://martin.atkins.me.uk/peoplesearch/#kunshou 尝试People Search. 2. 请注意上面这个页面的底端写着: This service is powered by Google AJAX Sea

利用Yahoo! Search API开发自已的搜索引擎-javascript版

javascript|yahoo|搜索引擎 美国东部时间3月1日,雅虎公司联合创始人之一的杨致远将宣布公司的搜索网络将进入Web服务.雅虎公司在www.developer.yahoo.com网站建立了Yahoo Search Developer Network,公司计划在此纽约举行的搜索引擎战略大会(Search Engine Strategies Conference)上推出这一计划.该网络将允许开发者在雅虎搜索之上建立新的应用程序,其中包括图像.视频.新闻以及地区搜索等内容.想要使用这项服务