bestcoder.hdu.edu.cn
http://bestcoder.hdu.edu.cn/
Problem A
题目链接:
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=690&pid=1001
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 LL; LL mod_pow(LL x, LL n, LL mod) {
LL res = 1;
while(n > 0) {
if(n & 1) res = res * x % mod;
x = x * x % mod;
n >>= 1;
}
return res;
} int main(){
while(~scanf("%d", &N)){
scanf("%s", Hstr);
int len = strlen(Hstr);
H[0] = 1;
for(int i = 1;i <= len;i ++){
H[i] = H[i - 1] * (Hstr[i - 1] - 28) % mods;
}
while(N --){
scanf("%d%d", &l, &r);
if(l > r) swap(l, r);
printf("%I64d\n", (LL)H[r] * mod_pow(H[l - 1], mods - 2, mods) % mods);
}
}
return 0;
}
Problem B
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5686
题目分析:
1 1 1
2 11 2 2
3 111 21 12 3
4 1111 211 112 121 22 5
5 8
所以,很容易推出 F[i] = F[i-1] + F[i-2]
需要注意的地方是这里必须使用大数加法,不然会报错
代码:
#include <iostream>
#include<string.h>
#include <stdio.h>
using namespace std;
int a[205][205];
int main()
{
memset(a,0,sizeof(a));
a[1][200]=1;a[2][200]=2;
int i,j;
for(i=3;i<=200;i++)
{
for(j=200;j>0;j--)
{
a[i][j]=a[i][j]+a[i-1][j]+a[i-2][j];
if(a[i][j]>9)
{
a[i][j-1]=a[i][j]/10;
a[i][j]=a[i][j]%10;
}
}
}
int n;
while(cin>>n)
{
j=0;
while(a[n][j]==0)j++;
for(;j<=200;j++)
{
cout<<a[n][j];
}
cout<<endl;
}
return 0;
}
Problem C
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5687
题目分析:
使用字典树
代码:
#include<cstdio>
#include<cstring>
#include<stdlib.h>
const int N=26;
struct node{
int flag; // 记录该单词出现的次数;
node *next[N];
node(){
flag=0;
memset(next,0,sizeof(next));
}
};
node *p,*pre,*head=new node();
void Insert(char s[])
{
p=head;
int i=0;
while(s[i]){
int id=s[i++]-'a';
if(p->next[id]==NULL) p->next[id]=new node();
p=p->next[id];
p->flag++; // 标记该分支字母出现的个数;
}
//p->flag++; // 标记改单词出现过,并且记录出现的次数;
}
// 返回该单词出现的次数;
int Query(char s[])
{
p=head;
int i=0;
while(s[i]){
int id=s[i++]-'a';
if(p->next[id]==NULL) return 0;
p=p->next[id];
}
return p->flag;
}
// 不能删除,删除会导致TLE,不删除容易出现内存泄漏MLE
int deal(node *T)
{
for(int i=0;i<N;i++){
if(T->next[i]!=NULL)
deal(T->next[i]);
}
free(T);
return 0;
}
// 该单词的计数-cnt;
void Deal(char s[],int cnt)
{
p=head;
int i=0;
while(s[i]){
int id=s[i++]-'a';
p=p->next[id];
p->flag-=cnt;
}
for(int i=0;i<N;i++){
p->next[i]=NULL;
}
//deal(p);
return ;
}
int main()
{
int n;
char s1[35],s2[35];
while(~scanf("%d",&n)){
head=new node();
for(int i=0;i<n;i++){
scanf("%s %s",s1,s2);
if(strcmp(s1,"insert")==0) Insert(s2);
if(strcmp(s1,"search")==0){
if(Query(s2)) printf("Yes\n");
else printf("No\n");
}
if(strcmp(s1,"delete")==0){
int t=Query(s2); // 前缀为s2的单词出现的次数;
if(t)Deal(s2,t);
}
}
//deal(head);
}
return 0;
}
Problem D
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5688
题目分析:
使用map容器做
代码:
#include<cstdio>
#include<string>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
map<string,int>m;
char s[100]; int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%s",s);
sort(s,s+strlen(s));
m[s]++;
printf("%d\n",m[s]-1);
}
return 0;
}
bestcoder.hdu.edu.cn的更多相关文章
- HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911 解题报告: 给出一个长度为n的序列,然后给出一个k,要你求最多做k次相邻的数字交换后,逆序数最少 ...
- KMP(http://acm.hdu.edu.cn/showproblem.php?pid=1711)
http://acm.hdu.edu.cn/showproblem.php?pid=1711 #include<stdio.h> #include<math.h> #inclu ...
- HDU-4632 http://acm.hdu.edu.cn/showproblem.php?pid=4632
http://acm.hdu.edu.cn/showproblem.php?pid=4632 题意: 一个字符串,有多少个subsequence是回文串. 别人的题解: 用dp[i][j]表示这一段里 ...
- 待补 http://acm.hdu.edu.cn/showproblem.php?pid=6602
http://acm.hdu.edu.cn/showproblem.php?pid=6602 终于能够看懂的题解: https://blog.csdn.net/qq_40871466/article/ ...
- HDU-1257 导弹拦截系统 http://acm.hdu.edu.cn/showproblem.php?pid=1257
Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...
- BestCoder HDU 5750 Dertouzos
Dertouzos 题意: 有中文,不说. 题解: 我看了别人的题解,还有个地方没懂, 为什么是 if(d%prime[i]==0) break; ? 代码: #include <bits/st ...
- http://acm.hdu.edu.cn/showproblem.php?pid=2579
#include<stdio.h> #include<string.h> #include<queue> #define N 110 int m, n, k, x1 ...
- KMP应用http://acm.hdu.edu.cn/showproblem.php?pid=2594
riemann与marjorie拼接后riemannmarjorie前缀与后缀公共部分为 rie 长度为 3(即next[l] = next[14]的值,l为拼接后的长度)但:aaaa与aa拼接后aa ...
- HDU 2544 最短路 http://acm.hdu.edu.cn/showproblem.php?pid=2544
//代码: //方法1:Dijkstra's Algorithm #include<stdio.h> #include<math.h> #include<string.h ...
随机推荐
- 使用线程新建WPF窗体(公用进度条窗体)
使用线程新建窗体 项目中需要一个公用的进度条窗体.大家知道在wpf中,有两个线程,一个是UI线程,另一个是监听线程(一直监听用户的输入).如果我们后台有阻塞UI线程的计算存在,那么界面上的比如进度条什 ...
- BZOJ 4177: Mike的农场( 最小割 )
显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...
- SD-关于定价日期的设置
最近看了一篇关于定价日期的文章,我觉得写得很不错,特将自己的理解摘抄如下: 关于SD的定价日期在SAP系统中有三个配置与其相关,以及手工输入定价日期,具体如下: 1.订单类型的“定价日期建议“ 这个字 ...
- JVM --字节码的加载
ClassLoader类加载器 常见的类加载器有BootStrapClassLoader<-ExtClassLoader<-AppClassLoader<-用户ClassLoader ...
- RESTful最佳实践之基于 jersey 的增删改查
jersey-rest-demo 增删改查 项目地址:https://github.com/CoderDream/jersey-rest-demo 源代码:http://download.csdn.n ...
- 修改 Mac 默认 PHP 运行环境,给 MAMP 配置全局 Composer
在没有配置全局性的 Composer 的时候,如果你在没有安装 Composer 的目录下运行 Composer 命令,比如:create-project 系统会返回: Could not open ...
- cocos2d-x游戏开发系列教程-中国象棋03-主界面
前情回顾 上个博客说道我们象棋程序进入了欢迎界面,在欢迎界面下等待一秒进入主界面 进入主界面的关键代码如下: CCScene* pScene = CCMainMenu::scene(); 创建sce ...
- MinGW介绍与使用
3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境.MinGW 收集了一系列免费的Windows 使用的头文件和库文件:同时整合了GNU ( ht ...
- Lucene4.3入门
辞职交接期间无聊看了一下搜索引擎,java社区比较火的当然是Lucene,想写一个简单的小例子,在网上找了些资料,不过都不是4.3的,自己看了一下. 下载地址:http://lucene.apache ...
- android的JNI标准 android的NDK
转载的! Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) ...