2016百度之星资格赛

A.前缀hash+逆元

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <vector>
#include <map>
#include <algorithm>

const int inf = 0x3f3f3f;
const int MAXN = 1e7+10;

using namespace std;

int main()
{
    int n;
    char ts[40];
    map<string,int>hash;
    map<string,int>::iterator li;
    while(scanf("%d",&n)!=EOF){
        hash.clear();
        for(int i=0;i<n;i++){
            scanf("%s",ts);
            int len = strlen(ts);
            sort(ts,ts+len);
            string tmp = (string)ts;
                li = hash.find(tmp);
                if(li==hash.end()){
                    cout<<0<<endl;
                    hash[tmp]++;
                }else{
                    cout<<hash[tmp]<<endl;
                    hash[tmp]++;
                }
            }

    }
    //cout << "Hello world!" << endl;
    return 0;
}

D.sort+map

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <vector>
#include <map>
#include <algorithm>

const int inf = 0x3f3f3f;
const int MAXN = 1e7+10;

using namespace std;

int main()
{
    int n;
    char ts[40];
    map<string,int>hash;
    map<string,int>::iterator li;
    while(scanf("%d",&n)!=EOF){
        hash.clear();
        for(int i=0;i<n;i++){
            scanf("%s",ts);
            int len = strlen(ts);
            sort(ts,ts+len);
            string tmp = (string)ts;
                li = hash.find(tmp);
                if(li==hash.end()){
                    cout<<0<<endl;
                    hash[tmp]++;
                }else{
                    cout<<hash[tmp]<<endl;
                    hash[tmp]++;
                }
            }

    }
    //cout << "Hello world!" << endl;
    return 0;
}

时间: 2024-12-09 15:49:55

2016百度之星资格赛的相关文章

2016&quot;百度之星&quot; - 资格赛(Astar Round1) Problem D 简单题

Problem D Accepts: 1527 Submissions: 4307 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家的所有人命名自己的名字都非常奇怪.一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字.例如,如果一个人名字

hdu 5685 Problem A(2016&quot;百度之星&quot; - 资格赛(Astar Round1)——线段树)

题目链接:acm.hdu.edu.cn/showproblem.php?pid=5685 Problem A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 564    Accepted Submission(s): 236 Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长

2016&quot;百度之星&quot; - 资格赛 解题报告

这次的百度之星,不得不吐槽下系统的判题数据,被坑了不知多少次. 第一题:大意:求一段区间的累乘.用线段树即可.坑点:如果询问范围超出边界,输出上一次的结果. /* Problem : Status : By wf, */ #include "algorithm" #include "iostream" #include "cstring" #include "cstdio" #include "string"

Problem A(逆元) 2016&quot;百度之星&quot; - 资格赛(Astar Round1)

Problem A Accepts: 1515 Submissions: 10832 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串.现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的哈希值.一个字符串的哈希值,由以下公式计算得到:

2016&quot;百度之星&quot; - 资格赛(Astar Round1)

http://acm.hdu.edu.cn/showproblem.php?pid=5685 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 1e5 + 5; int H[MAXN]; char Hstr[MAXN]; int N, l, r; const int mods = 9973; typedef long long L

2016 百度之星资格赛

A 前缀的积可以求出来  然后 z[b]/z[a-1]   就是要求的   求一下 z[a-1]的逆元   m为素数 可以用费马小定理 #include<stdio.h> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<vector> #include<queue> using namespace std; #d

[HDU5685]2016&quot;百度之星&quot; - 资格赛 Problem A

题目大意:给你一个字符串,和一些问题,每个问题问你[l,r]子串的哈希值是多少. 哈希值计算方法为:$H(s)=\prod _{i=1} ^{i\leq len(s)}(s_i-28)(mod\ 9973)$. 其中$s_i$代表 S[i] 字符的 ASCII 码. 解题思路:我们知道,要算区间[l,r]所有的和,就可以用$O(n)$的时间预处理出数组t,令$t[i]$表示前i个数的和,那么$t[r]-t[l-1]$即为区间[l,r]所有之和,询问时间复杂度$O(1)$,这就是维护前缀和的做法.

[HDU5686]2016&quot;百度之星&quot; - 资格赛 Problem B

题目大意:给你n,规定一个串中相邻的两个1可以合并为一个2(别的不行),让你求长度为n的全1串最多能变成多少种不同的串. 解题思路:我们先来找一波规律,发现n=1,2,3,4,5时答案分别为1,2,3,5,8. 嗯?斐波那契数列?没错就是这样.不过斐波那契数列的第200项好像有四五十位,long long也存不下? Java大法好,不用打烦人的高精度!当然时间就比较慢了. Java Code: import java.io.*; import java.math.*; import java.u

Problem C (字典树的查找删除和插入)2016&quot;百度之星&quot; - 资格赛(Astar Round1)

Problem C Accepts: 630 Submissions: 5255 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Description 度熊手上有一本神奇的字典,你可以在它里面做如下三个操作: 1.insert : 往神奇字典中插入一个单词 2.delete: 在神奇字典中删除所有前缀等于给定字符串的单词 3.search: 查询是否在神奇字典中