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

CF979

CF979(div2)

A. A Gift From Orangutan(贪心)

题意:有一个长度为n的数组a,构造数组b和c,存在bi=数组a的最小值,ci=数组a的最大值,求∑i=1nci-bi的最大值

分析:让数组b全部都赋值为a的最小值,数组c全部赋值为a的最大值

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){int n;cin>>n;int a[n+10];for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1);int sum=0;for(int i=1;i<n;i++){sum+=a[n]-a[1];}cout<<sum<<endl;
}
int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)sol();return 0;
}
​

B.Minimise Oneness(构造)

题意:对于任意二进制字符串t,设ft是t的子序列中只包含0的个数,gt是t的子序列中至少包含一个1的个数,给定|ft-gt|,求t。子序列可以不连续

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){int n;cin>>n;for(int i=1;i<n;i++){cout<<"0";}cout<<"1"<<endl;
}
int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)sol();return 0;
}
​

C. A TRUE Battle(博弈)

题意:给定一个二进制字符串,Alice和Bob先后可以放&或|放入两个字符中间,如果最后放完的答案是true,输出YES,否则NO

分析:对于最左边的1来说,如果插入|无法改变它,同理右边。如果存在11,可以插入|,形成1|1,无法改变它。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void sol(){int n;cin>>n;string s;cin>>s;int len=s.size();if(s[0]=='1'||s[len-1]=='1'){cout<<"YES"<<endl;return ;}for(int i=0;i<len-1;i++){if(s[i]=='1'&&s[i+1]=='1'){cout<<"YES"<<endl;return;}}cout<<"NO"<<endl;return; 
}
int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)sol();return 0;
}
​

D. QED's Favorite Permutation(排序)

题意:给定长度为n的排序p,字符串s,QED喜欢非递减排序的排列,可以进行以下任意次操作:1.选择索引i,使得si=L,交换pi和pi-1 2.选择索引i,使得si=R,交换pi和pi+1,给定q个查询,每次查询,选择一个索引i,并将si从L更改为R或R更改为L,这些更改都是持久的

分析:

LR串只有四种情况

...LLL.....循环向左

....RRR...循环向右

....RL....互相交换

....LR...以LR中间为分界线

只要不存在LR的情况一定可以排好序

用数组ok记录每个数字和前面的数是否有大于当前牵引的数,用数组qe判断LR的存在,如果最后问题cnt=0就可以排好序

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+10;
bool ok[N];
int qe[N],a[N];
void sol(){int n,q;cin>>n>>q;for(int i=1;i<=n;i++){ok[i]=false;qe[i]=0;cin>>a[i];} string s;int maxn=0;cin>>s;s='#'+s;for(int i=1;i<=n;i++){maxn=max(maxn,a[i]);if(maxn>i){ok[i]=true;}}int cnt=0;for(int i=1;i<=n-1;i++){if(ok[i]&&s[i]=='L'&&s[i+1]=='R'){cnt++;qe[i]=1;}}while(q--){int id;cin>>id;if(s[id]=='L'){s[id]='R';if(s[id+1]=='R'&&qe[id]==1){qe[id]=0;cnt--;}if(s[id-1]=='L'&&ok[id-1]){qe[id-1]=1;cnt++;}}else if(s[id]=='R'){s[id]='L';if(s[id-1]=='L'&&qe[id-1]==1){qe[id-1]=0;cnt--;}if(s[id+1]=='R'&&ok[id]){qe[id]=1;cnt++;}}if(cnt==0)cout<<"YES"<<endl;else cout<<"NO"<<endl;}
​
}
int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int t;cin>>t;while(t--)sol();return 0;
}
​

http://www.mrgr.cn/news/62949.html

相关文章:

  • Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践
  • SpringFactoriesLoader
  • 【CTF】 文件包含漏洞——data伪协议 【详】
  • 速来!一篇笔记带你了解 MS Office 高频考点(Excel 篇)
  • [bug修复]python安装包出现超长路径导致安装失败
  • 2024外贸还有必要做Linkedln吗?
  • 函数的调用
  • JS中DOM和BOM
  • 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?
  • 【力扣热题100】[Java版] 刷题笔记-101. 对称二叉树
  • 嵌入式——了解stm32
  • 新加坡托管服务器VS香港托管服务器:AI时代的选择策略
  • Android 音量调节流程分析
  • 2024年网鼎杯青龙组逆向2题wp
  • 量化交易backtrader实践(三)_指标与策略篇(6)_股票软件指标参考A
  • C++集合运算函数总结-
  • DCS系统
  • LVGL盒子模型的概念
  • 五、鸿蒙开发-组件状态管理
  • OpenCSG携手书生·浦语:InternLM2.5-20B-Chat 正式上线,共建AI未来新生态
  • 哪里能找到海量短视频素材和制作教程?
  • 高效记录编程笔记
  • Spring IOC
  • 使用UDP实现发送和接收
  • 数据结构,问题 C: 后缀表达式
  • 《别了,浔川社团官方;你好,浔川社团官方联合会》