ACM日常训练日记——8.2
1.ACM日常训练日记——7.31(牛客萌新第三场)2.ACM日常训练日记——7.29(单调栈,滑动窗口,线性dp)3.ACM日常训练日记——7.26(线性dp+cf div2)4.ACM日常训练日记——8.1(区间dp)5.ACM日常训练日记——7.30(并查集)6.ACM日常训练日记——7.237.ACM日常训练日记——7.248.ACM日常训练日记——7.25(背包dp,最长公共子序列)记忆化搜素+细节二分9.周总结10.SMU Summer 2024 Contest Round 3(7.10)zhaosang(二进制暴力)11.周总结(还需要再认真看学习比如Strange Balls,预处理)
12.ACM日常训练日记——8.2
13.ACM日常训练日记——8.8(二分dp,最小生成树+克鲁斯卡尔算法和普利姆算法)14.8.12(打表+位运算+思维)15.8.13(优先队列贪心维护+打表找规律+对顶堆优先队列+DFS减枝+贪心dp)16.8.14 (河南牛客萌新赛 线段树 ,ST求区间最值,迪杰斯特拉建正反图,bfs+二分,模拟)+状态bfs搜素17.9.11 codeforces18.题解9.29-10.3- 小训练
#include<bits/stdc++.h>
using namespace std;
int T,n;
int main(){
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n/2;i++) cout<<i+n/2<<' '<<i<<' ';
if(n%2==1) cout<<n<<' ';
cout<<endl;
}
}
总结就是遇到这类题自己找规律分析打表太弱了,不能专注认真去试,还是得多做多去冷静思考打表,去试
- codeforces(div2)
- C. Even Positions
一个简单的栈模拟一下就可以了,我当时也也想到了这道题的规律,但是没有敢交
//
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD = 1e9 + 7;
int n;
char ans[300010];
vector<char> v1,v2;
int qpow(int a, int b, int m) {
int result = 1;
a %= m;
while (b > 0) {
if (b & 1) {
result = (result * a) % m;
}
a = (a * a) % m;
b >>= 1;
}
return result;
}
int32_t main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while(t--){
int ans=0;
stack<int>sta;
stack<int>s1;
stack<int>s2;
int n;
cin>>n;
for (int i = 0; i < n; ++i) {
char c;
cin>>c;
if(c=='_'){
if(!s2.empty()){
ans+=i-s2.top();
s2.pop();
}else
sta.push(i);
}else if(c==')'){
if(!sta.empty()){
ans+=i-sta.top();
sta.pop();
}else
s1.push(i);
}else{
s2.push(i);
}
}
cout<<ans<<'\n';
}
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD = 1e9 + 7;
char ans[300010];
int t,n;
long long a[200010];
vector<int> g[200010];
vector<char> v1,v2;
int qpow(int a, int b, int m) {
int result = 1;
a %= m;
while (b > 0) {
if (b & 1) {
result = (result * a) % m;
}
a = (a * a) % m;
b >>= 1;
}
return result;
}
inline void solve() {
int n; cin >> n;
vector<int> a(n + 1);
for (int i = 1; i <= n; i ++ ) cin >> a[i];
vector<vector<int>> e(n + 1);
for (int i = 2; i <= n; i ++ ) {
int x; cin >> x;
e[x].push_back(i);
}
function<void(int)> dfs = [&](int u) {
for (int v : e[u]) dfs(v);
if (e[u].empty()) return;
if (u == 1) {
int minv = 1e9 + 7;
for (int v : e[1]) minv = min(minv, a[v]);
a[1] += minv;
}else {
int minv = 1e9 + 7;
for (int v : e[u]) minv = min(minv, a[v]);
if (minv > a[u]) a[u] = (a[u] + minv) / 2;
else a[u] = minv;
}
};
dfs(1);
cout << a[1] << endl;
return;
}
int32_t main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>t;
while(t--){
solve();
}
return 0;
}
本文作者:冬天的睡袋
本文链接:https://www.cnblogs.com/dontian/p/18338324
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步