省赛选拔赛——个人赛第一场
来源:互联网 发布:淘宝云客服培训 编辑:程序博客网 时间:2024/05/16 07:37
Rank 6,一共AC了6题,其中5道1Y。
感觉这场比赛打得还可以,能出的题都出了,就是一开始选题出现了问题,先去做了DP,导致很多水题出的晚了,时间上占了劣势,好在前5道题AC的题都是1Y,没有很多罚时。AC6题之后,看其他题都没什么思路,与学长们在知识储量上的劣势马上表现出来了,学长们继续打代码、出题,我只剩翻书、刷榜了,一直到结束。
A:POJ 2385
接苹果的题,是个DP。思路比较好想,27分钟1Y。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1010;int a[maxn];int d[maxn][35][2];int main(){ int t,w; while(~scanf("%d%d",&t,&w)){ memset(d,0,sizeof(d)); memset(a,0,sizeof(a)); int ans=0; for(int i=0;i<t;++i) scanf("%d",&a[i]),--a[i]; for(int i=t-1;i>=0;--i){ for(int j=0;j<=w;++j){ if(j){ d[i][j][0]=max(d[i+1][j-1][1]+(a[i]==1),d[i+1][j][0]+(a[i]==0)); d[i][j][1]=max(d[i+1][j-1][0]+(a[i]==0),d[i+1][j][1]+(a[i]==1)); } else d[i][j][0]=d[i+1][j][0]+(a[i]==0),d[i][j][1]=d[i+1][j][1]+(a[i]==1); } } for(int i=0;i<=w;++i) ans=max(ans,d[0][i][0]); printf("%d\n",ans); } return 0;}
B:POJ 2386
出了A题之后,看别人都A了好几道别的题了,就马上去做这道。
DFS判连通的题,模板题。44分钟1Y。
#include<iostream>#include<cstring>using namespace std;const int maxn=110;const int go[8][2]={{-1,-1},{0,-1},{1,-1},{-1,0},{1,0},{-1,1},{0,1},{1,1}};char g[maxn][maxn];int m,n,a[maxn][maxn];bool vis[maxn][maxn];void dfs(int u,int v,int cnt){ if(u<1||u>n||v<1||v>m) return; for(int i=0;i<8;++i){ int a=u+go[i][0],b=v+go[i][1]; if(!vis[a][b]&&g[a][b]=='W'){ vis[a][b]=true; dfs(a,b,cnt); } } return;}int main(){ ios::sync_with_stdio(false); while(cin>>n>>m){ memset(a,0,sizeof(a)); memset(g,0,sizeof(g)); memset(vis,0,sizeof(vis)); int cnt=0; for(int i=1;i<=n;++i){ cin.get(); for(int j=1;j<=m;++j) g[i][j]=cin.get(); } for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) if(!vis[i][j]&&g[i][j]=='W'){ vis[i][j]=true; dfs(i,j,++cnt); } cout<<cnt<<endl; } return 0;}
C:POJ 2387
清完水题开始做的,最小生成树的题,模板题,一开始忽略了,同结点之间可能有多条路径WA了2次。97分钟AC。
#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=1010;const long long inf=0x3f3f3f3f;long long w[maxn][maxn],v[maxn];long long d[maxn];int main(){ int t,n; while(cin>>t>>n){ memset(v,0,sizeof(v)); memset(w,0x3f,sizeof(w)); for(int i=0;i<t;++i){ long long u,v,len; cin>>u>>v>>len; u=n-u,v=n-v; w[u][v]=w[v][u]=min(len,w[u][v]); } for(int i=0;i<n;++i) d[i]=(i==0?0:inf); for(int i=0;i<n;++i){ long long x,m=inf; for(int y=0;y<n;++y) if(!v[y]&&d[y]<=m) m=d[x=y]; v[x]=1; for(int y=0;y<n;++y) d[y]=min(d[y],d[x]+w[x][y]); } cout<<d[n-1]<<endl; } return 0;}
D:POJ 2388
水题。求小于等于当前数的数的个数。48分钟1Y。
#include<iostream>#include<algorithm>using namespace std;const int maxn=10010;int a[maxn];int main(){ int n; while(cin>>n){ for(int i=0;i<n;++i) cin>>a[i]; sort(a,a+n); cout<<a[n/2]<<endl; } return 0;}
E:POJ 2389
大数相乘,套模板。57分钟1Y。
#include<iostream>#include<algorithm>#include<string>#include<cstdlib>#include<cstdio>#include<cstring>using namespace std;struct Big{ int len; long long data[1001]; void clear(){ memset(this,0,sizeof(*this)); } long long & operator [](int k){ return data[k]; } Big operator * (Big A){ Big temp; temp.clear(); temp[0]=data[0]*A[0]; temp.len=len+A.len-1; for(int i=1;i<=len;i++) for(int j=1;j<=A.len;j++){ temp[i+j-1]+=A[j]*data[i]; temp[i+j]+=temp[i+j-1]/10000; temp[i+j-1]%=10000; } while(temp[temp.len+1]) ++temp.len; while(!temp[temp.len]) --temp.len; if(!temp.len) temp.len=1; return temp; }};istream& operator >> (istream &in,Big& b){ b.clear(); string s,s0; if(!(in>>s)) return in; b[0]=s[0]=='-'?-1:1; if(s[0]=='-'||s[0]=='+') s0=s.substr(1); else s0=s; b.len=((int)s0.size()+3)/4; int k=(int)s0.size()%4; if(!k) k=4; for(int i=0;i<k;i++){ b[b.len]*=10; b[b.len]+=s0[i]-'0'; } for(int i=b.len-1;i>0;i--) b[b.len-i]=1000*(s0[4*(i-1)+k]-'0')+100*(s0[4*(i-1)+k+1]-'0')+10*(s0[4*(i-1)+k+2]-'0')+s0[4*(i-1)+k+3]-'0'; if(b.len==1&&!b[1]) b[0]=1; return in;}ostream& operator << (ostream &out,Big& b){ if(b[0]==-1) printf("-"); printf("%lld",b[b.len]); for(int i=b.len-1;i>=1;i--) printf("%04lld",b[i]); return out;}int main(){ Big a,b,c; while(cin>>a>>b){ c=a*b; cout<<c<<endl; } return 0;}
F:POJ 2390
水题,算利率。51分钟1Y。
#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=10010;int a[maxn];int main(){ double a,b,c; while(cin>>a>>b>>c){ a/=100.0; a+=1; a=pow(a,c); cout<<(int)(a*b)<<endl; } return 0;}
0 0
- 省赛选拔赛——个人赛第一场
- 省赛选拔赛——个人赛第二场
- 省赛选拔赛——个人赛第三场
- 省赛选拔赛——个人赛第四场
- 省赛选拔赛——组队赛第一场
- 湖南工业大学个人选拔赛第一场 题解
- 省赛选拔赛——组队赛第二场
- 省赛选拔赛——组队赛第三场
- 省赛选拔赛——组队赛第四场
- 第一场个人训练赛
- 暑期个人赛第一场
- 湖南工业大学个人选拔赛第一场 解题报告
- 湖南工业大学个人选拔赛第一场 解题报告
- 暑期个人赛--第一场--E
- 暑期个人赛--第一场--A -
- 暑期个人赛--第一场--B
- 暑期个人赛--第一场--C
- 暑期个人赛--第一场--D
- 在XSLT中非XPATH中的大括号{}的使用
- 菜鸟 该如何应对服务器被黑
- 50. PHP switch
- Rescue The Princess 山东省赛题 求三角形顶点 atan2求解
- P52 第34题 输入两个整数或三个整数得到最大值
- 省赛选拔赛——个人赛第一场
- UVA - 10815 - Andy's First Dictionary
- Eclipse Maven创建Web项目
- ViewPager实现的切换动画
- MySQL与Oracle的大小写问题
- 【Python】科学计算环境 —— Anaconda
- Bind9 日志
- cocos2d-x 无法打开文件“libbox2d.lib”解决
- android studio中导入第三方jar包和第三方库文件的方法