This commit is contained in:
Zengtudor 2025-07-22 11:11:36 +08:00
parent 8a8a51cd69
commit dc9d4ad1f6

View File

@ -1,17 +1,13 @@
#include <algorithm> #include <bitset>
#include <cstdint> #include <cstdint>
#include <iostream> #include <iostream>
#include <istream> #include <istream>
#include <set>
#include <tuple>
#include <utility>
#include <vector>
using ll = int64_t; using ll = int64_t;
ll n,m; ll n,m;
std::vector<ll> k,a; // std::vector<ll> k,a;
std::vector<std::pair<ll, ll>> t; // std::vector<std::pair<ll, ll>> t;
template<class ...Ts> template<class ...Ts>
void log(Ts&&...ts){ void log(Ts&&...ts){
@ -19,44 +15,49 @@ void log(Ts&&...ts){
// ((std::cout<<ts<<' '),...); // ((std::cout<<ts<<' '),...);
// std::cout<<'\n'; // std::cout<<'\n';
} }
// ll max{};
// namespace c1{
// std::set<ll> s;
namespace c1{ // void static inline dfs(ll d,ll nsum){
std::set<ll> s; // if(nsum>max)return;
ll max{}; // if(d>n){
void static inline dfs(ll d,ll nsum){ // s.insert(nsum);
if(nsum>max)return; // log("nsum:",nsum);
if(d>n){ // return;
s.insert(nsum); // }
log("nsum:",nsum); // for(ll i=0;i<=a[d];i++){
return; // dfs(d+1,nsum+k[d]*i);
} // }
for(ll i=0;i<=a[d];i++){ // }
dfs(d+1,nsum+k[d]*i); // }
}
} std::bitset<500000+5> bs;
}
int main(){ int main(){
std::iostream::sync_with_stdio(false); std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr); std::cin.tie(nullptr);
std::cout.tie(nullptr); std::cout.tie(nullptr);
bs[0]=1;
std::cin>>n>>m; std::cin>>n>>m;
k.resize(n+1); // k.resize(n+1);
a.resize(n+1); // a.resize(n+1);
t.resize(m+1); // t.resize(m+1);
for(ll i=1;i<=n;i++){ 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++){ for(ll i=1;i<=m;i++){
std::cin>>t[i].first; ll t;
t[i].second=i; std::cin>>t;
c1::max=std::max(c1::max,t[i].first); if(bs[t]){
}
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()){
std::cout<<"Yes\n"; std::cout<<"Yes\n";
}else{ }else{
std::cout<<"No\n"; std::cout<<"No\n";