3-1知识点续:
5.
//给string设置大小:
/*
1.s.resize(N):resize()函数可以改变string的大小,并根据需要添加或删除字符。如果新的大小比当前大小大,将会在末尾添加字符;如果新的大小比当前大小小,将会删除末尾的字符。
*///例子:
void solve() {string s = "abcdef";s.resize(5);cout << s << endl;//输出abcde
}/*
2.s.reserve(N):
但使用reserve()函数只是预留了存储空间,并不会改变实际的字符数量。
*///例子:
void solve() {string s = "abcdef";s.reserve(5);cout << s << endl;//输出abcdef
}
6.
//将string转化为long long型
void solve() {string s = "123";int a = strtoll(s.c_str(), NULL, 10);cout << a / 10;
}
复习3-2:习题篇:
倒计时68天-CSDN博客
1.
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
typedef pair<int,int> pii;
vector<pii>ve[N];
int dis[N];
void dfs(int x,int fa)
{for(auto [u,w]:ve[x]){if(u==fa)continue;dis[u]=dis[x]+w;dfs(u,x);}
}
void solve()
{int n,cn=0;cin>>n;for(int i=1;i<n;i++){int u,v,w;cin>>u>>v>>w;ve[u].push_back({v,w});ve[v].push_back({u,w});cn+=2*w;}dfs(1,0);int max1=-inf,flag;for(int i=1;i<=n;i++){if(max1<dis[i]){max1=dis[i];flag=i;}}memset(dis,0,sizeof dis);dfs(flag,0);max1=-inf;for(int i=1;i<=n;i++){max1=max(max1,dis[i]);}cout<<cn-max1;
}
signed main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t;//cin>>t;t=1;while(t--){solve();}return 0;
}
2.
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
vector<int>ve[N];
int dp[N][2];
void dfs(int x,int fa)
{dp[x][0]=1,dp[x][1]=1;for(auto i:ve[x]){if(i==fa)continue;dfs(i,x);dp[x][0]=dp[x][0]*dp[i][1]%mod;dp[x][1]=dp[x][1]*(dp[i][0]+dp[i][1])%mod;}
}
void solve()
{int n;cin>>n;for(int i=1;i<n;i++){int u,v;cin>>u>>v;ve[u].push_back(v);ve[v].push_back(u);}dfs(1,0);cout<<(dp[1][0]+dp[1][1])%mod;
}
signed main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t;//cin>>t;t=1;while(t--){solve();}return 0;
}
待续,,,