# 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛

https://www.nowcoder.com/acm/contest/63/B

https://www.nowcoder.com/acm/contest/63/E
E 栗酱的数列

2
3 2 5
7 8 7
8 7
3 2 5
7 8 9
8 7

1
2

T≤15,
2≤m≤n≤2×105,
1≤ai,bi,k≤109

int a[N],b[N];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
rep(i,0,n) scanf("%d",&a[i]);
rep(i,0,m) scanf("%d",&b[i]);
int ans=0;
for(int i=0;i+m-1<n;i++)
{
int tmp=(a[i]+b[0])%k,cnt=1;
bool flag=1;
for(int j=i+1;j<i+m;j++,cnt++)
{
if(tmp!=(a[j]+b[cnt])%k)
{
flag=0;
break;
}
}
if(flag) ans++;
}
printf("%d\n",ans);
}
return 0;
}

https://www.nowcoder.com/acm/contest/63/F

64bit IO Format: %lld

1

8

1 ≤ m ≤ 1016

ll check(ll cnt)///检索解的个数
{
ll ans=0;
for(ll x=2; x*x*x<=cnt; x++) ans+=cnt/(x*x*x);
return ans;
}
int main()
{
ll m;
while(~scanf("%lld",&m))
{
ll le=2,mid,ri=1e16;
while(le<=ri)
{
mid=(le+ri)/2;
if(check(mid)>=m) ri=mid-1;
else le=mid+1;
}
printf("%lld\n",check(le)==m?le:-1);
}
return 0;
}


https://www.nowcoder.com/acm/contest/63/G

64bit IO Format: %lld

2
2
1 1000
2 1
5
1 3 5 2 4
1 2 3 4 5

2001
52

T≤10
1≤n≤103
1≤ai,bi≤103

dp[i][j]表示第i次取数后右面共取j个的最大值

dp[i][j]=max(dp[i-1][j-1]+i*a[n-j+1],dp[i-1][j]+i*a[i-j]);(j<=i)

#include <bits/stdc++.h>
using namespace std;
#define mem(a,n) memset(a,n,sizeof(a))
#define rep(i,a,n) for(int i=a;i<n;i++)
#define pb push_back
#define fi first
#define se second
#define sz(a) (a.size)
#define lb lower_bound
#define ub upper_bound
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef long long ll;
typedef unsigned long long ull;
const int MOD=1e9+7;
const double eps=1e-6;
const int INF=0x3f3f3f3f;
const double pi=acos(-1.0);
const int N=1e3+5;
const int dir[4][2]= {0,1,1,0,0,-1,-1,0};
int a[N],b[N],dp[N];
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
rep(i,1,n+1) scanf("%d",&a[i]);
rep(i,1,n+1) scanf("%d",&b[i]);
mem(dp,0);
dp[0]=a[1]*b[1];
dp[1]=a[n]*b[1];
rep(i,2,n+1)
{
for(int j=i;j>=0;j--)
{
if(!j) dp[j]+=a[i]*b[i];
else dp[j]=max(dp[j-1]+b[i]*a[n-j+1],dp[j]+b[i]*a[i-j]);
}
}
int mx=-INF;
rep(i,0,n+1) mx=max(mx,dp[i]);
printf("%d\n",mx);
}
return 0;
}

题目描述
自从学姐拒绝了qwb之后，qwb开始了疯狂的骚扰。qwb来到了一个公共电话亭，他摸摸口袋只有n元钱。
已知该公用电话的规则是，前3分钟一共收费x元（不到3分钟也要收x元），超过3分钟每分钟收费y元（不到1分钟也要收y元）。（先扣钱再打电话。）
那么问题来了，qwb最多骚扰学姐几分钟？（假设学姐不会挂qwb电话）

2
10 5 1
5 4 1

8
4

1≤T≤10000,
1≤n,x,y≤10000

int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,x,y;
scanf("%d%d%d",&n,&x,&y);
if(n<x) puts("0");
else if(3*y<=x)
printf("%d\n",3+(n-x)/y);
else if(3*y>x)
printf("%d\n",3*(n/x)+(n%x)/y);
else if(y>x)
printf("%d\n",3*(n/x));
}
return 0;
}


https://www.nowcoder.com/acm/contest/63/L
qwb与电阻

qwb闲着无聊，就开始拆自己的电脑，他发现主板上某个元件可以视作如图所示无限长的电路。已知该电路由三种不同的电阻r1,r2,r3构成，他想要计算ab之间的电阻。

2
1 1 1
1 2 3

2.73
5.46

T≤104,
1≤r1,r2,r3≤104

int main()
{
int T;
scanf("%d",&T);
while(T--)
{
double a,b,c,ans;
scanf("%lf%lf%lf",&a,&b,&c);
ans=a+b+c;
rep(i,0,100) ans=1.0/(1.0/ans+1.0/b)+a+c;
printf("%.2lf\n",ans);
}
return 0;
}