首页 > 其他分享 >TheForces Round #24 (DIV3-Forces)11.1

TheForces Round #24 (DIV3-Forces)11.1

时间:2023-11-02 16:23:18浏览次数:36  
标签:24 typedef const int double TheForces 11.1 long define

TheForces Round #24 (DIV3-Forces)

A - Banis and Cards

思路:不大于n的m的倍数的和

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=5e5+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;


void solve(){
    int n,m;cin>>n>>m;
    int c=n/m;
    cout<<c*(c+1)/2*m<<'\n';
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

B - Left or Right Shift

思路:要求字典序最小,找出所有字符变成a需要的最少次数,若当前k不够,直接往前转变是最优的;若当前k多出,可通过前后转变又变回a,只需判断当前k的奇偶

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=5e5+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;


void solve(){
    int n,k;cin>>n>>k;
    string s;cin>>s;
    string ans;
    for(int i=0;i<n;++i){
        int l=s[i]-'a',r=26-l;
        int x=min(min(l,r),k);
        char c;
        if(min(l,r)<=k)c='a';
        else c=s[i]-x;
        k-=x;
        ans.push_back(c);
        if(i==n-1&&k%2)ans.back()++;
    }
    cout<<ans<<'\n';
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

C - Yet Another ÷2 or +1 Problem

思路:暴力枚举操作,若当前字符全相等直接输出即可

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=5e5+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;


void solve(){
    int n,k;cin>>n>>k;
    string s;cin>>s;
    for(int i=0;i<k;++i)s.push_back(' ');
    int l=0,r=n-1,len=n;
    while(k>0){
        bool p=true;
        while(r-l>1&&s[l]==s[r]) {
            if (r > 0 && s[r] != s[r - 1])p = false;
            l++, r--;
        }
        if(s[l]==s[r]){
            if(p){
                for(int i=0;i<len;++i)cout<<s[i];
                for(int i=0;i<k;++i)cout<<s[len-1];cout<<'\n';
                return ;
            }
//            if(k>1){
//                r=len/2-1;
//                l=0;
//                k-=2;
//                len/=2;
//            }else{
//                for(int i=0;i<len;++i){
//                    cout<<s[i];
//                }cout<<s[len-1]<<'\n';
//                return ;
//            }
            s[len]=s[len-1];
            r=len,l=0;
            len++,k--;
        }else{
            r=len/2-1;
            l=0;
            k--;
            len/=2;
        }
//        cout<<l<<' '<<r<<'\n';
    }
    for(int i=0;i<len;++i)cout<<s[i];cout<<'\n';
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

D - Sum and Difference

思路:可以发现最小的和为2l+2,要求所有和不一样,可以通过+3、-2构造出和每次加一;即构造方案为l+2、l、l+3、l+1、l+4、l+2...

#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=2e6+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;

void solve() {
    int n,l,r;cin>>n>>l>>r;
    vector<int>ans;
    int now=l;
    if(now+2<=r)ans.push_back(now+2);
    ans.push_back(l);
    while(now+3<=r){
        ans.push_back(now+=3);
        ans.push_back(now-=2);
        if(ans.size()>=n)break;
    }
    if(ans.size()>=n){
        for(int i=0;i<n;++i)cout<<ans[i]<<' ';cout<<'\n';
    }else cout<<"-1\n";
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
    cin>>T;
//    init();
    while(T--){
        solve();
    }
    return 0;
}
View Code

 

E - L-shaped Dominoes

思路:dp啦,dp[i][j][k]维护前i列且第i列的a对应j、b对应k的状态,可以发现jk一共有四种情况00、01、10、11,维护每种状态即可啦

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=2e6+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;

void solve() {
    int n;cin>>n;
    vector<vector<vector<int>>>f(n+5,vector<vector<int>>(2,vector<int>(2,0)));
    vector<int>a(n+5),b(n+5);
    for(int i=1;i<=n;++i)cin>>a[i];
    for(int i=1;i<=n;++i)cin>>b[i];
//    f[1][1][0]=a[1],f[1][0][1]=b[1],f[1][1][1]=a[1]+b[1];
    for(int i=2;i<=n;++i){
        int s=max(max(f[i-1][0][0],f[i-1][1][1]),max(f[i-1][1][0],f[i-1][0][1]));
        if(i>2)f[i][0][0]=max(f[i][0][0],s);
        f[i][1][0]=max(f[i][1][0],f[i-1][0][0]+a[i-1]+b[i-1]+a[i]);
        f[i][0][1]=max(f[i][0][1],f[i-1][0][0]+a[i-1]+b[i-1]+b[i]);
        f[i][1][1]=max(f[i][1][1],max(max(f[i-1][1][0],f[i-1][0][0])+b[i-1],max(f[i-1][0][1],f[i-1][0][0])+a[i-1])+a[i]+b[i]);
    }
    cout<<max(max(f[n][0][0],f[n][1][1]),max(f[n][1][0],f[n][0][1]))<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
    cin>>T;
//    init();
    while(T--){
        solve();
    }
    return 0;
}
View Code

 

标签:24,typedef,const,int,double,TheForces,11.1,long,define
From: https://www.cnblogs.com/bible-/p/17805683.html

相关文章

  • 【蓝桥杯】1024 第 2 场算法双周赛(1~5)
    【蓝桥杯】1024第2场算法双周赛新生【算法赛】-蓝桥云课(lanqiao.cn)#include<iostream>usingnamespacestd;intmain(){printf("15");return0;}铺地板【算法赛】-蓝桥云课(lanqiao.cn)只要面积乘积是\(6\)的倍数即可,特判一下宽和高#include<bits/s......
  • C4D2024+Redshift 3.5.20 三维计算机动画、建模、模拟和渲染软件_中文/英文WIN版
     Cinema4D是什么?Cinema4D2024下载:hereitis.cn/soft/c4dCinema4D是一款专业的3D建模、动画、模拟和渲染解决方案软件。它的快速、强大、灵活和稳定的工具集使设计、运动图形、VFX、AR/MR/VR、游戏开发和所有类型的可视化专业人员获得更容易和高效的3D工作流程。无......
  • 每日总结-23.11.1
    软件构造作业生成算式存入csvpackagekousuanti;importjava.util.Scanner;publicclassGongneng{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);Chutichuti=newChuti();System.out.println("请确......
  • 【杂记】路在何方2023.11.1
    精神状态未知,今天考完了人机对话,期中考试将在一周后进行​。这几天进行了多科模拟考试,分数平平无奇,而今晚的物理成为击倒我的最后一枪​,轻舟已撞大冰山TAT​分析:物理的计算是我的强项,但是选择题错的太多,​主要弱点是分析电路故障,​以及对概念的理解不清。回想过去的两个月,我浪费......
  • 11.1
    11.1转义字符、语句、注释转义字符\?:在书写连续多个问号时防止被解析三字字母\':表示字符常量'\":表示字符常量"\\:表示双斜杠防止它被解释为一个转义序列符\a:警报\b:退格键,不删除字符,回退光标\f:换页符\n:换行符\r:回车符,光标移到同一行的开头\t:制表符,光标移到下一个水平制......
  • 2023-2024-1 20231402《计算机基础与程序设计》第六周学习总结
    2023-2024-120231402《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第6周作业这个作业的目标自学计算机科学概论第7章《C语言程序设计》第5章作业......
  • 2023.11.1——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 11.1
    四个小时T1硬是没想到双指针。只能说学啥就嗯对着啥输出。T1挺简单一个题。发现区间右端点向右的同时,左端点不向左,就可以用双指针。\(r\)一直向右,如果当前区间不合法\(l\)也向右直到合法。建一个权值线段树维护两个端点之间的区间的最长连续段(常规),然后每次给答案加上区间长......
  • P8424 [JOI Open 2022] 跷跷板(Seesaw)
    Description一根长度为\(10^9\)的直杆从左到右水平放置。你可以忽略这根杆的重量。共有\(N\)个砝码挂在这根杆上,每个砝码的质量为一单位。这\(N\)个砝码的位置两两不同。第\(i(1\leqi\leqN)\)个砝码的位置为\(A_i\)。即,第\(i\)个砝码到直杆最左端的距离为\(A_i\)......
  • 刘铭诚:11.1-2美盘黄金行情涨跌走势解析及期货原油价格操作建议
    黄金行情走势分析——白盘波动不大,午间下跌预期给到1975一线入场多单,目前到达1983一线,短线拿到8个点。整体来看今日的波动振幅还没有打开,但是从相关美元指数来看比较利好美元,目前更是来到106.85.晚间有望向107水平关口发起冲锋,届时黄金还会承受打击下跌。昨日黄金受到多次......