#include<stdio.h>
#include<string.h> int main(){
float w[];
float t[];
float l[];
char a[];
float x[];
int i;
float sum;
memset(w,,sizeof(w));
memset(t,,sizeof(w));
memset(l,,sizeof(w)); for(i=;i<;i++){
scanf("%f %f %f",&w[i],&t[i],&l[i]);
} for(i=;i<;i++){
//x[i]=max(w[i],t[i],l[i]);
if(w[i]>t[i]&&w[i]>l[i]){
x[i]=w[i];
a[i]='W';
}
else if(t[i]>l[i]){
x[i]=t[i];
a[i]='T';
}
else{
x[i]=l[i];
a[i]='L';
}
}
sum=(x[]*x[]*x[]*0.65-)*;
printf("%c %c %c %.2f",a[],a[],a[],sum);
return ;
}

也是非常简单的一道题,没什么好说的

1012(重要!!)

 #include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
using namespace std;
struct stu{
int id;
int c;
int m;
int e;
int a;
char br;
int rank;
};
bool cmpbyA(stu A,stu B){
return A.a>B.a;
}
bool cmpbyC(stu A,stu B){
return A.c>B.c;
}
bool cmpbyM(stu A,stu B){
return A.m>B.m;
}
bool cmpbyE(stu A,stu B){
return A.e>B.e;
}
int main(){
int i,j;
int n1,n2;
int t;
int score,r;
vector<stu> v;
freopen("in2.txt","r",stdin);
scanf("%d %d",&n1,&n2);
for(i=;i<n1;i++){
stu s;
scanf("%d %d %d %d",&(s.id),&(s.c),&(s.m),&(s.e));
s.a=(s.c+s.m+s.e)/;
v.push_back(s);
}
score=-;
r=;
sort(v.begin(),v.end(),cmpbyA);
for(i=;i<v.size();i++){
if(v[i].a!=score)
r=i+;
score=v[i].a;
v[i].rank=r;
v[i].br='A';
}
sort(v.begin(),v.end(),cmpbyC);
for(i=;i<v.size();i++){
if(v[i].c!=score)
r=i+;
score=v[i].c;
if(v[i].rank>r){
v[i].rank=r;
v[i].br='C';
}
}
sort(v.begin(),v.end(),cmpbyM);
for(i=;i<v.size();i++){
if(v[i].m!=score)
r=i+;
score=v[i].m;
if(v[i].rank>r){
v[i].rank=r;
v[i].br='M';
}
}
sort(v.begin(),v.end(),cmpbyE);
for(i=;i<v.size();i++){
if(v[i].e!=score)
r=i+;
score=v[i].e;
if(v[i].rank>r){
v[i].rank=r;
v[i].br='E';
}
}
for(i=;i<n2;i++){
scanf("%d",&t);
for(j=;j<n1;j++){
if(t==v[j].id){
printf("%d %c\n",v[j].rank,v[j].br);
break;
}
else if(t!=v[j].id&&j==n1-)
printf("N/A\n");
}
}
return ;
}

教科书一般的代码,从这个代码可以学到很多:

c++中vector容器的应用,使用此容器,直接将结构体装入容器内,直接利用vector本身的函数就可以非常方便的进行排序、计算大小等。

注意排名时候的名词并列的情况,本程序提供了一个非常优秀的处理方案,一定要学会使用。

 #include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std; vector<int> v[];
int t[];
int cend[];
int n,m,k,q;
int main(){
int i,j;
int s,f;
freopen("in.txt","r",stdin);
memset(t,,sizeof(t));
memset(cend,,sizeof(cend));
for(i=;i<;i++){
v[i].clear();
}
scanf("%d%d%d%d",&n,&m,&k,&q);
for(i=;i<=k;i++){
scanf("%d",&t[i]);
}
j=;
for(i=;i<=n*m;i++){
v[j].push_back(i);
if(i<=n) cend[i]=t[i];
else cend[i]=cend[i-n]+t[i];
if(j!=n-) j++;
else j=;
} for(i=n*m+;i<=k;i++){
int min=;
for(j=;j<n;j++){
if(cend[v[j].front()]<min){
min=cend[v[j].front()];
s=j;
}
}
cend[i]=cend[v[s].back()]+t[i]; v[s].erase(v[s].begin());
v[s].push_back(i);
}
for(i=;i<q;i++){
scanf("%d",&f);
if((cend[f]-t[f])>*) printf("Sorry\n");
else{
printf("%02d:%02d\n",cend[f]/+,cend[f]%);
}
}
return ;
}

利用上次学会的vector容器可以非常方便的解决这个问题。本质就是一个队列问题。

刚开始还是没有思路,虽然知道是个队列但是无法下手,后来参考大神的代码明白了要将整个队伍分成两部分考虑,一部分是黄线内的,他们的时间可以直接根据队伍确定,另一部分是黄线外,就必须要通过队列的出入时间来确定。理清这个思路,代码就其实比较容易实现。

提交的时候遇到了几个问题,一个是我的变量命名,不要和vector方法重名,比如说end,以后代码中要注意;另一个是这道题的一个细节,之前没有把题意弄清,一定要注意最后的判断条件,本题容易出错的地方:是在17:00及以后开始服务的客户输出"Sorry",而不是17:00之前结束服务的输出"Sorry";如客户cId是16:59开始服务,服务时间为2,则输出的应该是17:01,而不是"Sorry"。这些都查好改过以后,就AC了。

 #include<stdio.h>
#include<string.h>
#include<math.h>
bool isp(int x)
{
if(x<)
return false;
if(x==||x==)
return true;
for(int i=;i*i<=x;i++)
{
if(x%i==)
return false;
}
return true;
}
int main(){
int n,d;
char r[];
int i,k,sum;
freopen("in.txt","r",stdin);
while(scanf("%d",&n)!=EOF){
if(n<)
break;
scanf("%d",&d);
if(isp(n)){
memset(r,'\0',sizeof(r));
i=;
sum=;
while(n!=){
r[i]=n%d+'';
n=n/d;
i++;
}
k=;
for(i=strlen(r)-;i>=;i--){
sum+=(r[i]-'')*k;
k*=d;
}
if(isp(sum))
printf("Yes\n");
else
printf("No\n");
}
else
printf("No\n"); }
return ;
}

还算是自己有思路的一道题,基本不用任何参考自己做了出来,就是有点小问题,一定要注意到原来的数字也要是质数!

还有对于质数的判断,这道题的方法就作为参考,以后的质数都这样来判断。

我自己的方法是将每一位都转化为为字符串来处理,还算是比较简单。

还有一种比较好的(高端)方法是利用队列,关键代码如下:

 if(isPrime(n))
{
queue<int>q;
while(n!=)
{
q.push(n%d);
n=n/d;
}
int reverse=;
while(!q.empty())
{
reverse=reverse*d;
reverse=reverse+q.front();
q.pop();
}
if(isPrime(reverse))
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}

其实吧。。思路都一样

 #include<stdio.h>
#include<string.h> int main(){
int n,b;
int i,j;
int c[];
scanf("%d %d",&n,&b);
if(n==){
printf("Yes\n0");
return ;
}
//memset(c,'\0',sizeof(c));
i=;
while(n!=){
c[i]=n%b;
n=n/b;
i++;
}
int l=i;
int flag=;
for(i=,j=l-;i<j;i++,j--){
if(c[i]!=c[j]){
flag=;
break;
}
}
if(flag==)
printf("No\n");
else
printf("Yes\n");
for(i=l-;i>=;i--)
printf(i==?"%d\n":"%d ",c[i]); return ;
}

其实是一道很简单的题,关键就是十进制的转换。转换之后的储存。利用最简单的int数组就可以了,完全不需要其他容器或是我自己用的char数组的辅助就可以解决。希望给自己一个启示,以后不要把这种题目给复杂化了。

还有一点是这种对称的题的判断,从两头一起移动判断最合适,结束条件为i<j即可。

 #include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
int n;
node *left;
node *right;
};
queue<node *> q;
vector<int> v;
node* buildtree(int *a,int *b,int n){
if(n<=) return NULL;
node *root=(node *)malloc(sizeof(node));
root->left=NULL;
root->right=NULL;
root->n=a[n-];
int i=;
for(i=;i<n;i++){
if(b[i]==a[n-])
break;
}
root->left=buildtree(a,b,i);
root->right=buildtree(a+i,b+i+,n-i-);
return root;
}
void levelorder(node *tree){
if(tree!=NULL) q.push(tree);
while(!q.empty()){
node *t=q.front();
if(t->left!=NULL) q.push(t->left);
if(t->right!=NULL) q.push(t->right);
v.push_back(t->n);
q.pop();
}
}
int main(){
int a[],b[];
int i,n;
freopen("in.txt","r",stdin);
scanf("%d",&n);
for(i=;i<n;i++)
scanf("%d",&a[i]);
for(i=;i<n;i++)
scanf("%d",&b[i]);
node *tree=buildtree(a,b,n);
levelorder(tree);
for(i=;i<n;i++){
printf(i==n-?"%d\n":"%d ",v[i]);
}
return ;
}

第一次接触树的题目,这是一个很经典的题目。包括了树的结构体的定义、树的生成、利用容器实现各种遍历、递归算法的实现。最关键的是遍历的转换,利用两个遍历还原整个二叉树(其中必须有一个是中序遍历)作为一个经典的题目,一定要利用这个题打开树类题目的思路。

A题进行时--浙大PAT 1011-1020的更多相关文章

  1. A题进行时--浙大PAT 1001-1010

    pat链接:http://pat.zju.edu.cn 1 #include<stdio.h> 2 int main(){ 3 int a,b; 4 int c; 5 while(scan ...

  2. A题进行时--浙大PAT 1021-1030

    1021: #include<stdio.h> #include<string.h> #include<vector> #include<queue> ...

  3. 浙大pat 1011题解

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  4. PAT(B) 1020 月饼(Java)

    题目链接:1020 月饼 (25 point(s)) 分析 将月饼(库存量,总售价,单价)封装成MoonCake类 Scanner会超时,用BufferedReader类读取数据 读取的时候用字符串数 ...

  5. 浙大PAT CCCC L3-013 非常弹的球 ( 高中物理题 )

    题目链接 题意 : 刚上高一的森森为了学好物理,买了一个“非常弹”的球.虽然说是非常弹的球,其实也就是一般的弹力球而已.森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不 ...

  6. 浙大 PAT 乙级 1001-1075 目录索引

    1001. 害死人不偿命的(3n+1)猜想 1002. 写出这个数 1003. 我要通过! 1004. 成绩排名 1005. 继续(3n+1)猜想 1006. 换个格式输出整数 1007. 素数对猜想 ...

  7. PAT乙级 1020. 月饼 (25)(只得到23分)

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

  8. PAT Basic 1020

    1020 月饼 (25 分) 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意 ...

  9. PAT 乙级 1020 月饼 (25) C++版

    1020. 月饼 (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 月饼是中国人在中秋佳节时吃的一种传统食 ...

随机推荐

  1. Android编译系统详解(一)

    ++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: http://blog.csdn.net/mr_raptor/art ...

  2. HBase学习笔记

    关键类: HBaseAdmin 管理Hbase的,主要负责DDL操作 HTable 管理表中数据,主要负责DML操作 1.为了避免热点,更多的建表方法 在Shell中: },{SPLITS=>[ ...

  3. Zookeeper集群和HBase集群

    1.部署Zookeeper集群(hadoop0\hadoop1\hadoop2) 1.1.在hadoop0上解压缩Zookeeper-3.4.5.tar.gz 1.2.执行命令 cp conf/zoo ...

  4. Ext2.0之Tabpanel AJAX远程加载多标签页面模式开发技巧

    目前开发的方式是采用远程load页面来实现多页面效果,类似于126邮箱多标签页效果.但是比126邮箱的方式更好,因为页面打开后是load到本地的,126似乎还会重新请求.在近期项目该开发方式已经基本成 ...

  5. 【设计模式】—— 单例模式Singleton

    前言:[模式总览]——————————by xingoo 模式意图 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有公开的调用方法. 模式结构 ...

  6. hdu 4911 Inversion (分治 归并排序 求逆序数)

    题目链接 题意:给n个数,求交换k次相邻的数之后的最小的逆序数对. 用分治的方法,以前在poj上做过这种题,昨天比赛的时候忘了.... 下面的归并排序还是以前的模板. #include <ios ...

  7. hdu 4901 The Romantic Hero (dp)

    题目链接 题意:给一个数组a,从中选择一些元素,构成两个数组s, t,使s数组里的所有元素异或 等于 t数组里的所有元素 位于,求有多少种构成方式.要求s数组里 的所有的元素的下标 小于 t数组里的所 ...

  8. uva11181Probability|Given

    枚举,条件概率. 2^20次方等于100w,是大约可以没准还能过的. 二进制枚举时,如果买东西的人恰好为r个,设概率为p,就将sum[i]+=p(sum[i]为r个人买东西时第i个人买东西的概率),t ...

  9. 【笨嘴拙舌WINDOWS】API

    如今,相对于大行其道的对象,服务,API概念的提出要早很多,却依然经久不衰:所谓万变不离其宗,如今很多服务(Web Services,云服务)的提供方式和API如出一辙. Windows API(Ap ...

  10. UVa 11542 (高斯消元 异或方程组) Square

    书上分析的太清楚,我都懒得写题解了.=_=|| #include <cstdio> #include <cstring> #include <cmath> #inc ...