深信服笔试题解
第一题 题意难理解。。。。反过来接雨水就完事了
#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;
}
}#深信服##笔试题目#
查看1道真题和解析
