第一题 题意难理解。。。。反过来接雨水就完事了
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e5+100; int T,n,m; int A[maxn]; int R[maxn]; int main() { int w,l; while(cin>>w>>l) { for(int i=1;i<=l;i++) { cin>>A[i]; A[i]=100-A[i]; } R[l+1]=0; for(int i=l;i>=1;i--) R[i]=max(R[i+1],A[i]); int res=0; for(int i=1;i<=l;i++) { res+=w*(R[i]-A[i]); } cout<<res<<endl; } }
第二题 暴搜就完事了
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e5+100; int T,n,m; int A[maxn]; int sx,sy; int ex,ey; int vis[11][11]; int dr[][2]={-1,0,1,0,0,-1,0,1}; int res; void dfs(int x,int y,int cnt) { if(x==ex&&y==ey) { if(cnt==n*m-1) res++; return ; } for(int i=0;i<4;i++) { int xx=x+dr[i][0]; int yy=y+dr[i][1]; if(!(xx>=0&&xx<n&&yy>=0&&yy<m)) continue; if(vis[xx][yy]) continue; vis[xx][yy]=1; dfs(xx,yy,cnt+1); vis[xx][yy]=0; } } int main() { while(cin>>n>>m) { cin>>sx>>sy; cin>>ex>>ey; res=0; memset(vis,0,sizeof(vis)); vis[sx][sy]=1; dfs(sx,sy,0); cout<<res<<endl; } }
全部评论
(5) 回帖