逆元 1001 Problem A

求前缀哈希和逆元

#include <bits/stdc++.h>

typedef long long ll;
const int MOD = 9973;
const int N = 1e5 + 5;
int inv[MOD+5];
int ha[N];
char str[N];
int n; void Inv(int n, int p) {
inv[1] = 1;
for (int i=2; i<=n; ++i) {
inv[i] = (ll) (p - p / i) * inv[p%i] % p;
}
} void init_hash() {
ha[0] = 1;
for (int i=1; i<=n; ++i) {
ha[i] = (ll) ha[i-1] * (str[i] - 28) % MOD;
}
} int main() {
Inv (MOD, MOD);
int q;
while (scanf ("%d", &q) == 1) {
scanf ("%s", str + 1);
n = strlen (str + 1);
init_hash ();
for (int i=0; i<q; ++i) {
int l, r; scanf ("%d%d", &l, &r);
printf ("%d\n", (ll) ha[r] * inv[ha[l-1]] % MOD);
}
}
return 0;
}

dp 1002 Problem B

状态转移方程:dp[i] = dp[i-1] + dp[i-2],Java写大数

import java.math.*;
import java.io.*;
import java.util.*; public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger[] dp = new BigInteger[205];
dp[1] = BigInteger.ONE;
dp[2] = BigInteger.ONE.add(BigInteger.ONE);
for (int i=3; i<=200; ++i) {
dp[i] = dp[i-1].add(dp[i-2]);
} Scanner cin = new Scanner (System.in);
int n;
while (cin.hasNext ()) {
n = cin.nextInt ();
System.out.println (dp[n]);
}
} static class InputReader {
public BufferedReader reader;
public StringTokenizer tokenizer; public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream), 32768);
tokenizer = null;
} public String next() {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return tokenizer.nextToken();
} public int nextInt() {
return Integer.parseInt(next());
}
} }

字典树 1003 Problem C

1、insert : 往神奇字典中插入一个单词

2、delete: 在神奇字典中删除所有前缀等于给定字符串的单词

3、search: 查询是否在神奇字典中有一个字符串的前缀等于给定的字符串

字典树删除操作,按出现的次数,在前缀路径上依次删除,最后的扩展结点清空.
#include <cstdio>
#include <cstring>
#include <algorithm> const int N = 1e5 + 5;
char oper[10];
char str[35];
const int NODE = N * 30;
struct Trie {
int ch[NODE][26], val[NODE];
int sz;
void clear() {
memset (ch[0], 0, sizeof (ch[0]));
sz = 1;
}
int idx(char c) {
return c - 'a';
}
void insert(char *s) {
int u = 0;
for (int c, i=0; s[i]; ++i) {
c = idx (s[i]);
if (!ch[u][c]) {
memset (ch[sz], 0, sizeof (ch[sz]));
val[sz] = 0;
ch[u][c] = sz++;
}
u = ch[u][c];
val[u]++;
}
}
void del(char *s, int num) {
int u = 0;
for (int c, i=0; s[i]; ++i) {
c = idx (s[i]);
u = ch[u][c];
val[u] -= num;
}
memset (ch[u], 0, sizeof (ch[u]));
}
int _search(char *t) {
int u = 0;
for (int c, i=0; t[i]; ++i) {
c = idx (t[i]);
if (!ch[u][c]) {
return 0;
}
u = ch[u][c];
}
return val[u];
}
};
Trie trie; int main() {
int n;
while (scanf ("%d", &n) == 1) {
trie.clear ();
for (int i=0; i<n; ++i) {
scanf ("%s%s", oper, str);
if (oper[0] == 'i') {
trie.insert (str);
} else if (oper[0] == 'd') {
int cnt = trie._search (str);
if (cnt > 0) {
trie.del (str, cnt);
}
} else {
int cnt = trie._search (str);
if (cnt > 0) {
puts ("Yes");
} else {
puts ("No");
}
}
}
}
return 0;
}

STL 1004 Problem D

map或者双hash

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std; const int N = 1e6 + 10;
const int MOD = 1e9 + 7;
char str[45];
int a[45];
std::map<string, int> mp; int main() {
int n; scanf ("%d", &n);
mp.clear ();
string str;
for (int i=0; i<n; ++i) {
cin >> str;
sort (str.begin (), str.end ());
printf ("%d\n", mp[str]);
mp[str]++;
}
return 0;
}

2016"百度之星" - 资格赛(Astar Round1)的更多相关文章

  1. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  2. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  3. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  4. HDU 5685:2016"百度之星" - 资格赛 Problem A

    原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    ...

  5. 2016"百度之星" - 资格赛(Astar Round1) 1004

    思路:题目很简单,直接用map记录每个字符串的个数就可以了.记得对每个字符串先sort(). AC代码: #include <cstdio> #include <stdlib.h&g ...

  6. 2016"百度之星" - 资格赛(Astar Round1) 1001

    思路:第一个做法就是:每读入起始位置i和结束位置j,就从这位置i到位置j计算,可是TLE了,后面我想想要是我输入一个最长的字符串,且以最大次数计算开始位置1到结束位置100000,那么这计算量是很大的 ...

  7. 2016"百度之星" - 资格赛(Astar Round1) Problem E

    简单模拟题,耐心写就能过. #include <stdio.h> #include <math.h> #include<cstring> #include<c ...

  8. 2016"百度之星" - 资格赛(Astar Round1) Problem C

    字典树. 插入的时候update一下节点出现的次数. delete的时候,先把前缀之后的全删了.然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数. 前缀从上到下再检查一遍,如果 ...

  9. 2016"百度之星" - 资格赛(Astar Round1) Problem D

    排个序,map直接搞. #include <stdio.h> #include <math.h> #include<cstring> #include<cma ...

随机推荐

  1. python基础2(数据类型、数据运算、for循环、while循环、列表)

    1.数据类型 python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是一个对象,即所有数据都是对象. 对象的3个特性: 身份:即内存地址,可以用id()来获取 类型 ...

  2. Migrating an Existing Website from SQL Membership to ASP.NET Identity

    Migrating an Existing Website from SQL Membership to ASP.NET Identity public class User : IdentityUs ...

  3. html5 新选择器 querySelector querySelectorAll

    querySelector 返回满足条件的单个元素 使用实例 HTML <div id="main">主体布局</div> JS var main =doc ...

  4. 数据存储_ SQLite(3)

    SQLite的应用 一.简单说明 1.在iOS中使用SQLite3,首先要添加库文件 libsqlite3.dylib 2.导入主头文件 #import <sqlite3.h> 二.具体说 ...

  5. mysql 递归查询

    1.创建表: DROP TABLE IF EXISTS `t_areainfo`; CREATE TABLE `t_areainfo` ( `id` ) ' AUTO_INCREMENT, `) ', ...

  6. 生成彩条的MATLAB代码

    clc;close all;clear %read image % RGBimga = imread('bmpinput_1080p.bmp'); RGBimga = imread('bmpinput ...

  7. iOS开发

    #import 预处理指令,相对于 #include 而言,能防止重复拷贝,它可以导入OC头文件,也可以导入C头文件. OC中在一个框架中,有一个主头文件(该头文件名称一般跟框架名称相同),该主头文件 ...

  8. 使用JVMTI创建调试和监控代理

    Java 虚拟机工具接口(JVMTI)提供了一个编程接口,允许你(程序员)创建software agent 来监视和控制你的Java应用. JVMTI 代替了原来的Java Virtual Machi ...

  9. cf723d Lakes in Berland

    The map of Berland is a rectangle of the size n × m, which consists of cells of size 1 × 1. Each cel ...

  10. [Python] 利用Django进行Web开发系列(二)

    1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...