拼多多笔试1-2-3-4 100%

第三题目 100%
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
#include<string>
#include<stack>
#include<queue>
using namespace std;
int M,N,T;
struct item{
	int X,Y;
};
item m[100100],n[100100];
int minX[100100];
bool cmp(const item &a,const item &b){
	return a.Y < b.Y;
}
int ans = 0x7f7f7f7f;
int main(){
	scanf("%d%d%d",&M,&N,&T);
	if(T==0){
		cout<<"0";
		return 0;
	}
	for(int i = 0;i < M;i++){
		scanf("%d%d",&m[i].X,&m[i].Y);
	}
	for(int i = 0;i < N;i++){
		scanf("%d%d",&n[i].X,&n[i].Y);
	}
	sort(m,m+M,cmp);
	sort(n,n+N,cmp);
	for(int i = 0;i < M;i++){
		if(m[i].Y >= T && m[i].X < ans){
			ans = m[i].X;
		}
	}
	for(int i = 0;i < N;i++){
		if(n[i].Y >= T && n[i].X < ans){
			ans = n[i].X;
		}
	}
	minX[N] = 0x7f7f7f7f;
	for(int i = N - 1;i >= 0;i--){
		minX[i] = min(n[i].X,minX[i + 1]);
	}
	int j = N - 1;
	for(int i = 0;i < M;i++){
		while(j >= 0 && n[j].Y + m[i].Y >= T)--j;
		if(n[j + 1].Y + m[i].Y >= T && minX[j + 1] + m[i].X < ans){
			ans = minX[j + 1] + m[i].X;
		}
	}
	if(ans >= 0x7f7f7f7f) cout<<"-1";
	else cout<<ans;
	return 0;
}

第四题  插头DP 基础题 100%
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<vector>
#include<string>
#include<stack>
#include<queue>
using namespace std;
const int mod = 1000000009;
int f[2][7 * 7 * 7* 7 * 7* 7];
int pow7[15];
char w[15][15];
int main(){
	pow7[0] = 1;
	for(int i = 1;i < 15;i++){
		pow7[i] = pow7[i - 1] * 7;
	}
	for(int i = 0;i < 6;i++){
		scanf("%s",w[i]);
	}
	int now = 0;
	f[now][0] = 1;
	for(int i = 0;i < 6;i++){
		for(int j = 0; j < 6;j++){
			now ^= 1;
			for(int k = 0;k < 7 * 7 * 7* 7 * 7 * 7;k++){
				f[now][k] = 0;
				if(j == 0 || k / pow7[j] % 7 != k / pow7[j - 1] % 7 || k / pow7[j] % 7 == k / pow7[j - 1] % 7 && k / pow7[j] % 7 == 0){
					if(w[i][j] == '#' && k / pow7[j] % 7 != 0){
						for(int l = 0;l < 7;l++){
							if(l != k / pow7[j] % 7){
								f[now][k] = (f[now][k] + f[now^1][k /pow7[j+1] * pow7[j + 1] + l * pow7[j] + k % pow7[j]]) % mod;
							}
						}
					}else if(w[i][j] != '#' && k / pow7[j] % 7 == 0){
						for(int l = 0;l < 7;l++){
							f[now][k] = (f[now][k] + f[now^1][k /pow7[j+1] * pow7[j + 1] + l * pow7[j] + k % pow7[j]])% mod;
						}
					}
				}
			}
		}
	}
	int ans = 0;
	for(int k = 0;k < 7 * 7 * 7* 7 * 7 * 7;k++){
		ans = (ans + f[now][k]) % mod;
	}
	cout<<ans;
	return 0;
}


#拼多多##笔试题目#
全部评论
第四个转移方程是啥啊,推的人脑壳疼
3 回复
分享
发布于 2020-08-02 21:27
大佬贴下第二题骰子分类吧。谢谢
2 回复
分享
发布于 2020-08-02 21:24
联想
校招火热招聘中
官网直投
能讲下思路吗?谢谢,第四题
1 回复
分享
发布于 2020-08-02 21:20
我要是黄峥就直接录取你,年薪六十万
1 回复
分享
发布于 2020-08-02 21:45
大佬!
1 回复
分享
发布于 2020-08-02 22:11
f[now][k] = (f[now][k] + f[now^1][k /pow7[j+1] * pow7[j + 1] + l * pow7[j] + k % pow7[j]]) % mod; 大佬,能简单解释一下上面这行代码吗,我知道 k 代表的是当前 第 i 行的状态吧,然后 f[now][k] 需要通过上一行的状态推过来,但是为什么不需要把上一行的状态都列举一遍呢?看代码的意思是通过当前行的状态来得到的上一行的状态(除了 位于 (i,j) 的农作物和当前行不一样,其他位置和当前行都一样吗?)😥
1 回复
分享
发布于 2020-08-04 11:53
大佬牛逼!
点赞 回复
分享
发布于 2020-08-02 21:16
lz,想问一下那个第四题的例子为什么是答案是630
点赞 回复
分享
发布于 2020-08-02 21:23
第3题,暴力都能过。。。java不行
点赞 回复
分享
发布于 2020-08-02 21:26
求讲解一下第四题吧。。。
点赞 回复
分享
发布于 2020-08-02 21:29
求讲解一下第四题吧。。。
点赞 回复
分享
发布于 2020-08-02 21:30
第三题为什么直接j--了,而不用在j--的while循环中判断热量值之和与ans的大小呢
点赞 回复
分享
发布于 2020-08-02 21:39
第四题算组合好麻烦,推了一种最简单的情况,a了48%就没再写了😥
点赞 回复
分享
发布于 2020-08-02 21:40
第三题排序+二分有问题吗,不知道为啥死活30%😂,大佬有时间我可以把代码给你一览
点赞 回复
分享
发布于 2020-08-02 21:43
为什么美味度具有单调性质??
点赞 回复
分享
发布于 2020-08-02 21:43
巨佬
点赞 回复
分享
发布于 2020-08-02 21:44
真的猛
点赞 回复
分享
发布于 2020-08-02 22:10
第三题和大佬思路一样,只过了30%,太难受了。。
点赞 回复
分享
发布于 2020-08-02 22:30
ACM大佬吧
点赞 回复
分享
发布于 2020-08-02 22:48
m
点赞 回复
分享
发布于 2020-08-03 06:36

相关推荐

头像
不愿透露姓名的神秘牛友
04-18 01:10
字节抖音 后端开发工程师 15k-20k
点赞 评论 收藏
转发
点赞 评论 收藏
转发
11 59 评论
分享
牛客网
牛客企业服务