关于D3T5
  • 板块学术版
  • 楼主Madsome
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/14 21:20
  • 上次更新2023/11/3 09:48:31
查看原帖
关于D3T5
363166
Madsome楼主2023/7/14 21:20
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int size=(1<<20)+1;
char buf[size],*p1=buf,*p2=buf;
char buffer[size];
int op1=-1;
const int op2=size-1;
inline char readchar(){
	if(p1!=p2) {
		return *p1++;
	}
	return p1==(p2=(p1=buf)+fread(buf,1,size-1,stdin))?EOF:*p1++;
}
inline void flush(){
	fwrite(buffer,1,op1+1,stdout),op1=-1;
}
inline void writechar(const char &x) {
	if(op1==op2) flush();
	buffer[++op1]=x;
}
#ifndef ONLINE_JUDGE
#define readchar getchar
#endif
#define putchar writechar
inline long long read() {
	int s=1,c=readchar(),x=0;
	while(c<=32) {
		c=readchar();
	}
	if(c=='-') {
		s=-1,c=readchar();
	}
	for(; ('0'<=c && c<='9'); c=readchar()) {
		x=x*10+c-'0';
	}
	return x*s;
}
inline void print(long long x) {
	if(x<0) {
		writechar('-'),x=-x;
	}
	char s[25];
	int n=0;
	while(x||!n) {
		s[n++]='0'+x%10,x/=10;
	}
	while(n--) {
		writechar(s[n]);
	}
} 
const int N=3005;
int t,T,n,i,j,k,o,p,m,x,y,z,tmp,a[N][N],l[N],h[N],as[N*N];
signed main(){
    n=read();m=read();k=read();
	for(i=1;i<=n;i++)
	 for(j=1;j<=m;j++)
	   a[i][j]=read();
	for(i=1;i<=n;i++)
	  for(j=1;j<=m;j++)
	    h[i]+=a[i][j];
	for(i=1;i<=m;i++)
	  for(j=1;j<=n;j++)
	    l[i]+=a[j][i];
	for(i=1;i<=n;i++)
	  for(j=1;j<=m;j++)
	   as[++t]=h[i]+l[j]-a[i][j];
	nth_element(as+1,as+1+k,as+t+1);
	printf("%d",(as[k]+n+m-2)/(n+m-1));
    return 0;
} 

代码长这个样子,然后WA#22,原因是溢出int

但改成long long 前面的点就会错,非常难绷...

求助大佬帮忙调一下

2023/7/14 21:20
加载中...