ACM/ICPC双指针
just_sort
Acdream.
展开
-
POJ 2739 Sum of Consecutive Prime Numbers(Two pointers)
【题意】给了一个数字num,问你存在多少种连续的素数之和等于这个数!【分析】素筛+two pointers!题很简单,所以具体看代码了!【AC代码】#include #include #include #include using namespace std;const int maxn = 10010;bool is[maxn];int a[maxn];int cnt原创 2016-04-26 19:27:24 · 454 阅读 · 0 评论 -
Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) F. Double Knapsack
F. Double Knapsacktime limit per test2.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given two multisets A and B. Each mult原创 2016-09-09 20:14:57 · 523 阅读 · 0 评论 -
BestCoder Round #81 (div.1) B String
问题描述有一个 10≤10\leq10≤长度≤1,000,000\leq 1,000,000≤1,000,000 的字符串,仅由小写字母构成。求有多少个子串,包含有至少k(1≤k≤26)k(1 \leq k \leq 26)k(1≤k≤26)个不同的字母?输入描述输入包含多组数据. 第一行有一个整数T(1≤T≤10)T (1\leq T\leq 10)T(1≤T≤10), 表示测试数据原创 2016-04-23 09:44:50 · 540 阅读 · 0 评论 -
POJ 2566 Bound Found
【题意】题意就是找一个连续的子区间,使它的和的绝对值最接近X。【分析】这题的做法是先预处理出前缀和,然后对前缀和进行排序,再用尺取法贪心的去找最合适的区间,要注意的是尺取法时首尾指针一定不能相同,因为这时区间相减结果为0,但实际上区间为空,这是不存在的,可能会产生错误的结果。处理时,把(0,0)这个点也放进数组一起排序,比单独判断起点为1的区间更方便。还有ans初始化的值INF一定要大于t的最原创 2016-04-22 18:27:48 · 515 阅读 · 0 评论 -
POJ 3220 Jessica's Reading Problem(Two pointers)
【题意】给一个数列,找到一个最小的区间,包含这个数列中出现的所有元素。【分析】two pointers典型应用。这类连续的区间问题,很多都可以用这种尺取法线性的扫描。所谓的“尺取法”,就是维护两个指针,指向当前维护的区间的首和尾。维护是贪心的去尽量的缩小区间范围。比如这题就是要保证区间的首元素只出现了一次,否则就把首指针后移。当区间内不同元素的个数小于总个数,就把尾指针后移。【AC代码】#原创 2016-04-22 16:32:42 · 944 阅读 · 0 评论 -
POJ 3061 Subsequence
【题意】给了n,s,在n个数里面选一个连续子序列,使得和>=s的区间长度最小,问最小区间长度!【分析】two pointers 的典型应用!【AC代码】#include #include using namespace std;const int inf = 0x3f3f3f3f;int a[100010];int main(){ int n,s,T; sc原创 2016-04-21 21:39:50 · 398 阅读 · 0 评论 -
HDU 5289 Assignment
【题意】N【分析】two pointers的典型题,纪念!【AC代码】//cpp try two pointers#include using namespace std;const int maxn = 1e6+10;int n,k,a[maxn];typedef long long ll;int main(){ multisets; int T;原创 2016-04-20 16:18:01 · 500 阅读 · 0 评论 -
HDU 5289 Assignment
【题意】有N个员工,编号从1到N,已经给出每个员工的能力值。现在要把他们分组,要求每一组成员的编号是连续的且这一组里面最大能力值与最小能力值相差必须小于Q。问你可以分成多少组。【分析】two pointers ,二分+rmq,rmp+two pointers【AC代码】上一份别人的很巧的代码,思想就是rmp+划窗问题!#include #include #include #d原创 2016-04-18 19:26:32 · 418 阅读 · 0 评论 -
Educational Codeforces Round 11 C (Two Pointers)
【题外话】我曾经用dp+二分写过这道题,当时是100多ms,今天了解到了two pointers这个东西,用two pointers的方法过了这道题!【题意】这道题的意思是给了一个只包含0,1的这样一个串,然后一个数k,最多讲k个0变成1,问你可能得到的最大的1的连续区间长度,并且输出改变后的数组!由于0的个数,从前导后具有单调性,因此,我们可以采用two pointers这种方法!事实证明,原创 2016-04-18 18:23:43 · 592 阅读 · 0 评论 -
POJ 2100 Graveyard Design
【题意】给一个数n,问你能找到一些连续的数使得这些每个连续数的平方值之和等于这个数吗?如果找到他们的话吗,输出这些信息!【分析】two pointers 裸题,这是专题的最后一个了,希望通过近期对two pointers的专题训练,下次运到这类题可以快速反应,秒A。【->【AC代码】#include #include #include #include #include原创 2016-04-26 19:59:49 · 445 阅读 · 0 评论 -
CF 222D Olympiad 双指针
题目链接:这里 题意:第一行给出两个个数字k和n,第二三行分别有k个数字,求将第二、三行之间的数字相互组合,求最多有多少个组合的和不小于n 解法:将两行数字分别排序,用双端指针分别从头和尾查找最多有多少组合。 代码://CF 222D#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+7;int n, x, a原创 2017-03-11 09:22:08 · 541 阅读 · 0 评论