1. 程式人生 > 實用技巧 >牛客多校 —— 第六場

牛客多校 —— 第六場

傳送門

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