首页 > 拼多多笔试1-2-3-4 100%
头像
小菜鸡9211
编辑于 2020-08-02 21:22
+ 关注

拼多多笔试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;
}


全部评论

(24) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐