贪吃的Diana

该问题是一个编程题,描述了Diana需要每天摄入足够的饱腹度才能开心。给定N天的外卖数据,计算出Diana有多少天没能达到饱腹度要求。提供的C++代码用于解决这个问题,通过遍历外卖单来统计不开心的天数。
摘要由CSDN通过智能技术生成

题目描述

小草莓 Diana 同学是众所周知的大胃王,如果每天无法吃够总计 K 饱腹度的外卖,她就会不开心。

今天她的朋友 —— 帅气的 Queen 同学拿到了 Diana 之前 N 天点的所有外卖的外卖单,共计 S 份。  

每份外卖单上有两个数字,ni 和 ki ,分别表示这份外卖是 Diana 是在这 N 天里的 第 ni 天点的,且这份外卖饱腹度为 ki 。

现在她想要计算之前 N 天中,Diana有多少天是不开心的,你能帮帮她吗?


 

输入描述:

 

第一行输入 N 和 K 和 S,

接下来 S 行,其中第 i 行代表一份外卖单,包含两个整数 ni 和 ki,

表示 Diana 在第 ni 天,吃了一份饱腹度为 ki 的食物

输出描述:

输出Diana 不开心的天数。

输入

10 5 5 4 6 2 5 3 4 3 1 1 1

输出

7

说明

Queen拿到了之前10天里,Diana的五份食物清单,且Diana每天需要至少吃饱腹度为 5 的食物才能开心。

其中,Diana 在第2天和第3天,都吃到了饱腹度之和为 5 的食物,而在第4天,吃到了饱腹度之和为 6 的食物。

在第1天,Diana 只吃到了饱腹度之和为 1 的食物。

在第5天,第6天,第7天,第8天,第9天,第10天,Diana 没有吃到任何食物。(所以也没有任何清单)

所以,Diana 在之前10天中,只有3天吃饱了,剩下有7天是不开心的。答案为7。

 

备注:

0 < N,S ≤ 105,
0 ≤ K ≤ 109,
0 < ni ≤ N,
0 ≤  ki ≤ 104

 

#include "bits/stdc++.h"
using namespace std;
int main()
{
    int n,k,s;
    cin>>n>>k>>s;
    int x[10000001]={0};int cnt=0;
    for(int i=0;i<s;i++)
    {
        int a,b;cin>>a>>b;
        x[a]+=b;
    }
    for(int i=1;i<=n;i++)
    {
        if(x[i]<k)cnt++;
    }
    cout<<cnt;
}

Diana算法是一种聚类算法,用于将数据集中的数据分为多个组或簇。下面是使用Python实现Diana算法的示例代码: ```python import numpy as np from scipy.spatial.distance import cdist def diana(X, k): n, m = X.shape labels = np.zeros(n) clusters = [np.arange(n)] while len(clusters) < k: # find the cluster with the largest diameter diameters = np.zeros(len(clusters)) for i, cluster in enumerate(clusters): centroid = X[cluster].mean(axis=0) diameters[i] = cdist(X[cluster], [centroid]).max() largest_cluster_idx = np.argmax(diameters) largest_cluster = clusters[largest_cluster_idx] # split the largest cluster using k-means centroid1, centroid2 = kmeans(X[largest_cluster], 2) cluster1 = largest_cluster[labels[largest_cluster] == 0] cluster2 = largest_cluster[labels[largest_cluster] == 1] new_clusters = [cluster1, cluster2] # update labels and clusters for i, new_cluster in enumerate(new_clusters): labels[new_cluster] = i clusters.pop(largest_cluster_idx) clusters.extend(new_clusters) return labels def kmeans(X, k, max_iter=100): n, m = X.shape centroids = X[np.random.choice(n, k, replace=False)] for _ in range(max_iter): labels = cdist(X, centroids).argmin(axis=1) new_centroids = np.zeros((k, m)) for i in range(k): new_centroids[i] = X[labels == i].mean(axis=0) if np.all(centroids == new_centroids): break centroids = new_centroids return centroids[0], centroids[1] ``` 在上面的代码中,我们使用了Scipy库中的cdist函数来计算数据点之间的欧几里得距离。我们还实现了一个kmeans函数,用于Diana算法中的分裂步骤。在主函数diana中,我们首先将所有数据点归为一个簇,然后在每个迭代中找到直径最大的簇并将其分裂成两个新的簇。最终,我们得到k个簇,并返回每个数据点所属的簇标签。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值