本科组第一场
第一题
代码实现
参考实现
#include<bits/stdc++.h>
using namespace std;
void solve(){
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
if(b>=a) ans++;
}
cout<<ans<<" "<<n-ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
solve();
return 0;
}
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int ans=0;
for(int i=1;i<=n;i++){
int a=in.nextInt();
int b=in.nextInt();
if(b>=a) ans++;
}
System.out.print(ans+" "+(n-ans));
}
}
import sys
input=sys.stdin.readline
n=int(input())
ans=0
for _ in range(n):
a,b=map(int,input().split())
if b>=a:
ans+=1
print(ans,n-ans)
第二题
代码实现
参考实现
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
int ans=(int)(2e9);
for(int i=1;i<=n;i++){
int x;
cin>>x;
ans=min(ans,x);
cout<<ans<<" ";
}
return 0;
}
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int ans=(int)2e9;
for(int i=1;i<=n;i++){
int x=in.nextInt();
ans=Math.min(ans,x);
System.out.print(ans+" ");
}
}
}
import sys
input=sys.stdin.readline
n=int(input())
nums=list(map(int,input().split()))
ans=int(2e9)
for x in nums:
ans=min(ans,x)
print(ans,end=" ")
第三题
代码实现
参考实现
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=3e5+10;
const int mod=1e4+7;
int a[N];
int n,m;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
ll ans=1ll*n*m;
for(int i=1;i<=m;i++){
int l,r;
cin>>l>>r;
int x=lower_bound(a+1,a+n+1,l)-a;
int y=upper_bound(a+1,a+n+1,r)-a-1;
ans=((ans-(y-x+1))%mod+mod)%mod;
}
cout<<ans;
return 0;
}
import java.util.*;
public class Main{
static int lowerBound(int[] a,int n,int x){
int l=1,r=n,ans=n+1;
while(l<=r){
int mid=(l+r)>>1;
if(a[mid]>=x){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans;
}
static int upperBound(int[] a,int n,int x){
int l=1,r=n,ans=n+1;
while(l<=r){
int mid=(l+r)>>1;
if(a[mid]>x){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans;
}
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
int[] a=new int[n+1];
for(int i=1;i<=n;i++){
a[i]=in.nextInt();
}
Arrays.sort(a,1,n+1);
long ans=1L*n*m;
int mod=10007;
for(int i=1;i<=m;i++){
int l=in.nextInt();
int r=in.nextInt();
int x=lowerBound(a,n,l);
int y=upperBound(a,n,r)-1;
ans=((ans-(y-x+1))%mod+mod)%mod;
}
System.out.print(ans);
}
}
import sys
import bisect
input=sys.stdin.readline
n,m=map(int,input().split())
a=list(map(int,input().split()))
a.sort()
mod=10007
ans=n*m
for _ in range(m):
l,r=map(int,input().split())
x=bisect.bisect_left(a,l)
y=bisect.bisect_right(a,r)-1
ans=((ans-(y-x+1))%mod+mod)%mod
print(ans)
第四题
代码实现
参考实现
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N];
int n,q;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>q;
int sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
for(int i=1;i<=q;i++){
int x;
cin>>x;
if(sum==0||x==1){
cout<<sum<<"\n";
continue;
}
sum=0;
for(int j=1;j<=n;j++){
a[j]/=x;
sum+=a[j];
}
cout<<sum<<"\n";
}
return 0;
}
import java.io.*;
import java.util.*;
public class Main{
static class FastScanner{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
String next() throws Exception{
while(st==null||!st.hasMoreTokens()){
st=new StringTokenizer(br.readLine());
}
return st.nextToken();
}
int nextInt() throws Exception{
return Integer.parseInt(next());
}
}
public static void main(String[] args)throws Exception{
FastScanner in=new FastScanner();
StringBuilder sb=new StringBuilder();
int n=in.nextInt();
int q=in.nextInt();
int[] a=new int[n+1];
int sum=0;
for(int i=1;i<=n;i++){
a[i]=in.nextInt();
sum+=a[i];
}
for(int i=1;i<=q;i++){
int x=in.nextInt();
if(sum==0||x==1){
sb.append(sum).append("\n");
continue;
}
sum=0;
for(int j=1;j<=n;j++){
a[j]/=x;
sum+=a[j];
}
sb.append(sum).append("\n");
}
System.out.print(sb.toString());
}
}
import sys
input=sys.stdin.readline
n,q=map(int,input().split())
a=[0]+list(map(int,input().split()))
s=sum(a)
for _ in range(q):
x=int(input())
if s==0 or x==1:
print(s)
continue
s=0
for i in range(1,n+1):
a[i]//=x
s+=a[i]
print(s)
第五题
代码实现
参考实现
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+10;
const int mod=1e9+7;
int a[N][N],b[N][N],s[N][N];
int n,m;
void solve(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
cin>>b[i][j];
}
}
ll ans=0;
for(int mask=30;mask>=0;mask--){
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++){
s[i][j]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+((a[i][j]>>mask)&1);
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
int x=(b[i][j]>>mask)&1;
int x1=i,y1=j;
int x2=n-m+i,y2=n-m+j;
int c1=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];
int c0=(n-m+1)*(n-m+1)-c1;
if(x==0){
ans=(ans+1LL*(1<<mask)*c1)%mod;
}else{
ans=(ans+1LL*(1<<mask)*c0)%mod;
}
}
}
}
cout<<ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
solve();
return 0;
}
import java.io.*;
import java.util.*;
public class Main{
static final int N=1010;
static final int mod=1000000007;
static int[][] a=new int[N][N];
static int[][] b=new int[N][N];
static int[][] s=new int[N][N];
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=in.nextInt();
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
b[i][j]=in.nextInt();
}
}
long ans=0;
for(int mask=30;mask>=0;mask--){
for(int i=0;i<=n;i++){
Arrays.fill(s[i],0);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+((a[i][j]>>mask)&1);
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
int x=(b[i][j]>>mask)&1;
int x1=i,y1=j;
int x2=n-m+i,y2=n-m+j;
int c1=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];
int c0=(n-m+1)*(n-m+1)-c1;
if(x==0){
ans=(ans+1L*(1<<mask)*c1)%mod;
}else{
ans=(ans+1L*(1<<mask)*c0)%mod;
}
}
}
}
System.out.print(ans);
}
}
import sys
input=sys.stdin.readline
mod=10**9+7
n,m=map(int,input().split())
a=[[0]*(n+1)]
for _ in range(n):
a.append([0]+list(map(int,input().split())))
b=[[0]*(m+1)]
for _ in range(m):
b.append([0]+list(map(int,input().split())))
s=[[0]*(n+1) for _ in range(n+1)]
ans=0
for mask in range(30,-1,-1):
for i in range(n+1):
for j in range(n+1):
s[i][j]=0
for i in range(1,n+1):
for j in range(1,n+1):
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+((a[i][j]>>mask)&1)
for i in range(1,m+1):
for j in range(1,m+1):
x=(b[i][j]>>mask)&1
x1,y1=i,j
x2,y2=n-m+i,n-m+j
c1=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]
c0=(n-m+1)*(n-m+1)-c1
if x==0:
ans=(ans+(1<<mask)*c1)%mod
else:
ans=(ans+(1<<mask)*c0)%mod
print(ans)