E. Pencils and Boxes(尺取&dp)

显然按val排序,然后考虑dp,显然转移的jjj随iii增加不会递减,接着考虑限制条件,显然i往右走,要是差值小于d,i递增, 因为有k的限制。

所以每次转移的时候是找一个区间是否可行,找区间是否有解可用BIT,线段树,ST等。初始化dp0=1dp_0=1dp0​=1,所以BIT整体右移下即可。

// Problem: E. Pencils and Boxes
// Contest: Codeforces - Educational Codeforces Round 44 (Rated for Div. 2)
// URL: https://codeforces.ml/contest/985/problem/E
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// Date: 2021-07-31 09:36:59
// --------by Herio--------#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=5e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define IOS ios::sync_with_stdio(false),cin.tie(0)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
#define lowbit(x) x&(-x)
int f[N],n,k,d,a[N];
bool dp[N];
void upd(int x,int v){while(x<=n+1) f[x]+=v,x+=lowbit(x);
}
int que(int x){int s=0;while(x) s+=f[x],x-=lowbit(x);return s;
}
int que(int l,int r){if(l>r) return 0;l++,r++;return que(r)-que(l-1);
}
int main(){scanf("%d%d%d",&n,&k,&d);for(int i=1;i<=n;i++) scanf("%d",&a[i]);sort(a+1,a+n+1);dp[0]=1;upd(1,1);for(int i=1,l=0;i<=n;i++){while(a[i]-a[l+1]>d) l++;dp[i]=(que(l,i-k)>=1);if(dp[i]) upd(i+1,1);}puts(dp[n]?"YES":"NO");return 0;
}

E. Pencils and Boxes(尺取dp)相关推荐

  1. E. Pencils and Boxes codeforces(思维+dp)

    题目链接:E. Pencils and Boxes 题意: 给出n个数字,分组,每组大小>=k,并且同一组内任意两个数字大小不能超过d 思路: 先从小到大排序.然后dp.起点肯定是第一个数字,然 ...

  2. E. Pencils and Boxes(划窗+dp+树状数组)

    题目 题意:     给定n个数,要求将n个数划分为若干集合.要求每个集合大小至少为k,且集合元素两两差值不大于d.     1≤k≤n≤5⋅105,0≤d≤109,1≤ai≤1091 ≤ k ≤ n ...

  3. Codeforces - Pencils and Boxes

    题目链接:Codeforces - Pencils and Boxes 显然可以dp,dp[i] 为前 i 个是否合法. 然后sort一下,然后枚举当前位置的时候,二分或者尺取找到最远的合法的位置.然 ...

  4. Codeforces 985 E - Pencils and Boxes

    E - Pencils and Boxes 思路: dp 先排个序,放进一个袋子里的显然是一段区间 定义状态:pos[i]表示小于等于i的可以作为(放进一个袋子里的)一段区间起点的离i最近的位置 显然 ...

  5. 【尺取或dp】codeforces C. An impassioned circulation of affection

    http://codeforces.com/contest/814/problem/C [题意] 给定一个长度为n的字符串s,一共有q个查询,每个查询给出一个数字m和一个字符ch,你的操作是可以改变字 ...

  6. CF1547F Array Stabilization (GCD version) st表 + 尺取/二分

    传送门 题意: 思路: 容易发现,我们将所有aaa都除上所有aaa的gcdgcdgcd,实际上就是让你求一个最小的lenlenlen,对于所有iii,gcd(ai,ai+1,...,ai+len−1) ...

  7. Codeforces Round #736 (Div. 2) D. Integers Have Friends ST表gcd + 尺取

    传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,求一个最长的子序列[l,r][l,r][l,r]满足aimodm=ai+1modm=...=armodma_i\bmod m=a_{i+1 ...

  8. 【CodeForces - 514D】R2D2 and Droid Army(二分+滑动窗口ST表,或 尺取+单调队列或STLmultiset)

    题干: An army of n droids is lined up in one row. Each droid is described by m integers a1, a2, ..., a ...

  9. G. Discarding Game(尺取)

    http://codeforces.com/problemset/problem/1250/G 题意: 给出两个数组a.b,你第i次增加ai分,对面增加bi分.你可以在每次加晚后重置,双方抵消分数([ ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化四级编程题:计算生肖
  2. 中科院自动化所17篇CVPR 2022 论文新作速览!
  3. Android 打包混肴
  4. gradle jar 修改 output 路径_Java 添加、修改、读取PDF书签
  5. java string fill_Java使用fill()数组填充的实现
  6. 随机排列实现 -shuffle算法
  7. NOIP2012复赛 普及组 第一题
  8. 哈希表和红黑树的对比
  9. 过滤CString字符串中各位是数字,大小写字母,符号,汉字
  10. Pycharm 加载pygame解决方案
  11. CMake笔记2 构建动态链接库
  12. 卡内基梅隆计算机专业,详解卡内基梅隆大学计算机学院
  13. 【SQL】利用HAVING取众数和中位数
  14. boot入门思想 spring_什么是Spring boot?Spring Boot快速入门以及Spring Boot实例教程
  15. Javascript 细节散记
  16. 超方便快捷搜索的油猴插件
  17. precision,recall,sensitivity, specificity ,mAP等几种评价指标
  18. 人工智能调度如何改变现场服务行业
  19. 虚拟主播合成视频使用教程
  20. PDF编辑方法,怎么删除PDF中的一页

热门文章

  1. matplotlib之pyplot模块——饼图(pie():圆环图(donut)、二层圆环图、三层圆环图(旭日图))
  2. 修改 TeamViewer ID 的方法
  3. 全球最热门大数据公司TOP10 中国公司榜上有名
  4. leetcode 相交链表 java
  5. 高分子聚合物过滤器折叠滤芯
  6. matlab怎样删除全部NAN值
  7. 服务器显示器黑屏只有鼠标看得见,win10桌面黑屏只能看鼠标怎么办_桌面黑屏只有鼠标解决方法...
  8. 【Paper】A Comparative Evaluation of Unsupervised Anomaly Detection Algorithms for Multivariate Data
  9. 安全开发--3--Python实现ARP缓存投毒
  10. Java 多线程之间通讯(面试概念解答三)