牛客多校 —— 第六场

传送门

B. Binary Vector

题意

数据范围

样例

题解

Code

cpp

C. Combination of Physics and Maths

题意

给定一个\(N\)行,\(M\)列的矩阵,求子矩阵的和除这个子矩阵最后一行的和最大值

数据范围

\(1\leq N,M\leq 200\)
\(1\leq a_{i,j} \leq 5\times 10^{4}\)

样例

  • 输入

1
3 3
1 3 5
6 8 9
2 7 4

  • 输出

4.50000000

题解

贪心只需要考虑一列的压强即可,假如\(\frac{a}{b} < \frac{c}{d}\),那么必有\(\frac{a}{b}<\frac{a+c}{b+d}<\frac{c}{d}\)

Code

cpp
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define db double
const int N=210;
int a[N][N];
int n,m;
int _;
int main(){
    for(scanf("%d",&_);_;_--){
        scanf("%d%d",&n,&m);

        rep(i,0,n) rep(j,0,m) scanf("%d",&a[i][j]);
        db ans=-1e3;
        rep(j,0,m){
            db sum=0;
            rep(i,0,n){
                sum+=a[i][j];
                ans=max(ans,sum/a[i][j]);
            }
        }
        printf("%.8lf\n",ans);
    }
}

E.Easy Construction

题意

给定一个\(N,P\),构造一个\(1\sim N\)的排列,使得长度为\(i\in [1,N]\) 的连续子序列的和\(mod \; N = P\)

数据范围

\(1\leq N\leq 5000\)
\(1\leq P < N\)

样例

  • 输入

2 1

  • 输出

1 2

  • 输入

3 1

  • 输出

-1

题解

先判断一下当前\(N\)个数的和模\(N\)是否满足,不满足直接输出-1
如果满足,判断\(k\)为0的情况,

  • 不为0,输出k
  • 为0不操作

然后以\(k\)为中心向两边走即可,最后判断是否有剩下的即可

Code

cpp
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define per(i,a,n) for(int i=n-1;i>=a;i--)
#define ll long long
int n,k;
int sum=0;
int main(){
    scanf("%d%d",&n,&k);
    rep(i,1,n+1) sum+=i;
    if(sum%n != k) {
        puts("-1");
        return 0;
    }
    
    int i=1;
    int rec=n;
    printf("%d ",n);
    rec--;
    if(k!=0){
        printf("%d ",k);
        rec--;
    }
    while(rec) {
        printf("%d ",k+i);
        printf("%d ",n-k-i);
        i++;
        rec-=2;
    }
    if(rec) printf("%d ",k+i);
} 

K.K-bag

题意

多组样例,给定长度为\(N\)的序列\(A\),以及一个数\(K\)表示\(i\)

数据范围

样例

题解

Code

cpp

猜你喜欢

转载自www.cnblogs.com/hhyx/p/13397159.html
今日推荐