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

Codeforces Round 822 (Div. 2)(D前缀和+贪心加血量)

A.选三条相邻的边遍历一次求最小值

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m;
vector<int> g[N];
int a[N];
void solve()
{cin>>n;int res=2e18;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);for(int i=2;i<=n-1;i++){res=min(res,abs(a[i]-a[i-1]+abs(a[i]-a[i+1])));}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

B.手玩一下最后一层的每个点可以由哪些点转移过来,可以观察到直接涂两边是可以相等的

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m;
vector<int> g[N];
int a[N];
int s[N];
int get(int l,int r){return s[r]-s[l-1];
}
int b[N];
void solve()
{cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){if(j==1||j==i) cout<<1<<" ";else cout<<0<<" ";}cout<<"\n";}
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C.贪心,从小到大选数,能去掉就去掉

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m;
vector<int> g[N];
int a[N];
void solve()
{int res=0;cin>>n;string s;cin>>s;s="?"+s;vector<bool> st(n+10);for(int i=1;i<=n;i++){for(int j=i;j<=n;j+=i){if(st[j]) continue;if(s[j]=='0'){st[j]=true;res+=i;}else break;}}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

D:

要么到0要么到n+1,所以枚举出去哪个口

然后就贪心,什么情况下去另一侧,当然是去另一侧能加血量,如果当前能加血量肯定优先加,再跑去当前要出的口子,所以预处理另一侧加血量的贡献和能加这个血量需要付出的条件即这个过程扣血量的最小值

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
int n,m;
vector<int> g[N];
int a[N];
int s[N];
int get(int l,int r){return s[r]-s[l-1];
}
int b[N];
void solve()
{int k;cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];auto check=[&](){int sum=0,mn=0;vector<int> nxt;vector<int> need;for(int i=k+1;i<=n;i++){sum+=a[i];mn=min(mn,sum);if(sum>0){nxt.push_back(sum);need.push_back(mn);sum=0;mn=0;}}int cur=a[k];for(int i=k,j=0;i;i--){while(j<nxt.size()&&cur+need[j]>=0){cur+=nxt[j];j++;}if(cur+a[i-1]<0) return false;cur+=a[i-1];}return true;};if(check()){cout<<"YES\n";return ;}reverse(a+1,a+1+n);k=n-k+1;if(check()){cout<<"YES\n";return ;}cout<<"NO\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

http://www.lryc.cn/news/239553.html

相关文章:

  • 不停的挖掘硬盘的最大潜能
  • Java游戏之飞翔的小鸟
  • PostgreSQL (Hologres) 日期生成
  • HCIP-一、RSTP 特性及安全
  • 智能高效的转运机器人,为物流行业注入新动力
  • 操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁
  • vue3使用tsx自定义弹窗组件
  • [笔记] 错排问题 #错排
  • Ajax进阶
  • RedisTemplate使用详解
  • 6.Gin 路由详解 - GET POST 请求以及参数获取示例
  • CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤
  • IT应用运维最常用指标
  • Go中各种newreader和newbuffer的使用
  • visual studio 如何建立 C 语言项目
  • app小程序定制开发的优势|企业软件网站建设
  • 物联网AI MicroPython学习之语法 WDT看门狗外设
  • JVM线程的几种状态
  • 基于单片机停车场环境监测系统仿真设计
  • 每日一题:LeetCode-589.N叉树的前序遍历
  • PTA 7-2 简单计算器
  • 9、鸿蒙应用桌面图标外观和国际化
  • oracle rac 19c修改不同网段public ip
  • 【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解
  • OpenAI宣布暂停ChatGPT plus用户订阅,解决方案,无需等待立马升级
  • 如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中
  • 小程序存在优惠卷遍历,但是歪了
  • HarmonyOS第一课-对比Kotlin,快速入门TypeScript
  • 【自动驾驶】一些业内自动驾驶专业术语释义
  • 好用的博客评论系统 Valine 使用及避坑指南