百度之星资格赛 2016 Problem 1001】的更多相关文章

本文链接http://www.cnblogs.com/Ash-ly/p/5494618.html 题意: 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串.现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的哈希值.一个字符串的哈希值,由以下公式计算得到: 请帮助度熊计算大字符串中任意一段的哈希值是多少.多组测试数据,每组测试数据第一行是一个正整数N,代表询问的次数,第二行一个字符串,代表题目中的大字符串,接下来N行,每行包含两个正整数…
本文链接:http://www.cnblogs.com/Ash-ly/p/5494630.html 题意: 熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家的所有人命名自己的名字都非常奇怪.一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每 一个字符串,也都是这个人的名字.例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字.在这个国家中,没有两个名字相同的人.度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计…
本文链接:http://www.cnblogs.com/Ash-ly/p/5494623.html 题意: 度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列. 思路: 自己手动写几个后就会发现是大斐波那契. 代码: import java.util.Scanner; import java.math.BigInteger; public class Main{ public…
原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 247    Accepted Submission(s): 174 Problem Description 度熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家…
原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 403    Accepted Submission(s): 136 Problem Description   度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以…
原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 504    Accepted Submission(s): 195 Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了…
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0%D9%B6%C8%D6%AE%D0%C7%22+-+%D7%CA%B8%F1%C8%FC%A3%A8Astar+Round1%A3%A9&source=1&searchmode=source Solved Pro.ID Tit…
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-inverse #navbar > .navbar-nav > li > a:hover, .navbar-inverse #navbar > .navbar-nav > li > a:focus { background-image: none; background-color:…
题目传送门 /* 模拟水题,排序后找出重复的ip就可以了 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cmath> using namespace std; ; const int INF = 0x3f3f3f3f; struct Ip { int a, b, c…
题目传送门 /* 模拟水题,排序后找出重复的ip就可以了 */ #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cmath> using namespace std; ; const int INF = 0x3f3f3f3f; struct Ip { int a, b, c…
2014百度拥有明星格比赛--Disk Schedule Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取. 为了提高效率.须要人为安排磁盘读取. 然而.在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景. 磁盘有很多轨道.每一个轨道有很多扇区,用于存储数据.当我们想在特定扇区来读取数据时.磁头须要跳转到特定的轨道.详细扇区进行读取操作. 为了简单,我们如果磁头能够在某个轨道顺时针或逆时针匀速旋转,旋转一周的时间是360个单位时间. 磁头也能够任…
度度熊的王国战略  Accepts: 644  Submissions: 5880  Time Limit: 40000/20000 MS (Java/Others)  Memory Limit: 32768/132768 K (Java/Others) Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族. 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士. 所以这一场战争,将会十分艰难. 为了更好的进攻哗啦啦族,度度熊决定首先应该从内部瓦…
Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 129    Accepted Submission(s): 94 Problem Description 众所周知,度度熊非常喜欢数字. 它最近在学习小学算术,第一次发现这个世界上居然存在两位数,三位数……甚至N位数! 但是这回的算术题可并不简单,由于…
思路:第一个做法就是:每读入起始位置i和结束位置j,就从这位置i到位置j计算,可是TLE了,后面我想想要是我输入一个最长的字符串,且以最大次数计算开始位置1到结束位置100000,那么这计算量是很大的而且还是重复的. 第二种就是:我先把这个字符串每个位置i到位置j的哈希值都计算出来,然后储存起来,可是字符串最大长度是100000,所以这个n*n的复杂度,当然还是TLE了. 最后还是想到了线段树,而且这题还是裸的线段树,然后写出来了,可是我交了好多次都是RE!很无奈,然后看到该题的讨论版里面提到,…
简单模拟题,耐心写就能过. #include <stdio.h> #include <math.h> #include<cstring> #include<cmath> #include<map> #include<string> #include<algorithm> #include<vector> using namespace std; ; int n; struct X { ]; ],R[]; } h…
字典树. 插入的时候update一下节点出现的次数. delete的时候,先把前缀之后的全删了.然后看前缀最后一个节点出现了几次,然后前缀上每个节点的次数都减去这个次数. 前缀从上到下再检查一遍,如果出现了次数为0的节点,也删去. #include <stdio.h> #include <math.h> #include<cstring> #include<cmath> #include<map> #include<string> #…
排个序,map直接搞. #include <stdio.h> #include <math.h> #include<cstring> #include<cmath> #include<map> #include<string> #include<algorithm> using namespace std; int main() { int n; while(~scanf("%d",&n)) {…
规律题,斐波那契数列,数据有毒,0的时候输出换行.会爆longlong,写个大数模板或者Java搞. import java.io.BufferedInputStream; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner (new BufferedInputStre…
保存前缀乘,询问的时候输出c[ri]/c[li-1]即可,因为是除法,所以计算一下c[li-1]的逆元. #include <stdio.h> #include <math.h> #include<cstring> #include<cmath> #include<map> #include<string> #include<algorithm> using namespace std; ; +]; +]; long lo…
题目大意:给你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…
题目大意:有n个操作,每个操作是以下三个之一,要你实现这些操作. 1.insert : 往字典中插入一个单词2.delete: 在字典中删除所有前缀等于给定字符串的单词3.search: 查询是否在字典中有一个字符串的前缀等于给定的字符串 解题思路:Trie树即可. 注意代码第49行的判断,我当时以为只要成功搜到这个前缀就一定有答案,忽略了删除操作使某些前缀的单词数为0的情况. C++ Code: #include<cstdio> struct node{ int cnt; node* nxt…
题目大意:给你n个字符串,如果一个字符串可以通过重新排列变成另一个字符串,则认为这两个字符串相等.每输入一个字符串,输出这个字符串和与它相等的之前出现了几次. 解题思路:我们可以用map保存一个字符串出现的次数,对于每个读进来的串,先把它排序一遍即可.由于字符串长度最大只有40,排序时间几乎可以忽略. 于是时间复杂度就只有map的$O(n\log n)$了. C++ Code: #include<iostream> #include<map> #include<algorit…
题目大意:给你一个字符串,和一些问题,每个问题问你[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)$,这就是维护前缀和的做法.…
题意:给出一个字符串,每次询问给出x和y要求算出从x到y的每个字符的(ASCII 码值-28)的值的积(mod9973). 分析:首先的想法肯定是算出每个位置的前缀积,然后只要F[y]/F[x-1]即可.但是每个前缀积都已经mod9973了,就不能直接这样得出结果了,所以利用求逆元.因为a/b(mod p)p是质数的话,相当于a*inv(b) (mod p),所以只要保存每个位置的前缀积和前缀积的逆元就可以了. 但是题目有个坑点,如果x和y超出了这次字符串的位置,可以使用上一次数据储存的值而不是…
题意:度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列.最多200个1. 比如:如果序列是:(111).可以构造出如下三个新序列:(111), (21), (12). 分析:对于任意的相邻的两个1合并,那么总的个数就会减1,然后把2放在任意一个位置,也就是说,如果有x个2,那么总的数字个数就是n-x,相当于在这n-x中选择x个变成2,那么显然是组合数求解,在枚举x的个数即可.…
逆元 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…
调查问卷  Accepts: 1289  Submissions: 5642  Time Limit: 6500/6000 MS (Java/Others)  Memory Limit: 262144/262144 K (Java/Others) Problem Description 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn 份互不相同的问卷,在整理结…
Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4278    Accepted Submission(s): 1024 Problem Description 魔法师百小度也有遇到难题的时候—— 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的…
Problem A  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串.现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的哈希值.一个字符串的哈希值,由以下公式计算得到: H(s)=\prod_{i=1}^{i\leq len(s)}…
Problem Description 魔法师百小度也有遇到难题的时候—— 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力. 过了许久,百小度终于读懂魔法文字的含义:石门里面有一个石盘,魔法师需要通过魔法将这个石盘旋转X度,以使上面的刻纹与天相对应,才能打开石门. 但是,旋转石盘需要N点能量值,而为了解读密文,百小度的能量值只剩M点了!破坏石门是不可能的,因为那将需要更多的能量.不过,幸运的是,作为魔法师的百小度可以耗费V点能量,使…