CC Functional Array
Posted 吃花椒的妙酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CC Functional Array相关的知识,希望对你有一定的参考价值。
题目大意:
是否存在数组a,使得b是它的子序列,且a的差分数组是z的子序列
思路:贪心+dp
既然a的差分数组是z的子序列,那么b的差分数组也可以通过z组合得到
题目转化成:是否能从左到右从z里选一些区间,满足sum(l,r) = b[i]-b[i-1],对于任意i>1都满足
贪心的从左边找满足的区间,每次找的过程我们手动模拟一下
假设我们现在有z:1,2,3,3....
目标是找sum = 6
对于z数组,我们从左往右扫,相当于每次check所有后缀有无和为sum的,
第一次1,第二次3,2,第三次6,5,3,第四次,9,8,6,6,我们发现每加入一个数x,其他后缀都会+x,因为数的范围都在1e5内,我们可以用bitset优化01背包来实现这个过程
#define _CRT_SECURE_NO_WARNINGS
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <list>
#include <queue>
#include <vector>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <deque>
#include <bitset>
using namespace std;
typedef long long ll;
#define _for(i,a,b) for(int i=(a) ;i<=(b) ;i++)
#define _rep(i,a,b) for(int i=(a) ;i>=(b) ;i--)
#define scd(v) scanf("%d",&v)
#define scdd(a,b) scanf("%d %d",&a,&b)
#define endl "\\n"
#define IOS ios::sync_with_stdio(false)
#define pb push_back
#define all(v) v.begin(),v.end()
#define int long long
#define odd(x) x&1
#define mst(v,a) memset(v,a,sizeof(v))
#define lson p<<1 ,l,mid
#define rson p<<1|1,mid+1,r
#define ls p<<1
#define rs p<<1|1
#define fi first
#define se second
#define pii pair<double,double>
#define inf 0x7f7f7f7f
const int mod = 998244353;
const int N = 1e5 + +10;
int n,m;
int b[N],z[N];
bitset<100010> bt;
void solve()
{
int flag = 1;
int x = 1;
_for(i, 1, n-1)
{
flag = 0;
if (b[i] > b[i + 1])
{
break;
}
bt &= 0;
bt[0] = 1;
while ( x<=m )
{
if (b[i] == b[i + 1])
{
if (z[x] == 0)
{
flag = 1;
x++;
break;
}
}
else
{
bt |= bt << z[x];
if (bt[b[i + 1] - b[i]])
{
flag = 1;
x++;
break;
}
}
x++;
}
if (!flag) break;
}
if (flag)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
signed main()
{
// freopen("data.txt","r",stdin);
IOS;
int T; cin >> T;
while (T--)
{
cin >> n>>m;
_for(i, 1, n) cin >> b[i];
_for(i, 1, m) cin >> z[i];
solve();
}
}
以上是关于CC Functional Array的主要内容,如果未能解决你的问题,请参考以下文章
[Functional Programming] Randomly Pull an Item from an Array with the State ADT (Pair)
js代码片段: utils/lcoalStorage/cookie
[TIA PORTAL][CONVERT] Convert Char Array to DInt...DInt to Char Array..Useful and easy function(代码片段