SDU程序设计第四次月模拟

TT数鸭子

题目

在这里插入图片描述

题解

暴力就可以解决,采用贪心策略从最大现金开始取 不断进行 整除和取模操作

C++代码

#include<iostream>

using namespace std;

long long ai;
int n,k,ret=0;
int num[15];

bool jud(long long x){
	for(int i=0;i<10;i++) num[i] = 0;
	if(x==0) num[0]++;
	while(x){
		num[x%10]++;
		x/=10;
	}
	int tmp = 0;
	for(int i=0;i<10;i++){
		if(num[i] != 0) tmp++;
	}
	if(tmp<k) return true;
	return false;
}
int main(){
	cin>>n>>k;
	for(int i=0;i<n;i++){
		cin>>ai;
		if(jud(ai)) ret++; 
	}
	cout<<ret<<endl;
	return 0;
} 

ZJM要抵御宇宙射线

题目

在这里插入图片描述

题解

1.只考虑罩子最小也就是找图中某个点他能到的最远距离是最小的
2.考虑同距离 只需要依次判断两个中心点的x 和 y
PS:如果将点排序后遍历可以做到不进行比较比如后面的x y一定依次小于前面的x y

C++代码

#include<iostream>
#include<stdio.h>
using namespace std;
const int maxn = 1e3+10;
int x[maxn],y[maxn];
int n;
long long mi = 1e11;
long long mx = -1;
int ansx,ansy;

int main(){
	int a,b;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>x[i]>>y[i];
	}
	//最大的最小 
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(i==j) continue;
			int dx = x[i]-x[j];
			int dy = y[i]-y[j];
			if(dx*dx+dy*dy > mx)
				mx = dx*dx+dy*dy;
		}
		if(mx < mi){
			ansx = x[i],ansy = y[i],mi = mx;
		}else if(mx == mi){
			if(ansx < x[i] || (ansx == x[i] && ansx > y[i])) ansx = x[i],ansy = y[i];
		}
	}
	printf("%.2lf %.2lf \n%.2lf",(float)ansx,(float)ansy,(float)mi);
	return 0;
}

宇宙狗的危机

题目

在这里插入图片描述

对于这道题除了暴力,确实没想到解题方法因此附上认为比较好的一篇博客link题解虽有部分笔误,但看完之后茅塞顿开(真的没意识到这是一道dp2333)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值