update
This commit is contained in:
parent
93c7ee4776
commit
12ab34e7a4
@ -19,16 +19,33 @@ int main(){
|
|||||||
std::cin>>s;
|
std::cin>>s;
|
||||||
ll odd_add_num{}; //奇数+ -> -2
|
ll odd_add_num{}; //奇数+ -> -2
|
||||||
ll even_sub_num{};//偶数- -> +2
|
ll even_sub_num{};//偶数- -> +2
|
||||||
|
/*
|
||||||
|
奇数->(bin*1)
|
||||||
|
偶数->(bin*0)
|
||||||
|
|
||||||
|
不坦白->
|
||||||
|
+1
|
||||||
|
-1
|
||||||
|
->不论怎样,奇偶性质都会改变
|
||||||
|
|
||||||
|
坦白->
|
||||||
|
原本是'+'
|
||||||
|
奇数(*1)->xor 1->*0 -2
|
||||||
|
偶数(*0)->xor 1->*1 0
|
||||||
|
原本是'-'
|
||||||
|
奇数(*1)->xor 1->*0 0
|
||||||
|
偶数(*0)->xor 1->*1 +2
|
||||||
|
|
||||||
|
*/
|
||||||
ll sum{};
|
ll sum{};
|
||||||
for(ll i{0};i<s.size();i++){
|
for(ll i{0};i<s.size();i++){
|
||||||
if(s[i]=='+'){
|
if(s[i]=='+'){
|
||||||
if(i&1){
|
if(i&1){//奇数
|
||||||
++odd_add_num;
|
++odd_add_num;
|
||||||
}
|
}
|
||||||
sum++;
|
sum++;
|
||||||
}else{
|
}else{
|
||||||
if((i&1)==0){
|
if((i&1)==0){ // 偶数
|
||||||
even_sub_num++;
|
even_sub_num++;
|
||||||
}
|
}
|
||||||
sum--;
|
sum--;
|
||||||
|
112
src/P1351/P1351.cpp
Normal file
112
src/P1351/P1351.cpp
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <iostream>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using ll = long long;
|
||||||
|
|
||||||
|
const ll max_n = 2e5+5;
|
||||||
|
const ll MOD = 10007;
|
||||||
|
ll n, w[max_n];
|
||||||
|
|
||||||
|
std::vector<ll> next[max_n];
|
||||||
|
ll brothers_from_father[max_n];
|
||||||
|
|
||||||
|
ll ans_max,ans_sum;
|
||||||
|
|
||||||
|
#ifdef ONLINE_JUDGE
|
||||||
|
#define DEBUG(code)
|
||||||
|
#else
|
||||||
|
#define DEBUG(code)code
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DEBUG(
|
||||||
|
template<class ...Args>
|
||||||
|
void debug(Args&&...args){
|
||||||
|
std::cout<<"[DEBUG]: ";
|
||||||
|
(std::cout<<...<<std::forward<Args>(args));
|
||||||
|
std::cout<<'\n';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
void dfs(const ll now, const ll father,const ll grand_father){
|
||||||
|
if(father == -1){
|
||||||
|
for(const auto i:next[now]){
|
||||||
|
if(i==father)continue;
|
||||||
|
dfs(i, now,-1);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}else if(grand_father == -1){
|
||||||
|
for(const auto i:next[now]){
|
||||||
|
if(i==father)continue;
|
||||||
|
dfs(i,now,father);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG(
|
||||||
|
debug("args: ",now," ",father," ",grand_father);
|
||||||
|
)
|
||||||
|
if(!next[now].empty()){
|
||||||
|
for (const auto i: next[now]) {
|
||||||
|
if(i==father)continue;
|
||||||
|
dfs(i,now,father);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(const auto i : next[father]){
|
||||||
|
if(i != now){
|
||||||
|
ans_max = std::max(ans_max, w[i]*w[now]);
|
||||||
|
DEBUG(
|
||||||
|
debug("update max ",ans_max);
|
||||||
|
)
|
||||||
|
DEBUG(
|
||||||
|
debug("brother: ",w[i],' ',w[now]);
|
||||||
|
)
|
||||||
|
brothers_from_father[father] = ((w[i]*w[now]) % MOD + brothers_from_father[father]) % MOD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DEBUG(
|
||||||
|
debug(w[now],' ',w[grand_father]);
|
||||||
|
)
|
||||||
|
ans_max = std::max(ans_max, w[now] * w[grand_father]);
|
||||||
|
DEBUG(
|
||||||
|
debug("update max ",ans_max);
|
||||||
|
)
|
||||||
|
ans_sum = (ans_sum + (w[now]*w[grand_father]) % MOD) % MOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::cin>>n;
|
||||||
|
for(ll i{1};i<n;i++){
|
||||||
|
ll a,b;
|
||||||
|
std::cin>>a>>b;
|
||||||
|
next[a].push_back(b);
|
||||||
|
next[b].push_back(a);
|
||||||
|
}
|
||||||
|
for(ll i{1};i<=n;i++){
|
||||||
|
std::cin>>w[i];
|
||||||
|
}
|
||||||
|
dfs(1, -1, -1);
|
||||||
|
|
||||||
|
for(ll i{1};i<=n;i++){
|
||||||
|
DEBUG(
|
||||||
|
debug("from brother ",i," add :",brothers_from_father[i]);
|
||||||
|
)
|
||||||
|
ans_sum = (ans_sum + brothers_from_father[i]) % MOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout<<ans_max<<' '<<(ans_sum) % MOD<<'\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
4
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
2 4
|
||||||
|
1 2 3 4
|
||||||
|
(3,4),(4,3),(1,3),(3,1),(1,4),(4,1)
|
||||||
|
max = 12
|
||||||
|
sum = 12+12+3+3+4+4 = 38
|
||||||
|
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user