传送门
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