寒假1
C:
分析:等待的时间越短,不满意度就越低,所以我们把办事所需时间低的排在前面,然后用前缀和可以计算不满意值,然后已知插队进来之后后面每个人都会加tc不满意值,假设后面有x人,就是x*tc,那么m/tc就是插队后面的人数,于是易知答案为t[n-x]+tc
代码:void solve() {
int n,q,tc;
cin>>n>>q>>tc;
int t[n];
for(int i=1;i<=n;i++)
cin>>t[i];
sort(t+1,t+1+n);
for(int i=1;i<=n;i++)
t[i]=t[i-1]+t[i];
while(q--){
int m;cin>>m;
int s=min(n,m/tc);
cout<<t[n-s]+tc<<'\n';
}
}
L:
分析:公式计算阴影面积即可
代码:
void solve() {
int c,d,h,w;
cin>>c>>d>>h>>w;
cout<<3*c*w<<endl;
}
E:
题目:
分析:暴力dfs枚举情况即可解决问题
代码:void dfs(int x)
{
if(x==m)
{
int t=1;
for(int i=2;i<=n;i++)
{
if(a[1]<a[i])
t++;
}
ans=min(t,ans);
return;
}
a[u[x]]+=3;
dfs(x+1);
a[u[x]]-=3;
a[v[x]]+=3;
dfs(x+1);
a[v[x]]-=3;
a[u[x]]++;
a[v[x]]++;
dfs(x+1);
a[u[x]]--;
a[v[x]]--;
}
void solve() {
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=0;i<m;i++)
{
cin>>u[i]>>v[i];
}
ans=n;
dfs(0);
cout<<ans<<endl;
}