SDUT 2023 summer team contest(for 22) - 12

news2024/10/7 8:25:18

A - Today's Word

 题意:就是给你一个字符串S0,让你输出S10^{100}的后m位是什么,

思路:我们知道Sn=Sn-1的前一半+Sn-1+next(Sn-1的后一半的后一位,z的后一位是a),next是求其下一位(z的下一位是a),我们可以知道当Sn的的长度大于2*m时,答案只会是其后缀的变换,10^{100}%26==16

故我们只需要将其长度变到大与2*m后,进行next变换即可

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 1e6 + 10, M = 1010, inf = 0x3f3f3f3f, mod = 1e6 + 7, P = 13331;
const double eps = 1e-8;
int n, m;
string s;
string now, p, str;
string fun(string ss)
{
    for (int i = 0; i < ss.size(); i++)
    {
        if (ss[i] != 'z')
            ss[i]++;
        else
            ss[i] = 'a';
    }
    return ss;
}
void solve()
{
    cin >> n >> m;
    cin >> s;
    p = s;
    now = s;
    int len = n;
    int cnt = 0;
    for (int i = 1;; i++)
    {
        p.clear();
        p += now.substr(0, len / 2);
        p += now;
        p += fun(now.substr(len / 2));
        len = p.size();
        now = p;
        cnt = i;
        if (p.size() / 2 >= m)
        {
            str = p.substr(len - m);
            break;
        }
    }
    string ans = str;
    int x=16;
    while(x<=cnt)//炒作次数可能大于16,那我们就加上26这个循环节即可
    x+=26;
    for (int i = 1; i <= x - cnt; i++)
    {
        ans = fun(str);
        str = ans;
    }
    cout << ans << endl;
}
signed main()
{
    Ysanqian;
    int T;
    T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

F - Timaeuszf

题意:你有 A个原料,每 B个合成一个产品。(这题当时也没想出来,看了看巨佬的)

每一次合成你可以选择下列两种 buff的任意一种:

1 : P% 的概率合成双倍产物
2 : Q% 的概率返还一个原料
求期望最多合成多少产物。

思路
设 dp(i)表示还剩下  i 个原料时的最大期望。

显然可以转移到dp(i)的有两个大事件,两个大事件有分成功不成功,小事件的和对应大事件

1:当B⩾2时,

dp[i]=max( P×(dp[i−B]+2)+(1−P)×(dp[i−B]+1) , Q×(dp[i−B+1]+1)+(1−Q)×(dp[i−B]+1) ).

2:当B=1时,选择第一种方法

dp[i]=P×(dp[i−1]+2)+(1−P)×(dp[i−1]+1)

选择第二种方法(代入上面的式子,发现存在自环依赖,左边有dp[i],右边也有dp[i],需要整理表达式):

dp[i]=Q×(dp[i]+1)+(1−Q)×(dp[i−1]+1)

dp[i]=Q×dp[i]+Q+(1−Q)×dp[i−1]+(1−Q)

(1−Q)×dp[i]=(1−Q)×dp[i−1]+1

dp[i]=dp[i−1]+11−Q

由上述式子得(已知dp[0]=0): dp[i]=dp[0]+i×d=0+i×11−Q=i1−Q

两者取最大值即可.

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 1e6 + 10, M = 1010, inf = 0x3f3f3f3f, mod = 1e6 + 7, P = 13331;
const double eps = 1e-8;
int a, b;
double p, q;
double f[N];
void solve()
{
    cin >> a >> b >> p >> q;
    q = 1.0 * q / 100;
    p = 1.0 * p / 100;
    for (int i = b; i <= a; i++)
        if (b == 1)
            f[i] = max(p * (f[i - 1] + 2) + (1 - p) * (f[i - 1] + 1), 1.0 * i / (1 - q));
        else
            f[i] = max(p * (f[i - b] + 2) + (1 - p) * (f[i - b] + 1), q * (f[i - b + 1] + 1) + (1 - q) * (f[i - b] + 1));
    printf("%.15lf\n", f[a]);
}
signed main()
{
    Ysanqian;
    int T;
    T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

J - Similarity (Easy Version)

思路:纯暴力即可

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 1e6 + 10, M = 1010, inf = 0x3f3f3f3f, mod = 1e6 + 7, P = 13331;
const double eps = 1e-8;
int n;
string s[N];
int ans;
void check(string a, string b)
{
    for (int i = 0; i < a.size(); i++)
    {
        for (int j = 0; j < b.size(); j++)
        {
            if (a[i] != b[j])
                continue;
            int l = i, r = j;
            while (l < a.size() && r < b.size())
            {
                if (a[l] != b[r])
                    break;
                l++, r++;
            }
            ans = max(r -j, ans);
        }
    }
}
void solve()
{
    ans = 0;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> s[i];
    for (int i = 1; i <= n; i++)
        for (int j = i + 1; j <= n; j++)
            check(s[i], s[j]);
    cout << ans << endl;
}
signed main()
{
    Ysanqian;
    int T;
    // T = 1;
    cin >> T;
    while (T--)
        solve();
    return 0;
}

K - Similarity (Hard Version)

题意:给你三个数,n,m,k,分别是需要构造的数量,最大相识度,每一个的长度

让你输出是否可以构造出这么多

思路:首先就是先看特判情况

1:①m==0,n>26;②m!=0,m>=k

有解情况

2:①m==0,输出长度为k的全由第i个小写字母组成的串即可

②m!=0,前面先构造长度为m-1的a串(相似部分),后面考虑构造abab,acaca....azaz,bcbc,bdbd..bzbz,cdcd,这种方法共有25*(25-1)/2==300,正好满足题意

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 1e6 + 10, M = 1010, inf = 0x3f3f3f3f, mod = 1e6 + 7, P = 13331;
const double eps = 1e-8;
int n, m, k;
string shift(string s, int idx, int tag)
{
    if (idx == 1)
        return s;
    for (int i = 0; i < s.size(); i++)
    {
        if (tag == 1 && i % 2)
            s[i]++;
        if (tag == 2)
        {
            if (!(i % 2))
                s[i]++;
            else
                s[i] = s[i - 1];
        }
    }
    return s;
}
void solve()
{
    cin >> n >> m >> k;
    if (m == 0)
    {
        if (n > 26)
            cout << "No" << endl;
        else
        {
            cout << "Yes" << endl;
            char s = 'a';
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= k; j++)
                    cout << s;
                s++;
                cout << endl;
            }
        }
    }
    else
    {
        if (m >= k)
            cout << "No" << endl;
        else
        {
            cout << "Yes" << endl;
            string p, s, backup;
            for (int i = 1; i < m; i++)
                p += "a";
            for (int i = 1; i <= k - m + 1; i++)
            {
                if (i % 2)
                    s += "a";
                else
                    s += "b";
            }
            backup = s;
            for (int i = 1; i <= n; i++)
            {
                s = shift(s, i, 1);
                cout << p << s << endl;
                if (s[1] == 'z')
                {
                    s = backup;
                    s = shift(s, i, 2);
                    backup = s;
                }
            }
        }
    }
}
signed main()
{
    Ysanqian;
    int T;
    T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

H - Neil's Machine

 题目:有两个长度为 n  只存在小写字母的字符串 s,t 。每次操作可 以选择一个正数 k (1 ≤ k ≤ 25), 并选择 S 的一个后缀在字母表的位置后移动 k位 ,问至少几次操作可以令 s=t 。

思路:偏移量有点不是很熟,就直接模拟了毕竟每次就改一个,时间也没问题

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 1e6 + 10, M = 1010, inf = 0x3f3f3f3f, mod = 1e6 + 7, P = 13331;
const double eps = 1e-8;
int n, now, ans;
string a, b;
char fun(char p)
{

    if (p + now <= 'z')
        p = p + now;
    else
        p = 'a' + now - 1 - ('z' - p);
    return p;
}
void solve()
{
    cin >> n;
    cin >> a >> b;
    for (int i = 0; i < n; i++)
    {
        if (a[i] != fun(b[i]))
        {
            ans++;
            if (a[i] >= b[i])
                now = a[i] - b[i];
            else
                now = 26 + a[i] - b[i];
        }
    }
    cout << ans << endl;
}
signed main()
{
    Ysanqian;
    int T;
    T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/846519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01《Detecting Software Attacks on Embedded IoT Devices》随笔

2023.08.05 今天读的是一篇博士论文 论文传送门&#xff1a;Detecting Software Attacks on Embedded IoT Devices 看了很长时间&#xff0c;发现有一百多页&#xff0c;没看完&#xff0c;没看到怎么实现的。 摘要 联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标&…

springboot vue 初步集成onlyoffice

文章目录 前言一、vue ts1. 安装依赖2. onlyoffice组件实现3. 使用组件4. 我的配置文件 二、springboot 回调代码1. 本地存储 三、效果展示踩坑总结 前言 对接onlyoffice&#xff0c;实现文档的预览和在线编辑功能。 一、vue ts 1. 安装依赖 npm install --save onlyoffi…

【个人环境问题排查】解决一个离谱的BurpSuite Professional代理问题(无法访问此网站,Whitelabel Error Page)

最近打开Burp的时候&#xff0c;发现内置浏览器访问不任何网站了&#xff0c;用证书的方式在普通浏览器也访问不了&#xff0c;非常疑惑&#xff0c;最后发现竟是一个非常离谱的问题。 问题 问题如上述&#xff0c;这里贴一下截图&#xff0c;两种情况。 一种是无法访问此网站…

(6)将Mission Planner连接到Autopilot

文章目录 前言 6.1 设置连接 6.2 故障处理 6.3 复合连接的故障处理 6.4 相关话题 前言 本文解释了如何将 Mission Planner 连接到自动驾驶仪上&#xff0c;以便接收遥测数据并控制飞行器。 &#xff01;Note 对于已有 ArduPilot 固件的安装&#xff0c;或没有现有 Ardu…

Linux 目录结构

初学Linux&#xff0c;首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2bin --- 系统启动时需要的执行文件&#xff08;二进制&#x…

Idea配置Scala开发环境

1.首先安装scala插件&#xff1a; File--->Setting---->plugins,在输入框中输入scala&#xff0c;然后点击“Install”即可安装scala&#xff0c;需要稍微等待几分钟。 2 创建项目&#xff1a; File ---->new---->project-----Maven--->Next----输入名称(test…

【雕爷学编程】Arduino动手做(193)---移远 BC20 NB+GNSS模块11

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

【具身智能】前沿思考与总结(DALL-E-Bot TinyBot)

1. DALL-E-Bot DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics (robot-learning.uk) **&#xff08;2023-05-04&#xff09;**DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics DALL-E-Bot&#xff1a;将网络规模的扩散模型引入机器人 第…

如何实现环卫项目运营的数字化管理,达到企业降本增效的目的?

数字环卫是指利用数字技术和数据驱动的方法来改善环卫流程和管理。数字环卫的底层逻辑在于利用技术来优化运营、提高效率并降低环卫项目管理成本。如何实现环卫工程运营数字化管理&#xff0c;达到降本增效的目标&#xff1a; 1.数据收集和分析&#xff1a;实施数据收集机制&a…

如今市面上有哪些优秀的PCB设计软件

PCB设计软件作为一个电子设计行业中重要的工具&#xff0c;其作用不言而喻。随着电子行业的快速发展&#xff0c;各种各样的新型PCB设计软件层出不穷&#xff0c;而选择一款适合自己使用的PCB设计软件&#xff0c;已成为电子工程师不可避免的任务。 下面我们将为大家介绍常见的…

Java开发 - Redis事务怎么用?

前言 最近博主感觉捅了Redis窝&#xff0c;从Redis主从&#xff0c;哨兵&#xff0c;集群&#xff0c;集群原理纷纷讲了一遍&#xff0c;不知道大家都学会了多少&#xff0c;想着送佛送到西&#xff0c;不如再添一把火&#xff0c;所以今天带给大家的博客是Redis事务&#xff…

2.4g遥控台灯开发方案,采用宇凡微2.4g合封芯片

普通台灯光源光谱固定且有频闪&#xff0c;长时间使用容易导致眼部疲劳。宇凡微推出的护眼台灯方案&#xff0c;具有无极色温调节&#xff0c;光线柔和不刺眼、无频闪&#xff0c;具有多种功能模式&#xff0c;可用2.4g遥控器调节。 一、遥控护眼台灯方案介绍 护眼台灯方案采用…

Progress in Neurobiology:大脑活动的自主模式

摘要 自主神经系统和中枢神经系统之间的相互作用对人脑功能和健康的相关性尚不清楚&#xff0c;尤其是当这两个系统都受到睡眠剥夺(SD)的挑战时。本研究测定了健康参与者的大脑活动(采用fMRI)、脉冲和呼吸信号&#xff0c;以及β-淀粉样蛋白负荷(采用PET)。研究结果发现&#…

Jtti:Ubuntu静态IP地址怎么配置

在 Ubuntu 中配置静态 IP 地址需要编辑网络配置文件。以下是在 Ubuntu 20.04 版本中配置静态 IP 地址的步骤&#xff1a; 打开终端&#xff0c;以管理员身份登录或使用 sudo 权限。 使用以下命令打开网络配置文件进行编辑&#xff1a; sudo nano /etc/netplan/00-installer-…

使用PhpSpreadsheet 导出excel文件根据数据判断设置文字颜色

public function index(){//接收前端参数 查询数据出来 目前演示为测试数据$data [["id" > 1,"name" > "小黄","age" > "10"],["id" > 2,name > "小红","age" > "11…

Python(Web时代)——jinja2模板

简介 Jinja2是Flask框架默认支持的模板引擎&#xff0c;是python的web项目中被广泛应用的一种模板引擎&#xff0c;jinja2的作者与Flask是同一个人。 jinja2具有以下特点&#xff1a; 非常灵活&#xff0c;提供了控制结构、表达式与继承等 性能好 可读性强 渲染一个模板&a…

python_day19_递归

拓展 import osdef test_os():# 列出路径下内容print(os.listdir("D:/阿里云"))# 指定路径是否为文件夹print(os.path.isdir("D:/阿里云"))# 指定路径是否存在print(os.path.exists("D:/阿里云"))if __name__ __main__:test_os()递归查文件 每…

Web安全——Burp Suite基础上

Burp Suite基础 一、Burp Suite安装和环境配置如何命令行启动Burp Suite 二、Burp Suite代理和浏览器设置FireFox设置 三、如何使用Burp Suite代理1、Burp Proxy基本使用2、数据拦截与控制3、可选项配置Options客户端请求消息拦截服务器端返回消息拦截服务器返回消息修改正则表…

杰理-改变文字背景颜色

杰理-改变文字背景颜色 text->elm.css.background_color RGB565(100,0,0);

SIMATIC WINCC V8.0安装教程(Win11系统)

SIMATIC WINCC V8.0安装教程(Win11系统) 1. 首先,安装之前需要检查软件与操作系统的兼容性,否则在安装或者使用过程中会出现各种问题。 以WinCC V8.0为例,兼容性列表列出与之兼容的操作系统版本以及注意事项,图中打钩的部分为兼容,没有打钩的部分为不兼容。 2. 在window…