【多校训练】hdu 6140 Hybrid Crystals
2017-08-18 22:32
393 查看
First, the Council puts a special crystal of a1=1,b1=N.
Second, the Council has arranged the other n−1 crystals
in a way that
ai≤∑j=1i−1aj[bj=N]+∑j=1i−1aj[bi=L∩bj=L]+∑j=1i−1aj[bi=D∩bj=D](2≤i≤n).
[cond] evaluates
to 1 if cond holds,
otherwise it evaluates to 0.
For those who do not have the patience to read the problem statements, the problem asks you to find whether there exists a set S⊆{1,2,…,n} and
values si for
all i∈S such
that
∑i∈Sai∗si=k,
where si=1 if
the i-th
crystal is a Light one, si=−1 if
the i-th
crystal is a Dark one, and si∈{−1,1} if
the i-th
crystal is a neutral one.
Input
The first line of the input contains an integer T,
denoting the number of test cases.
For each test case, the first line contains two integers n (1≤n≤103)
and k (|k|≤106).
The next line contains n integer a1,a2,...,an (0≤ai≤103).
The next line contains n character b1,b2,...,bn (bi∈{L,D,N}).
Output
If there exists such a subset, output "yes", otherwise output "no".
Sample Input
2
5 9
1 1 2 3 4
N N N N N
6 -10
1 0 1 2 3 1
N L L L L D
Sample Output
yes
no
题意:
一个集合里有n个数,N代表可正可负,L代表正,D代表负。求集合的数能不能组成k。
思路:
这道题中的数能组成的数构成了一个连续区间.
一开始只有 a1a1 的时候能够构成 [−1,1][−1,1] 中的所有整数.
如果一堆数能够构成 [−a,b][−a,b] 中的所有整数,
这时候来了一个数 xx.
如果 xx 只能取正值的话,
如果有 x≤bx≤b,
那么就能够构成 [−a,b+x][−a,b+x] 的所有整数.
如果 xx 只能取负值,
如果有 x≤yx≤y,
那么就能构成 [−a−x,b][−a−x,b] 的所有整数.
如果 xx 可正可负,
如果有 x≤min(x,y)x≤min(x,y),
那么就能构成 [−a−x,b+x][−a−x,b+x] 中的所有整数.
然后题目中那个奇怪的不等式就保证了上面的"如果有"的条件.
//
// main.cpp
// 1008
//
// Created by zc on 2017/8/18.
// Copyright © 2017年 zc. All rights reserved.
//
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1100;
int a
;
char s
[2];
int main(int argc, const char * argv[]) {
int T,n,k;
cin>>T;
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%s",s[i]);
int mmax=1,mmin=-1;
for(int i=1;i<=n;i++)
{
if(s[i][0]=='N') mmin-=a[i],mmax+=a[i];
if(s[i][0]=='L') mmax+=a[i];
if(s[i][0]=='D') mmin-=a[i];
}
printf(k>=mmin&&k<=mmax?"yes\n":"no\n");
}
}
Second, the Council has arranged the other n−1 crystals
in a way that
ai≤∑j=1i−1aj[bj=N]+∑j=1i−1aj[bi=L∩bj=L]+∑j=1i−1aj[bi=D∩bj=D](2≤i≤n).
[cond] evaluates
to 1 if cond holds,
otherwise it evaluates to 0.
For those who do not have the patience to read the problem statements, the problem asks you to find whether there exists a set S⊆{1,2,…,n} and
values si for
all i∈S such
that
∑i∈Sai∗si=k,
where si=1 if
the i-th
crystal is a Light one, si=−1 if
the i-th
crystal is a Dark one, and si∈{−1,1} if
the i-th
crystal is a neutral one.
Input
The first line of the input contains an integer T,
denoting the number of test cases.
For each test case, the first line contains two integers n (1≤n≤103)
and k (|k|≤106).
The next line contains n integer a1,a2,...,an (0≤ai≤103).
The next line contains n character b1,b2,...,bn (bi∈{L,D,N}).
Output
If there exists such a subset, output "yes", otherwise output "no".
Sample Input
2
5 9
1 1 2 3 4
N N N N N
6 -10
1 0 1 2 3 1
N L L L L D
Sample Output
yes
no
题意:
一个集合里有n个数,N代表可正可负,L代表正,D代表负。求集合的数能不能组成k。
思路:
这道题中的数能组成的数构成了一个连续区间.
一开始只有 a1a1 的时候能够构成 [−1,1][−1,1] 中的所有整数.
如果一堆数能够构成 [−a,b][−a,b] 中的所有整数,
这时候来了一个数 xx.
如果 xx 只能取正值的话,
如果有 x≤bx≤b,
那么就能够构成 [−a,b+x][−a,b+x] 的所有整数.
如果 xx 只能取负值,
如果有 x≤yx≤y,
那么就能构成 [−a−x,b][−a−x,b] 的所有整数.
如果 xx 可正可负,
如果有 x≤min(x,y)x≤min(x,y),
那么就能构成 [−a−x,b+x][−a−x,b+x] 中的所有整数.
然后题目中那个奇怪的不等式就保证了上面的"如果有"的条件.
//
// main.cpp
// 1008
//
// Created by zc on 2017/8/18.
// Copyright © 2017年 zc. All rights reserved.
//
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1100;
int a
;
char s
[2];
int main(int argc, const char * argv[]) {
int T,n,k;
cin>>T;
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%s",s[i]);
int mmax=1,mmin=-1;
for(int i=1;i<=n;i++)
{
if(s[i][0]=='N') mmin-=a[i],mmax+=a[i];
if(s[i][0]=='L') mmax+=a[i];
if(s[i][0]=='D') mmin-=a[i];
}
printf(k>=mmin&&k<=mmax?"yes\n":"no\n");
}
}
相关文章推荐
- 2017多校八 1008题 hdu 6140 Hybrid Crystals 推理
- 2017 HDU 6140 多校联合赛 Hybrid Crystals
- HDU 2017 多校联合训练赛8 1008 6140 Hybrid Crystals
- HDU_6140 Hybrid Crystals 【思维】
- HDU 6140 Hybrid Crystals(坑题)
- hdu 6140 Hybrid Crystals 思维
- 2017多校八 1008题 hdu 6140 Hybrid Crystals 推理
- HDU 6140 17多校8 Hybrid Crystals(思维题)
- HDU 6140 Hybrid Crystals(01背包)
- hdu 6140 Hybrid Crystals(贪心)
- HDU 6140 Hybrid Crystals(思考+上下界)
- HDU-2017 多校训练赛8-1008-Hybrid Crystals
- HDU 6140 Hybrid Crystals(搞事情题)
- Hdu 6140 Hybrid Crystals【思维】
- HDU - 6140 Hybrid Crystals(思维)
- HDU 6140 Hybrid Crystals (玄学背包)
- HDU 6140 Hybrid Crystals(zz)
- HDU 6140 Hybrid Crystals (2017 Multi-Univ Training Contest 8)
- hdu 6140 Hybrid Crystals
- HDU 6140 Hybrid Crystals (玄学背包)