TT数鸭子
题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a6ce33fa08cc5f2cedd8c18e7427e5e5.png)
题解
暴力就可以解决,采用贪心策略从最大现金开始取 不断进行 整除和取模操作
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要抵御宇宙射线
题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2645d646262444ad805e1b88ec8cfda8.png)
题解
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;
}
宇宙狗的危机
题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4fdfc9c15266a66673e3b41e28bf310e.png)
对于这道题除了暴力,确实没想到解题方法因此附上认为比较好的一篇博客link题解虽有部分笔误,但看完之后茅塞顿开(真的没意识到这是一道dp2333)。