A.ifelse
#include <bits/stdc++.h>
using namespace std;
void solve(){
int a,b,c,x,y;cin>>a>>b>>c>>x>>y;
if(x-a>0)c-=(x-a);
if(y-b>0)c-=(y-b);
if(c>=0)cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
int main(){
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
B.遍历一遍
#include <bits/stdc++.h>
using namespace std;
int a[100];
void solve(){
int n;cin>>n;int ans=0;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=n;i>1;i--){
if(a[i]<=a[i-1]){
if(a[i]==0){
cout<<-1<<endl;
return ;
}
while(a[i]<=a[i-1]){
a[i-1]=a[i-1]/2;
ans++;
}
}
}
cout<<ans<<endl;
}
int main(){
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
C.如果前面没有0 后面没有1 就有嫌疑
#include <bits/stdc++.h>
using namespace std;
int a[100];
void solve(){
string s;cin>>s;int mp1=0,mp0=s.size()-1;
for(int i=0;i<s.size();i++){
if(s[i]=='1')mp1=i;
}
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
mp0=i;break;
}
}
cout<<mp0-mp1+1<<'\n';
}
int main(){
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
D. 存图 再dfs遍历 如果节点访问过就再加一条( 贴上jly的暴力美学)
#include <bits/stdc++.h>
using i64 = long long;
void solve() {
int n;
std::cin >> n;
std::vector<int> p(n);
std::vector<bool> leaf(n, true);
for (int i = 0; i < n; i++) {
std::cin >> p[i];
p[i]--;
if (p[i] != i) {
leaf[p[i]] = false;
}
}
std::vector<bool> vis(n);
std::cout << std::count(leaf.begin(), leaf.end(), true) << "\n";
for (int i = 0; i < n; i++) {
if (leaf[i]) {
std::vector<int> a;
for (int j = i; !vis[j]; j = p[j]) {
vis[j] = true;
a.push_back(j);
}
std::reverse(a.begin(), a.end());
std::cout << a.size() << "\n";
for (auto x : a) {
std::cout << x + 1 << " \n"[x == a.back()];
}
}
}
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t;
std::cin >> t;
while (t--) {
solve();
}
return 0;
}
E.记录不够削减到'a'的 把剩下的削减即可
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n,k;cin>>n>>k;
string s;cin>>s;int maxn=0;
for(int i=0;i<n;i++){
if(s[i]-'a'>k){
char l=s[i]-(k-maxn);
char r=s[i];
for(int j=0;j<n;j++){
if(l<=s[j]&&s[j]<=r){
s[j]=l;
}
}
break;
}
maxn=max(maxn,s[i]-'a');
}
for(int i=0;i<n;i++){
if(s[i]<='a'+maxn){
s[i]='a';
}
}
cout<<s<<'\n';
}
int main(){
int t;cin>>t;
//int t=1;
while(t--){
solve();
}
}
F. 天梯赛 龙龙送外卖原题 就是我们假设要返回起始点 我们如果新加一个点那么我们一定可以回溯到已经走过的路 我们去在回来就是新加的点的贡献 我们只需最后将结果/2即可(代码量太大)
G. 好像是个dp 晕晕晕沾上大佬的G的题解
Codeforces Round #787 (Div. 3) 题解 - BurnoutAg7 - 博客园 (cnblogs.com)