• Codeforces Round 753 (Div. 3)(集训队加训2)


    A.

    模拟

    1. #include
    2. #define eps 1e-5
    3. #define INF 1e9
    4. using namespace std;
    5. typedef long long ll;
    6. const int N = 2e6 + 9;
    7. int a[N],cl[N];
    8. void Lan(){
    9. string s1,s2;
    10. cin>>s1>>s2;
    11. s1=" "+s1;
    12. s2=" "+s2;
    13. for(int i=1;isize();i++){
    14. cl[s1[i]-'a']=i;
    15. }
    16. ll ans=0;
    17. for(int i=2;isize();i++){
    18. ans+=abs(cl[s2[i]-'a']-cl[s2[i-1]-'a']);
    19. }
    20. cout<'\n';
    21. }
    22. int main() {
    23. ios::sync_with_stdio(false);
    24. cin.tie(0),cout.tie(0);
    25. int q;
    26. cin>>q;
    27. while (q--) {
    28. Lan();
    29. }
    30. return 0;
    31. }

    B.

    周期

    1. #include
    2. #define eps 1e-5
    3. #define INF 1e9
    4. using namespace std;
    5. typedef long long ll;
    6. const int N = 2e6 + 9;
    7. int a[N];
    8. void Lan(){
    9. ll x,n;
    10. cin>>x>>n;
    11. // t=4
    12. if(x&1){
    13. /*
    14. x,x+1,x-2,x-3,x+4,
    15. */
    16. if(n%4==1){//n-1,n
    17. cout<'\n';
    18. }else if(n%4==2){//n-2,n-1,n
    19. cout<-1<<'\n';
    20. }else if(n%4==3){//n-3,n-2,n-1,n
    21. cout<1)<<'\n';
    22. }else{
    23. cout<'\n';
    24. }
    25. }else{
    26. /*
    27. x,x-1,x+2,x+3,x-4;
    28. */
    29. if(n%4==1){//n-1,n
    30. cout<'\n';
    31. }else if(n%4==2){//n-2.n-1,n
    32. cout<1<<'\n';
    33. }else if(n%4==3){//n-3,n-2,n-1,n
    34. cout<1)<<'\n';
    35. }else{
    36. cout<'\n';
    37. }
    38. }
    39. }
    40. int main() {
    41. ios::sync_with_stdio(false);
    42. cin.tie(0),cout.tie(0);
    43. int q;
    44. cin>>q;
    45. while (q--) {
    46. Lan();
    47. }
    48. return 0;
    49. }

    C.

    线段树

    单点修改,区间查询

    1. #include
    2. #define INF 4e18;
    3. using namespace std;
    4. typedef long long ll;
    5. const int N = 2e5+ 9;
    6. ll a[N];
    7. //线段树
    8. struct node{
    9. ll mn;
    10. }seg[N<<2];
    11. inline ll tl(ll x){return x<<1;}
    12. inline ll tr(ll x){return x<<1|1;}
    13. void pushup(const int id){
    14. seg[id].mn=min(seg[tl(id)].mn,seg[tr(id)].mn);
    15. }
    16. void build(const int id,int l,int r){
    17. if(l==r){
    18. seg[id].mn=a[l];
    19. return;
    20. }
    21. int mid=(l+r)>>1;
    22. build(tl(id),l,mid);
    23. build(tr(id),mid+1,r);
    24. pushup(id);
    25. }
    26. bool inrange(int L,int R,int l,int r){return l<=L && R<=r;}
    27. bool outofrange(int L,int R,int l,int r){return L>r || R
    28. ll query(int id,int L,int R,int l,int r){
    29. if(inrange(L,R,l,r)){
    30. return seg[id].mn;
    31. }else if(!outofrange(L,R,l,r)){
    32. int mid=(L+R)>>1;
    33. return min(query(tl(id),L,mid,l,r),query(tr(id),mid+1,R,l,r));
    34. }else{
    35. return 100000000000000;//不会影响结果
    36. }
    37. }
    38. void update(int id,int l,int r,ll v){
    39. if(l==r){
    40. seg[id].mn=v;
    41. }else{
    42. int mid=(l+r)>>1;
    43. if(seg[tl(id)].mn>seg[tr(id)].mn){//找到最小覆盖
    44. update(tr(id),mid+1,r,v);
    45. }else{
    46. update(tl(id),l,mid,v);
    47. }
    48. pushup(id);
    49. }
    50. }
    51. void solve(){
    52. int n;
    53. cin>>n;
    54. for(int i=1;i<=n;i++){
    55. cin>>a[i];
    56. }
    57. build(1,1,n);
    58. ll ans=seg[1].mn;
    59. ll cur=0;
    60. for(int i=1;i<=n-1;i++){
    61. ans=max(ans,seg[1].mn-cur);//操作
    62. cur=seg[1].mn;
    63. update(1,1,n,100000000000000);//单点修改
    64. }
    65. cout<<max(ans,seg[1].mn-cur)<<'\n';
    66. }
    67. int main() {
    68. ios::sync_with_stdio(false);
    69. cin.tie(0),cout.tie(0);
    70. int q;
    71. cin>>q;
    72. while(q--){
    73. solve();
    74. }
    75. return 0;
    76. }

    D.

    贪心

    1. #include
    2. #define INF 1e9
    3. using namespace std;
    4. typedef long long ll;
    5. const int N=2e5+9;
    6. struct node{
    7. int val;
    8. char flag;
    9. }a[N];
    10. inline void lan(){
    11. int n;
    12. cin>>n;
    13. for(int i=1;i<=n;i++){
    14. cin>>a[i].val;
    15. }
    16. for(int i=1;i<=n;i++){
    17. cin>>a[i].flag;
    18. }
    19. sort(a+1,a+1+n,[](const node a,const node b){
    20. if(a.flag==b.flag){
    21. return a.val
    22. }
    23. return a.flag
    24. });
    25. for(int i=1;i<=n;i++){
    26. if(a[i].val!=i){
    27. if(a[i].flag=='B' && a[i].val
    28. cout<<"NO"<<'\n';
    29. return;
    30. }else if(a[i].flag=='R' && a[i].val>i){
    31. cout<<"NO"<<'\n';
    32. return;
    33. }
    34. }
    35. }
    36. cout<<"YES"<<'\n';
    37. }
    38. int main(){
    39. ios::sync_with_stdio(false);
    40. cin.tie(0),cout.tie(0);
    41. int q;
    42. cin>>q;
    43. while(q--){
    44. lan();
    45. }
    46. return 0;
    47. }

  • 相关阅读:
    RedHat8升级GLIBC_2.29,解决ImportError: /lib64/libm.so.6: version `GLIBC_2.29
    【极术读书】赠卡活动第二期,免费领极客时间月卡系统学习技术管理
    maven中dependencyManagement与dependencies的区别与联系
    Java 操作RestHighLevelClient查询详解
    jupyter notebook使用相对路径的方法
    并查集
    “还是太年轻”,实习生花2分钟解决bug,老程序员的反应耐人寻味
    【单片机基础】I2C通信-基于STC89C52RC
    一文看懂这些海外社媒平台属性,跨境外贸必看
    一种用于保证多方子系统数据一致性的方法
  • 原文地址:https://blog.csdn.net/Lanthamum/article/details/136636864