首页 > 其他分享 >美团2024年春招第一场笔试【技术】

美团2024年春招第一场笔试【技术】

时间:2024-03-21 14:35:44浏览次数:18  
标签:int 美团 long st 2024 年春招 ans include sum

#include<bits/stdc++.h>

using namespace std;

#define int long long 
const int N=666;

int arr[N][N];
int sum[N][N];
signed main(){
	
	int n;
	while(cin>>n){
		string s;
		for(int i=0;i<n;i++){
			cin>>s;
			for(int j=1;j<=n;j++){
				if(s[j-1]=='1') arr[i+1][j]=1;
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+arr[i][j];
			}
		}
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=n;j++){
//				cout<<sum[i][j]<<" ";
//			}
//			cout<<endl;
//		}
		vector<int> ans;
		ans.clear();
		for(int z=0;z<n;z++){
			int tot=0;
			if(z%2==0){
//				cout<<"z1:"<<z<<",tot:"<<0<<endl;
				ans.push_back(0);
				continue;
			} 
			int tmp=(z+1)*(z+1)/2;
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					int x=i,y=j;
					int q=z+1;
					if((x-z>=1)&&(y-z>=1)){
						int p=sum[x][y]-sum[x-q][y]-sum[x][y-q]+sum[x-q][y-q];
//						cout<<"p tmp:"<<p<<" "<<tmp<<endl; 
						if(p==tmp){
							tot++;
						}
					}
				}
			}
//			cout<<"z2:"<<z<<",tot:"<<tot<<endl;
			ans.push_back(tot);
		}
		for(int i=0;i<ans.size();i++) cout<<ans[i]<<endl;
	}
	
	
	return 0;
} 

#include<bits/stdc++.h>

using namespace std;
#define int long long
const int N  = 2e5+100;
int arr[N];
signed main(){
	int n,q;
	while(cin>>n>>q){
		int s=0;
		int t=0;
		for(int i=1;i<=n;i++){ 
			cin>>arr[i];
			s=s+arr[i];
			if(arr[i]==0) t++;
		}
		while(q--){
			int l,r;
			cin>>l>>r;
			cout<<s+l*t<<" "<<s+r*t<<endl;
		} 
	}
	return 0;
}

#include<bits/stdc++.h>

using namespace std;
#define int long long
const int N  = 2e5 + 100;
int arr[N];
signed main() {
    int n, k;
    while (cin >> n >> k) {
        string s;
        cin >> s;
        int sum = 0;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == 'M' || s[i] == 'T') sum++;
        }
        cout << min((int)s.size(), sum + k) << endl;
    }
    return 0;
}

需要逆向构图。反向加边

#include<bits/stdc++.h>

using namespace std;
#define int long long
const int N  = 2e5+100;
int u[N],v[N];
unordered_map<int,int> f;
struct St{
	int op;
	int x,y;
}st[N];
int getf(int v){
	if(v==f[v]){
		return f[v];
	}
	f[v]=getf(f[v]);
	return f[v];
}
int merge(int u,int v){
	int t1=getf(u);
	int t2=getf(v);
	if(t1!=t2){
		f[t1]=t2;
		return 0;
	}
	return 1;
}
map<pair<int,int>,int> mp,check;
signed main(){
	int n,m,q;
	while(cin>>n>>m>>q){
		mp.clear();
		f.clear();
		check.clear();
//		for(int i=0;i<=n;i++) f[i]=i;
		for(int i=1;i<=m;i++){
			cin>>u[i]>>v[i];
			f[u[i]]=u[i],f[v[i]]=v[i];
			check[make_pair(u[i],v[i])]=1;
			check[make_pair(v[i],u[i])]=1;
		}
		for(int i=1;i<=q;i++){
			cin>>st[i].op>>st[i].x>>st[i].y;
			// 重边 
			if(st[i].op==1){
				mp[make_pair(st[i].x,st[i].y)]=1;
				mp[make_pair(st[i].y,st[i].x)]=1;				
			}

		}
		for(int i=1;i<=m;i++){
			if(mp[make_pair(u[i],v[i])]!=1){
				merge(u[i],v[i]);
			}
		}
		vector<int> ans;
		ans.clear();
		for(int i=q;i>=1;i--){
			if(st[i].op==1){
				if(check[make_pair(st[i].y,st[i].x)]||check[make_pair(st[i].x,st[i].y)])
					merge(st[i].x,st[i].y);
			}else{
				if(f.find(st[i].x)==f.end()||f.find(st[i].y)==f.end()){
					ans.push_back(0);
					continue;
				}
				int res1=getf(st[i].x);
				int res2=getf(st[i].y);
				if(res1==res2){
					ans.push_back(1);
				}else{
					ans.push_back(0);
				}
			}
		}
		reverse(ans.begin(),ans.end());
		for(auto num:ans){
			if(num) cout<<"Yes";
			else cout<<"No";
			cout<<endl;
		}
	}
	return 0;
}

这道题目我先的是计算每一个位置后面的0的个数,然后再去计算前缀和。最后通过枚举左端点,二分定位右端点得到能到达的最右的位置。但是代码写的太臭了,没过。

下面的代码借鉴2024年美团春招第一场笔试(技术)

#include<iostream>
#include<unordered_map>
#include<cmath>
using namespace std;
typedef long long LL;
const int N = 1000010;
int n,k;
int s[N];
LL sum;
 
LL c2,c5;
LL cnt2[N],cnt5[N];
 
int getNums(int x,int num)
{
	int res=0;
	
	while(x%num==0)
	{
		x/=num;
		res++;
	}
	
	return res;
}
int main()
{
	cin>>n>>k;
	
	for(int i = 1;i<=n;i++)
	{
		int x;
		cin>>x;
		cnt2[i] = getNums(x,2);
		cnt5[i] = getNums(x,5);
		c2+=cnt2[i];
		c5+=cnt5[i];
	//	cout<<cnt2[i]<<" "<<cnt5[i]<<'\n';
	}
//	cout<<c2<<" "<<c5<<'\n';
	LL res=0;
	for(int l = 1, r= 1; r<=n;r++)
	{
		c2-=cnt2[r];
		c5-=cnt5[r];
		while(min(c2,c5)<k&&l<=n)
		{
			c2+=cnt2[l];
			c5+=cnt5[l];
			l++;
		}
		if(r>=l)
		res +=r-l+1;
	}
	printf("%lld",res);
}

标签:int,美团,long,st,2024,年春招,ans,include,sum
From: https://www.cnblogs.com/pengge666/p/18087302

相关文章

  • 【2024-03-20】带孩子累
    20:00古木阴中系短篷,杖藜扶我过桥东。沾衣欲湿杏花雨,吹面不寒杨柳风。                                                 ——《绝句·古木阴中系短篷》南宋·志南二宝......
  • 毕业季,BAT、华为、美团、字节跳动等面试经验免费分享
    毕业季,BAT、华为、美团、字节跳动等大厂的面试经验免费分享毕业季分享-BAT等大厂面试经验https://download.csdn.net/download/zhengyuanyehit/88995616毕业季分享-阿里面试经验https://download.csdn.net/download/zhengyuanyehit/88995580毕业季分享-华为面试经验http......
  • 算法模板 v1.10.2.20240320
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......
  • 适用于 Windows 2024 的 7 个最佳免费分区恢复软件分享
    无法确定2024年Windows上最好的免费分区恢复软件是什么?那么,我们可以提供帮助!我们测试了目前市场上可用的几种硬盘分区恢复软件-包括免费和付费版本。您现在所需要的只是-只需浏览列表并选择适合您要求的一项即可。继续阅读!错误地按错按钮或面临断电可能会导致一些严重......
  • 2024. 1华为od机试C卷【传递悄悄话】Python
    题目给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。输入描述0920-1-1157-1-1-1-132注:-1表示空节点输出......
  • 2024-03-21 跳出forEach循环的3个方法
    前言:return无法跳出forEach循环?(()=>{vara=[1,2,3,4,5];a.forEach((e,k)=>{if(k==2)return"";console.log(k);});console.log("=======forEachreturn跳不出循环=======");for(letindex=0;inde......
  • 2024年 智能机器人元年 —— 国内的智能机器人(humanoid)公司当下最大的压力(最为急迫的
    可以说,2024年是人形机器人的元年。我国在去年年底将发展智能机器人立为了第一线的重要科技发展方向,并计划在2024年、2025年建立出完整的产业链条,并培育出几家成熟的行业领先的智能机器人公司。而我们把目标从国内移向国外,我们可以看到国外也是同样将这个发展方向定位了首要发展方......
  • 【英伟达】GTC 2024|黄仁勋2小时演讲精华版|六大亮点| Blackwell GPU | DGX B200 | NV
    视频地址:https://www.youtube.com/watch?v=zBIddyiMXsU......
  • 备战2024 CKA考试?这些热门考题等你挑战!
    目录温馨提示1、考核知识:基于角色访问控制题目内容官方文档搜索关键字:RBAC做题解答2、考核知识:节点维护指定node节点不可用题目内容官方文档搜索关键字:drain-node做题解答3、考核知识:K8s版本升级题目内容官方参考文档做题解答4、考核......
  • 2024/03/18
    ABC344A-Spoiler题意:给出一个字符串,串中有两个$|$,输出$|$两边的内容。思路:我写的代码非常丑陋,模拟写的。赛后看到string的stl,感觉非常妙。rfind(str)是从字符串右侧开始匹配str#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;in......