mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-08-22 03:01:43 +00:00
update
This commit is contained in:
parent
401024ab86
commit
8a8a51cd69
@ -1,75 +1,13 @@
|
|||||||
#include <algorithm>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <limits>
|
#include <utility>
|
||||||
#include <set>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
using ll = int64_t;
|
static inline __attribute__((always_inline)) int max(int a,int b){
|
||||||
|
if(a>b)return a;
|
||||||
ll T,n;
|
else return b;
|
||||||
std::vector<std::vector<ll>> ta,tb;
|
|
||||||
ll ans=std::numeric_limits<ll>::max();
|
|
||||||
|
|
||||||
template<class ...Ts>
|
|
||||||
void log(Ts&&...ts){
|
|
||||||
// std::cout<<"Log: ";
|
|
||||||
// ((std::cout<<ts<<' '),...);
|
|
||||||
// std::cout<<'\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
void bfs(ll na,ll nb,ll nans,ll d){
|
|
||||||
if(d>n)return;
|
|
||||||
nans = std::max(na+nb,nans);
|
|
||||||
// log("na:",na,"nb:",nb,"nans:",nans,"ans:",ans);
|
|
||||||
if(na==1&&nb==1){
|
|
||||||
log("na:",na,"nb:",nb,"nans:",nans,"ans:",ans);
|
|
||||||
ans=std::min(ans,nans);
|
|
||||||
// log("nans:",nans);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for(auto nxta:ta[na]){
|
|
||||||
for(auto nxtb:tb[nb]){
|
|
||||||
bfs(nxta,nxtb,nans,d+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(nb!=1){
|
|
||||||
for(auto nxta:ta[na]){
|
|
||||||
bfs(nxta,nb,nans,d+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(na!=1){
|
|
||||||
for(auto nxtb:tb[nb]){
|
|
||||||
bfs(na,nxtb,nans,d+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
std::cin>>T;
|
int a,b;
|
||||||
while(T--){
|
std::cin>>a>>b;
|
||||||
ans=std::numeric_limits<ll>::max();
|
std::cout<<max(a,b)<<'\n';
|
||||||
std::cin>>n;
|
|
||||||
ta.resize(n+1,std::vector<ll>());
|
|
||||||
tb.resize(n+1,std::vector<ll>());
|
|
||||||
for(ll i=1;i<n;i++){
|
|
||||||
ll u,v;
|
|
||||||
std::cin>>u>>v;
|
|
||||||
ta[u].push_back(v);
|
|
||||||
ta[v].push_back(u);
|
|
||||||
}
|
|
||||||
for(ll i=1;i<n;i++){
|
|
||||||
ll u,v;
|
|
||||||
std::cin>>u>>v;
|
|
||||||
tb[u].push_back(v);
|
|
||||||
tb[v].push_back(u);
|
|
||||||
}
|
|
||||||
ll sa{},sb{};
|
|
||||||
std::cin>>sa>>sb;
|
|
||||||
// std::set<ll> visa,visb;
|
|
||||||
// visa.insert(sa);
|
|
||||||
// visb.insert(sb);
|
|
||||||
bfs(sa,sb,0, 0);
|
|
||||||
std::cout<<ans<<'\n';
|
|
||||||
}
|
|
||||||
}
|
}
|
65
src/7/22/P6567.cpp
Normal file
65
src/7/22/P6567.cpp
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#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;
|
||||||
|
|
||||||
|
template<class ...Ts>
|
||||||
|
void log(Ts&&...ts){
|
||||||
|
// std::cout<<"Log: ";
|
||||||
|
// ((std::cout<<ts<<' '),...);
|
||||||
|
// std::cout<<'\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::iostream::sync_with_stdio(false);
|
||||||
|
std::cin.tie(nullptr);
|
||||||
|
std::cout.tie(nullptr);
|
||||||
|
|
||||||
|
std::cin>>n>>m;
|
||||||
|
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];
|
||||||
|
}
|
||||||
|
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()){
|
||||||
|
std::cout<<"Yes\n";
|
||||||
|
}else{
|
||||||
|
std::cout<<"No\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user