mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-08-21 18:52:07 +00:00
update
This commit is contained in:
parent
8a8a51cd69
commit
dc9d4ad1f6
@ -1,17 +1,13 @@
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <set>
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
using ll = int64_t;
|
||||
|
||||
ll n,m;
|
||||
std::vector<ll> k,a;
|
||||
std::vector<std::pair<ll, ll>> t;
|
||||
// std::vector<ll> k,a;
|
||||
// std::vector<std::pair<ll, ll>> t;
|
||||
|
||||
template<class ...Ts>
|
||||
void log(Ts&&...ts){
|
||||
@ -19,44 +15,49 @@ void log(Ts&&...ts){
|
||||
// ((std::cout<<ts<<' '),...);
|
||||
// std::cout<<'\n';
|
||||
}
|
||||
// ll max{};
|
||||
// namespace c1{
|
||||
// std::set<ll> s;
|
||||
|
||||
namespace c1{
|
||||
std::set<ll> s;
|
||||
ll max{};
|
||||
void static inline dfs(ll d,ll nsum){
|
||||
if(nsum>max)return;
|
||||
if(d>n){
|
||||
s.insert(nsum);
|
||||
log("nsum:",nsum);
|
||||
return;
|
||||
}
|
||||
for(ll i=0;i<=a[d];i++){
|
||||
dfs(d+1,nsum+k[d]*i);
|
||||
}
|
||||
}
|
||||
}
|
||||
// void static inline dfs(ll d,ll nsum){
|
||||
// if(nsum>max)return;
|
||||
// if(d>n){
|
||||
// s.insert(nsum);
|
||||
// log("nsum:",nsum);
|
||||
// return;
|
||||
// }
|
||||
// for(ll i=0;i<=a[d];i++){
|
||||
// dfs(d+1,nsum+k[d]*i);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
std::bitset<500000+5> bs;
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false);
|
||||
std::cin.tie(nullptr);
|
||||
std::cout.tie(nullptr);
|
||||
|
||||
bs[0]=1;
|
||||
std::cin>>n>>m;
|
||||
k.resize(n+1);
|
||||
a.resize(n+1);
|
||||
t.resize(m+1);
|
||||
// k.resize(n+1);
|
||||
// a.resize(n+1);
|
||||
// t.resize(m+1);
|
||||
for(ll i=1;i<=n;i++){
|
||||
std::cin>>k[i]>>a[i];
|
||||
ll k,a;
|
||||
std::cin>>k>>a;
|
||||
for(ll b=1;b<=a;b<<=1){
|
||||
bs|=bs<<b*k;
|
||||
a-=b;
|
||||
}
|
||||
if(a>0){
|
||||
bs|=bs<<a*k;
|
||||
}
|
||||
}
|
||||
for(ll i=1;i<=m;i++){
|
||||
std::cin>>t[i].first;
|
||||
t[i].second=i;
|
||||
c1::max=std::max(c1::max,t[i].first);
|
||||
}
|
||||
using namespace c1;
|
||||
dfs(1, 0);
|
||||
for(ll i=1;i<t.size();i++){
|
||||
if(auto it = s.find(t[i].first);it!=s.end()){
|
||||
ll t;
|
||||
std::cin>>t;
|
||||
if(bs[t]){
|
||||
std::cout<<"Yes\n";
|
||||
}else{
|
||||
std::cout<<"No\n";
|
||||
|
Loading…
Reference in New Issue
Block a user