当前位置: 首页 > news >正文

Codeforces Round 1023 (Div. 2)

Maximum Subarray Sum

将所有的0位置填-1e18,就不用分段求最大值m
k<m,不行,怎么加都可以取当前的一段达到m
k==m,就这样就可以
k>m,可以这样构造
找到最左边的0,前缀和后缀最大加上他是k即可,别的再怎么加也达不到k

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define int long longint n,k;
const int N=200010;
int a[N];int f[N];int g[N];
void solve(){
cin>>n>>k;
string b;cin>>b;b="a"+b;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)if(b[i]=='0')a[i]=-1e17;int m=0;
for(int i=1;i<=n;i++){f[i]=max(f[i-1]+a[i],a[i]);m=max(m,f[i]);  //cout<<f[i]<<" ";
}
if(m>k){no;
}else if(m==k){yes;for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<'\n';
}else {int st=1;while(st<=n&&b[st]=='1')st++;if(st>n){no;return ;}g[n+1]=0;for(int i=n;i>=1;i--){g[i]=max(g[i+1]+a[i],a[i]);}a[st]=k-max(0ll,f[st-1])-max(0ll,g[st+1]);
yes;
for(int i=1;i<=n;i++)cout<<a[i]<<" ";cout<<'\n';
}}
signed main(){std::ios::sync_with_stdio(false);int T=1;cin>>T;while(T--){solve();}
}

D. Apple Tree Traversing

答案是每次找端点最大的直径,
每次找未访问过的连通块直径,标记这个直径上的点为访问过
O(n根号n)类似长链剖分

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3fconst int N=150010;
vector<int> G[N];int n;
int mx=0;
int dep[N];int pre[N];bool vis[N];
void dfs1(int u,int fa){// cout<<"dfs1:"<<u<<'\n';dep[u]=dep[fa]+1;if(dep[u]>dep[mx]){mx=u;}else if(dep[u]==dep[mx]){if(u>mx)mx=u;}for(auto v:G[u]){if(vis[v])continue;if(v==fa)continue;dep[v]=dep[u]+1;dfs1(v,u);}
}
void dfs2(int u,int fa){pre[u]=fa;dep[u]=dep[fa]+1;if(dep[u]>dep[mx]){mx=u;
}else if(dep[u]==dep[mx]){if(u>mx)mx=u;
}for(auto v:G[u]){if(vis[v])continue;if(v==fa)continue;dfs2(v,u);}
}void solve(){
cin>>n;for(int i=1;i<=n;i++){vis[i]=0;G[i].clear();
}
for(int i=1;i<=n-1;i++){int u,v;cin>>u>>v;G[u].pb(v);G[v].pb(u);
}vector<pair<int,pii>> ans;
while(1){int cur=-1;for(int i=1;i<=n;i++){if(!vis[i]){cur=i;break;}}if(cur==-1)break;mx=0;dfs1(cur,0);//cout<<"fin1"<<'\n';int vl=mx;mx=0;dfs2(vl,0);//cout<<"fin2"<<'\n';int vr=mx;int t=vr;int c=0;while(t){vis[t]=1;c++;t=pre[t];}if(vl<vr)swap(vl,vr);ans.pb({c,{vl,vr}});
}
sort(ans.begin(),ans.end());reverse(ans.begin(),ans.end());
for(auto tem:ans){
cout<<tem.ft<<" "<<tem.se.ft<<" "<<tem.se.se<<' ';
}
}
signed main(){std::ios::sync_with_stdio(false);int T=1;cin>>T;while(T--){solve();}
}
http://www.jsqmd.com/news/28339/

相关文章:

  • 2025 年 11 月美白贴片面膜,抗皱贴片面膜,紧致贴片面膜厂家最新推荐,产能、专利、环保三维数据透视
  • 2025 年 11 月保湿贴片面膜,抗皱贴片面膜,修护贴片面膜厂家最新推荐,精准检测与稳定性能深度解析
  • 2025 年 11 月美白贴片面膜,补水贴片面膜,紧致贴片面膜厂家最新推荐,技术实力与市场口碑深度解析
  • CH5xx BLE低功耗使用GPIO唤醒
  • 2025 年 11 月美白贴片面膜,抗衰老贴片面膜,补水贴片面膜厂家最新推荐,高性能与可靠性兼具的优质品牌
  • 启动的时候出现错误 (exit code -1073741819 (0xc0000005) )?报错0xC0000005的可能原因?
  • vscode判断当前是否为debug模式
  • 计算机网络学习分享1
  • 深浅拷贝
  • FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android
  • AI + Excel:公式生成、数据分析、图表一键搞定
  • 清华大学AI领导力AI时代领导力AI变革领导力培训师培训讲师专家唐兴通讲授数字化转型人工智能组织创新实践领导力国央企国有企业金融运营商制造业 - 教程
  • CryptoNet:一个高效、安全的加密库
  • Sqlserver Stuff+for xml+values 记录下,将多列数据有数据的合并为一个单元格
  • 2025 年精华液厂家企业品牌推荐排行榜,烟酰胺精华液,富勒烯精华液,复合酸精华液,抗衰老精华液,修护精华液,抗氧化精华液,保湿精华液,液态精华液公司推荐
  • 2025 年 11 月烟酰胺精华液,修护精华液,保湿精华液厂家最新推荐,技术实力与市场口碑深度解析
  • 2025 年 11 月富勒烯精华液,抗衰老精华液,抗氧化精华液厂家最新推荐,精准检测与稳定性能深度解析
  • 2025 年 11 月云南环保咨询,云南环评报告咨询,云南环评手续咨询最新推荐:精准检测与稳定性能深度解析
  • 2025 年 11 月云南环评资质咨询,云南环评批复咨询,云南环评手续咨询最新推荐:榜单透视与选购要点
  • 2025 年 11 月云南环保咨询,云南环评报告咨询,云南环评手续咨询最新推荐:聚焦高端定制需求与全案交付能力
  • 2025年11月上海装修公司排行榜:十强服务与性价比全面对比
  • 2025年11月上海装修公司口碑榜:千州领衔全维度对比评测
  • 2025 年 11 月云南环评资质咨询,云南环评报告咨询,云南环评批复咨询最新推荐:技术实力与市场口碑深度解析
  • 2025年11月上海装修公司实力榜:十家口碑数据横向评测
  • 2025年11月上海装修公司榜单:10强对比看服务与质保差异
  • 2025年11月上海装修公司综合榜:十家口碑排行深度评测
  • 从一个按钮实例入门CSS in JS之styled-components
  • 第二次算法实践作业
  • 致成熟的Java团队:AI浪潮中,无需换栈,只需“增量升级”
  • 统计表类图形的最大面积