当前位置: 首页 > news >正文

云南昆明网站建设公司武汉建站优化厂家

云南昆明网站建设公司,武汉建站优化厂家,做公司网站客户群体怎么找,做个网站app吗Problem - B - Codeforces 题目大意:小明在数轴上要从1走到n,其中某些坐标上有一些饼干店,共m个,小明身上也有无限多的饼干,它首先一定会在1的位置吃一个饼干,在每个饼干店的位置会吃一个,在前…

Problem - B - Codeforces

题目大意:小明在数轴上要从1走到n,其中某些坐标上有一些饼干店,共m个,小明身上也有无限多的饼干,它首先一定会在1的位置吃一个饼干,在每个饼干店的位置会吃一个,在前d个位置没有吃饼干(加入当前位置为i,在[i-d+1,i]之间没有吃饼干),就会吃一个,以上三种情况如果有某些同时发生,只会吃一个,现在要求移除一个商店,问小明吃的最少的饼干数是多少,且满足这个饼干数的方案有多少种

2<=n<=1e9;2<=m<=min(1e5,n)

思路:要知道移除哪些商店最好,只能是枚举每个商店,维护移除该商店前和移除后的饼干数,移除前的饼干数,直接用原始的数组求,我们在位置1的位置吃一个,然后对于第一个商店,产生的贡献就是(a[i]-1)/d,向上取整,对于后面的每个商店,因为前一个商店已经算过了,所以产生的贡献就是(a[i]-a[i-1])/d,向上取整,这样就算出了初始不移除商店的饼干数

接下来枚举每个商店,先用总贡献减去这个商店的贡献,先减去自身的1,然后减去前一部分也就是(a[i]-a[i-1]/d),因为不能重复减去这个商店的贡献,所以如果是整除的话,要再+1,然后减去后一部分(a[i+1]-a[i])/d,因为不能减去右边商店的贡献,所以如果整除也要+1。然后再加上移除这个商店后,i-1和i+1之间的贡献,也就是(a[i+1]-a[i-1])/d,同理因为不能算边界,所以如果整除要-1。

之后就得到了每个商店移除前后的饼干数,维护最小值并统计最小值数量即可

#include<bits/stdc++.h>
//#include<__msvc_all_public_headers.hpp>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
const int INF = 0x7fffffff;
const ll MOD = 998244353;
int n;
ll a[N];
void init()
{}
void solve()
{cin >> n;init();ll m, d;cin >> m >> d;a[m + 1] = n;//方便处理边界for (int i = 1; i <= m; i++){      cin >> a[i];}ll cnt = 0;for (int i = 1; i <= m; i++){if (i == 1 && a[i] != 1)cnt++;//先处理位置1,之后就不用管左边界了cnt += (a[i] - a[i - 1] - 1) / d + 1;//记录原始数组的总饼干数}if(a[m]!=n)cnt += (n - a[m]) / d;//特判n的位置有没有处理过ll micnt = cnt;ll cntans = 0;for (int i = 1; i < m; i++){ll temp = cnt - 1;//移除这个商店后的饼干数temp -= (a[i] - a[i - 1]) / d;//先减去这个歌商店原来的贡献if ((a[i] - a[i - 1]) % d == 0){temp++;}temp -= (a[i+1] - a[i]) / d;if ((a[i+1] - a[i]) % d == 0){temp++;}temp += (a[i + 1] - a[i - 1]) / d;//加上这个区间新的贡献if ((a[i + 1] - a[i - 1]) % d == 0){temp--;}if (temp < micnt){micnt = temp;//维护最小值cntans = 1;//维护最小值数量}else if (temp == micnt){cntans ++ ;}}ll temp = cnt - 1;temp -= (a[m] - a[m - 1]) / d;//因为最后一个商店没有右边的商店,所以单独处理一下if ((a[m] - a[m - 1]) % d == 0){temp++;}temp -= (a[m + 1] - a[m]) / d;temp += (a[m + 1] - a[m - 1]) / d;if (temp < micnt){micnt = temp;cntans = 1;}else if (temp == micnt){cntans++;}   cout << micnt << " " << cntans << endl;
}
int main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);int t;cin >> t;a[0] = 1;while (t--){solve();}return 0;
}

http://www.ds6.com.cn/news/90131.html

相关文章:

  • 企业网站怎么做软文接单平台
  • 复旦学霸张立勇做的有关寺庙网站上海网络公司seo
  • 做cpa色诱网站用什么域名空间建站搜索引擎优化中的步骤包括
  • 资源网站快速优化排名有什么好用的搜索引擎
  • 医疗网站 seo怎么做竞价培训
  • 嘉兴网页制作网站排名百度seo推广价格
  • 河北省建设网站锁安装什么驱动seo和sem哪个工资高
  • 预付网站制作费怎么做凭证长春网站建设公司哪家好
  • 建设平台公司公司seo是指什么意思
  • 网站运营开发托管海外推广渠道
  • 怎么优化推广自己的网站快排seo软件
  • 西宁疫情最新消息今天新增病例北京网优化seo公司
  • 可以做动效的网站必应搜索引擎网址
  • 平价网站平价网站建设建设什么都不懂能去干运营吗
  • 雷州网站开发公司网站如何做seo排名
  • 阻止网站查到访问者ip新郑网络推广
  • 网站开发网站制作报价国外网络推广
  • 低价网站建设哪家更好天津百度推广电话号码
  • wordpress参考书seo关键词查询
  • 渭南市网站建设企业网站托管
  • 丹东淘宝做网站谷歌sem和seo区别
  • 四六级查成绩网站怎么做手机网站自助建站系统
  • 局域网站建设电商广告
  • 廊坊网站推广推广app佣金平台正规
  • 长春免费网站制作广告投放这个工作难不难做
  • 国内h5网站欣赏推广产品的方法和步骤
  • 如何做网商商城的网站百度导航下载2020新版语音
  • 网站搭建响应式襄阳网站推广优化技巧
  • 做ppt兼职网站优化大师win7
  • 个人购物网站需要备案吗百度在线扫题入口