PAT训练(4)
2015-08-22 17:03
246 查看
1092. To Buy or Not to Buy (20)
#include<iostream> #include<cstring> using namespace std; const int maxn=75; int main() { string exist,want; int table[maxn],remain,mark[maxn]; while(cin>>exist>>want) { int i; memset(table,0,sizeof(table)); memset(mark,0,sizeof(mark)); for(int i=0;i<exist.size();i++) table[exist[i]-'0']++; for(i=0;i<want.size();i++) table[want[i]-'0']--; remain=0; for(i=0;i<maxn;i++) if(table[i]>=0) remain+=table[i]; else { remain=table[i]; i++; break; } for(;i<maxn;i++) if(table[i]<0) remain+=table[i]; if(remain<0) cout<<"No "<<-remain<<endl; else cout<<"Yes "<<remain<<endl; } }
1093. Count PAT’s (25)
字符串类型的题目容易考察时间复杂度优化。#include<iostream> #include<cstring> using namespace std; const long long mod=1000000007; const int maxn=100005; int main() { //找到'A'前的'P'个数和其后的'T'个数,二者相乘,O(3n). string x; long long ans; int num[2][maxn],np,nt; while(cin>>x) { memset(num,0,sizeof(num)); np=nt=ans=0; for(int i=0;i<x.size();i++) { if(x[i]=='P') np++; num[0][i]=np; } for(int i=x.size()-1;i>=0;i--) { if(x[i]=='T') nt++; num[1][i]=nt; } for(int i=0;i<x.size();i++) if(x[i]=='A') ans+=num[0][i]*num[1][i]; cout<<ans%mod<<endl; } }
相关文章推荐
- vim编辑器简单使用(2)
- URAL 1989 Subpalindromes(线段树单点修改+字符串hash)
- 移动web之响应式布局
- ubuntu 14.04 安装配置使用搜狗拼音输入法
- C语言数组指针指针数组
- VirtualBox更改虚拟机磁盘VDI的大小
- c# 函数
- DOM操作
- 【JS笔记】私有变量
- servlet生命周期详解
- uint16,uint32是什么?
- uint16,uint32是什么?
- fabs(x)函数求绝对值
- 前端中容易犯低级错误的地方
- vim编辑器简单使用(1)
- Merge Intervals
- 从Java文件到字节码文件
- 个人--如何辨别添加了防腐剂的牛奶?
- leetCode #264 Ugly Number II
- 归并排序_分治算法 (白书P226)