原题链接:https://ac.nowcoder.com/acm/contest/3667/B
Code(C++):
#include
using namespace std;
const int N=1e6+10;
int row[N],col[N];
int main(){
int n,m; cin>>n>>m;
int x,maxn=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>x;
row[i]+=x;
col[j]+=x;
}
}
for(int i=1;i<=n;i++){
if(row[i]>maxn)
maxn=row[i];
}
for(int j=1;j<=m;j++){
if(col[j]>maxn)
maxn=col[j];
}
cout<<maxn<<endl;
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/C
Code1(C++):
#include
#include
using namespace std;
char ch[105][105];
int main(){
int n,m;
while(cin>>n>>m){
memset(ch,'\0',sizeof(ch));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>ch[i][j];
bool vis=false;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(ch[i][j]=='*'){
int sum=0;
if(ch[i-1][j]=='#') sum++;
if(ch[i+1][j]=='#') sum++;
if(ch[i][j-1]=='#') sum++;
if(ch[i][j+1]=='#') sum++;
if(sum>=2){
vis=true;
cout<<i<<' '<<j<<endl;
}
}
}
}
if(!vis) cout<<-1<<endl;
}
return 0;
}
Code2(C++):
//bfs做法
#include
#include
#include
using namespace std;
int n,m,cnt;
char ch[105][105],vis[105][105];
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
struct node{
int x,y;
}a[105];
bool cmp(node a, node b){
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
void dfs(int x, int y){
for(int i=0;i<4;i++){
int xx=x+dir[i][0];
int yy=y+dir[i][1];
if(!vis[xx][yy] && ch[xx][yy]=='*' && xx>=1 && xx<=n && yy>=1 && yy<=m){
vis[xx][yy]=1;
continue;
}
if(vis[xx][yy]==1 && ch[xx][yy]=='*'){
vis[xx][yy]=2;
a[cnt].x=xx;
a[cnt++].y=yy;
}
}
}
int main(){
while(cin>>n>>m){
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
scanf("%s",ch[i]+1);
cnt=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(ch[i][j]=='#') dfs(i,j);
}
sort(a,a+cnt,cmp);
if(!cnt) cout<<-1<<endl;
else{
for(int i=0;i<cnt;i++)
cout<<a[i].x<<' '<<a[i].y<<endl;
}
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/D
Code(C++):
#include
using namespace std;
const int N=2e6+10;
int a[N],n,m;
bool check(int x){
int sum=0;
for(int i=1;i<=n;i++){
if(a[i]%x==0) sum+=a[i]/x;
else sum+=(a[i]/x+1);
if(sum>m) return false;
}
return sum<=m;
}
int main(){
while(cin>>n>>m){
int maxn=0;
for(int i=1;i<=n;i++){
cin>>a[i];
maxn=max(maxn,a[i]);
}
int l=1,r=maxn,ans=maxn;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout<<ans<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/E
Code(C++):
#include
#include
using namespace std;
int a[105];
int main(){
int n;
while(cin>>n){
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
cout<<a[n-1]<<' '<<a[2]<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/H
Code(C++):
#include
using namespace std;
int f[12],ch[12][600][600];
int main(){
f[1]=1;
for(int i=2;i<=10;i++) //第几阶段
f[i]=f[i-1]*2; //对应的行列数
ch[1][1][1]=1; //第一阶段
for(int i=2;i<=10;i++){
for(int j=1;j<=f[i-1];j++){ //上半部分
for(int k=1,l=1;k<=f[i];k++,l++){
if(l>f[i-1]) l=1;
ch[i][j][k]=ch[i-1][j][l];
}
}
for(int j=f[i-1]+1,row=1;j<=f[i],row<=f[i-1];j++,row++){ //下半部分
for(int k=1;k<=f[i-1];k++) //左下部分
ch[i][j][k]=!ch[i-1][row][k];
for(int k=f[i-1]+1,l=1;k<=f[i];k++,l++) //右下部分
ch[i][j][k]=ch[i-1][row][l];
}
}
int t; cin>>t;
while(t--){
int n; cin>>n;
for(int i=1;i<=f[n];i++){
for(int j=1;j<=f[n];j++){
cout<<ch[n][i][j]<<' ';
}
cout<<endl;
}
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/I
Code(C++):
#include
#define ll long long
using namespace std;
int main(){
ll k;
while(cin>>k){
int ans=0;
while(k){
ans+=(k%2);
k/=2;
}
cout<<ans<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/J
Code(C++):
#include
#include
#include
using namespace std;
const int N=5e5+10;
int a[N],dp[N];
inline int read(){
char c=getchar(); int num=0;
for(;!isdigit(c);c=getchar());
for(;isdigit(c);c=getchar())
num=num*10+c-'0';
return num;
}
int main(){
int t; t=read();
while(t--){
memset(dp,0,sizeof(dp));
int n; n=read();
for(int i=1;i<=n;i++)
a[i]=read();
int ans=0;
for(int i=1;i<=n;i++){
dp[a[i]]=dp[a[i]-1]+1;
ans=max(ans,dp[a[i]]);
}
cout<<n-ans<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/3667/K
Code(C++):
#include
#include
#include
using namespace std;
char str[1010];
int vis[10],fa[10];
int find(int x){
while(x!=fa[x])
x=fa[x];
return x;
}
int main(){
int t; cin>>t;
while(t--){
int n; cin>>n;
memset(vis,0,sizeof(vis));
for(int i=0;i<10;i++)
fa[i]=i;
for(int i=1;i<=n;i++){
scanf("%s",str);
int t = str[0]-'0';
vis[str[0]-'0']=1;
int len=strlen(str);
for(int i=1;i<len;i++){
vis[str[i]-'0']=1;
int x=find(t);
int y=find(str[i]-'0');
if(x!=y) fa[x]=y;
}
}
set<int> s;
for(int i=0;i<10;i++){
if(vis[i]) s.insert(find(i));
}
cout<<s.size()<<endl;
}
return 0;
}