codeforces 895D

ollama服务暴露公网?三步搞定Nginx反向代理配置(避坑指南) 本文详细介绍了如何通过Nginx反向代理安全地将Ollama服务暴露到公网,避免直接修改OLLAMA_HOST带来的安全隐患。文章提供了从SSL证书部署到高级安全加固的全流程实战指南,包括IP白名单、基础认证、速率限制等企业级安全措施,帮助用户实现安全可靠的外部访问。 阅读详情

(组合数学)
题意:给定两个由全英文字母构成的字符串s1,s2,保证字典序s1<s2,求有多少个s3,使得s1<s3<s2并且s3为s1的字母所组成的一个排列。

思路:
  首先统计s1串有哪些字母,每个字母出现了多少次,并用一个num数组保存下来。这样我们起码知道s3由哪些字母构成。然后想到可以先算字典序比s1小的字符串的数目,再算出字典序比s2小的字符串的数目,那么这两个结果一减,就是答案了。
  第一种数目比较好求,直接求出s1是它本身排列的第几位即可。而s3由于不是由s1转换而成的就有点不好办,于是想到可以将s3转换成s1字母构成的某种形式,再利用相同的方法求。
  在求本身排列是第几位的过程中,用i遍历0到len,依次求出:从当前位比较结果来看,有多少串字典序小于s1。然后对于每个i,求出当前位的结果(这里用到了排列组合知识+一个小优化)。最后相加得到答案。

(公式懒得写了..这个编辑器有点不太会用。话说,还是要多敲题,这题思路虽然出来了,敲得贼慢…)

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long

using namespace std;
const int maxn = 1000010;
const LL mod = 1e9 + 7;

bool s2_smaller, s2_bigger;
int num[30], sum[30];
char s1[maxn], s2[maxn];
LL fac[maxn], inv_fac[maxn];

LL pow(LL a, LL b) {
    LL ret = 1;
    while(b) {
        if(b&1)
            ret = ret * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return ret;
}

void pre_treat(int len) {
    fac[0] = inv_fac[0] = 1;
    for(int i=1; i<=len; i++) {
        fac[i] = (LL)i * fac[i-1] % mod;
        inv_fac[i] = pow((LL)fac[i], mod-2);
    }
}

void init(int len) {
    for(int i=0; i<len; i++)
        num[s1[i]-'a'] ++;
    sum[0] = num[0];
    for(int i=1; i<26; i++)
        sum[i] = sum[i-1] + num[i];
}

void transform_s2(int len) {
    init(len);
    for(int i=0; i<len; i++) {
        int alpha = s2[i] - 'a';
        if(!s2_smaller && !s2_bigger) {
            if(num[alpha])
                num[alpha] --;
            else {
                for(int j=alpha-1; j>=0; j--) if(num[j]) {
                    s2_smaller = true; //puts("small");
                    s2[i] = j + 'a'; num[j] --;
                    break ;
                }
                if(s2_smaller) continue ;
                for(int j=alpha+1; j<26; j++) if(num[j]) {
                    s2_bigger = true; //puts("big");
                    s2[i] = j + 'a'; num[j] --;
                    break ;
                }
                if(s2_bigger) continue ;
            }
        }
        else if(s2_smaller) {
            for(int j=25; j>=0; j--) if(num[j]) {
                s2[i] = j + 'a'; num[j] --;
                break ;
            }
        }
        else {//s2_bigger
            for(int j=0; j<26; j++) if(num[j]) {
                s2[i] = j + 'a'; num[j] --;
                break ;
            }
        }
    }
}

LL solve(char *s, int len) {
    init(len);
    LL ret = 0;
    for(int i=0; i<len; i++) {
        int alpha = s[i] - 'a';
        if(alpha > 0 && sum[alpha-1] > 0) {
            LL t1 = fac[len-i-1], t2 = 0;
            for(int j=0; j<26; j++) if(num[j]) {
                t1 = t1 * inv_fac[num[j]] % mod;
                if(j < alpha)
                    t2 = (t2 + num[j]) % mod;
            }
            ret = (ret + t1 * t2 % mod) % mod;
        }
        //printf("------i:%d ret:%I64d\n",i,ret);
        num[alpha] --;
        for(int j=alpha; j<26; j++)
            sum[j] --;
    }
    return ret;
}

int main() {
    //freopen("test.txt","r",stdin);
    s2_smaller = s2_bigger = false;
    scanf("%s%s",s1,s2);
    int len = strlen(s1);
    pre_treat(len);
    transform_s2(len);
    LL l = solve(s1, len), r = solve(s2, len);
    //printf("l:%I64d r:%I64d\n",l,r);
    LL ans = (r - l + mod) % mod;
    if(!s2_smaller && !s2_bigger)
        ans = (ans - 1 + mod) % mod;
    else if(s2_smaller)
        ans = ans;
    else
        ans = (ans - 1 + mod) % mod;
    printf("%I64d\n",ans);
    return 0;
}
SpringBoot与Flowable整合:构建高效审批工作流的实战指南 本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。 阅读详情

相关推荐

Python XML 转 JSON,XML 转字典

今天我们将学习如何在 Python 中将 XML 转换为 JSON 和 XML 转换为字典。我们可以使用 Python 的xmltodict模块来读取 XML 文件并将其转换为字典或 JSON 数据。我们还可以在大型 XML 文件上进行流式处理,并将其转换为字典。在进入编码部分之前,让我们首先了解为什么需要进行 XML 转换。

rubys_的专栏 2501

codeforces 895D String Mark

简略题意:给出等长的AB串,问有多少A串的重排列得到的串字典序大于A串,小于B串。dp[i][0/1][0/1]代表当前处理到第i个位置,之前的选择有没有贴在上边界,有没有贴在下边界,考虑贴近上边界,下边界,或者不贴近边界,得到若干转移。 唯一需要注意的地方就是对于直接转移到dp[i][0][0]的状态,直接计算有重复元素的重排列即可,可以通过直接处理除数扣掉26的常数。#define other

即使摸爬滚打,满身泥泞,我也要前进 561

利用Pandas进行高效网络数据获取

本文将重点介绍如何使用Pandas库进行网络爬虫。爬取数据是获取互联网上信息的常见方式之一,而Pandas作为一种强大的数据处理和分析工具,为我们提供了便捷的方法来处理和清洗从网页上获取的数据。文章将从爬取网页数据开始,包括使用Python的Requests库发送HTTP请求获取网页内容,并使用Pandas的功能来解析和提取所需的数据。我们还将讨论如何处理网页中的表格数据、处理和清洗数据、保存数据到文件等常见任务。

ak_bingbing的博客 1437

codeforces A. Pizza Separation

A. Pizza Separation time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Students Vasya and Petya are studying at

wwwlps的博客 457

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1264

【SAP-MDG】工作流任务配置实战:从基础配置到代理分配详解

本文详细解析了SAP MDG工作流任务配置的全流程,从基础配置到代理分配的关键操作。通过实战案例和最佳实践,帮助用户掌握Configure Workflow Tasks的核心技巧,包括环境检查、代理分配、SWDD事务码使用及常见问题排查,提升主数据管理效率。

weixin_33738555的博客 248

CodeForces - 895

CodeForces - 895A Pizza Separation Students Vasya and Petya are studying at the BSU (Byteland State University). At one of the breaks they decided to order a pizza. In this problem pizza is a circle

王小二的博客 639

金融领域图注意力网络的创新应用

随着金融市场的日益复杂和数据量的爆炸式增长,传统的数据分析方法在处理金融数据的复杂关系和结构时面临诸多挑战。图注意力网络(Graph Attention Network,GAT)作为一种新兴的深度学习技术,能够有效处理图结构数据,挖掘数据中的潜在关系。本文的目的在于深入探讨图注意力网络在金融领域的创新应用,涵盖风险评估、投资决策、欺诈检测等多个方面。通过理论分析、算法实现和实际案例展示,为金融从业者和研究者提供全面的技术参考,推动图注意力网络在金融领域的广泛应用。

AI云原生与云计算技术学院 718

Codeforces 895D Round#448 2D :组合数学+小学数学优化

题意:给出串S1,S2,长度相同,均为小写字母,保证S1 题解:先考虑如何让T 我们可以从第一位向后枚举,在每一位上枚举这一位可以放哪个字母,比如S1是ababa,S2是ububu,那么我们先枚举T第一位放a,那么无论后边怎么放,一定满足T 于是我们设计了一个n*26*26的算法。然后这算法被卡掉了。。。。。 优化:考虑那个公式(元素总个数!)/(元素1个数!*……

辣鸡葫芦娃 412

【实战】基于 Inner-IoU 的 YOLOv8 优化指南:显著提升检测精度

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv8 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

m0_64661770的博客 107

Flink Gauss CDC:深度剖析存量与增量同步的创新设计

开发Flink Gauss CDC是为了适配华为自研GaussDB的特殊日志格式和逻辑复制机制,解决Flink CDC无法直接支持的问题,同时优化存量与增量同步的效率和一体化读取能力,满足GaussDB复合主键处理、数据落库等定制化需求,以实现高效、准确的数据同步。

数据与算法架构提升之路专栏 1984

codeforces 895d string mark

D. String Marktime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAt the Byteland State University marks are strings of the same length. Mark x is con...

C_K_Y_的博客 494

71、聚二甲基硅氧烷(PDMS)材料模型验证研究

本研究通过实验与数值模拟相结合的方法,系统探究了聚二甲基硅氧烷(PDMS)的力学性能与粘附行为。重点验证了多种超弹性材料模型在不同剥离速率下的适用性,结果表明Ogden N2模型在预测界面韧性和平均剥离力方面误差最小,表现最优。研究涵盖了PDMS的合成、单轴拉伸试验、剥离测试及有限元分析,为PDMS在机械与摩擦学领域的应用提供了可靠的建模依据,并建议在后续模拟中优先采用Ogden模型。

wine的专栏 1052

codeforces 895D - String Mark

http://codeforces.com/contest/895/problem/D 题意:给你二个等长 ( len <= 1e6 ) 字符串 a, b, 并且 a 的 字典序比 b 小, 让你构造字符串 c , 问 c 的情况有多少种 (mod 1e9+7)    要求:1. c 的字母组成 和 a 一样       2. a 的字典序比 c 小       3. c ...

250

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

codeforces 895D - String Mark 组合数学

很像数位DP的过程。。。 一般这种上界+下届我们可以考虑小于上界的数-小于下届的数。 即a的所有排列中 字典序小于b的个数-字典序小于a的个数-1 就是最终答案。 很明显 按位处理。a排列的字典序要小于s. 处理到第i位时:dfs(id,s) 1.这一位填的字符小于s[i]时,后面的字符任意填 都满足字典序小于s. 2.这一位填的字符等于s[i]时,ans+=dfs(id+1...

bjfu170203101的博客 272

String Mark CodeForces - 895D(组合数学)

At the Byteland State University marks are strings of the same length. Mark x is considered better than y if string y is lexicographically smaller than x. Recently at the BSU was an important test work on which Vasya recived the mark a. It is very hard for

tomjobs的博客 650

Codeforces 895.D String Mark

D. String Mark time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output At the Byteland State University marks ...

weixin_30802171的博客 162

Codeforces Round 895 (Div. 3)D - Plus Minus Permutation

设k为x与y的最小公倍数,本质上是找到n/x与n/y还有n/k这三个数字是多少,然后这就能确定两个数列的长度分别为n/x-n/k与n/y-n/k;然后就能高斯求和找到1到n中最大的(n/x-n/k)个数相加再减去1到n中最小的(n/y-n/k)个数的和,为所求。求两个数的最大公约数(我最喜欢的辗转相除法)

rc85qbte的博客 209

codeforce895 D. String Mark 有重复元素的排列数

codeforce895 D. String Mark 给定两个相同长度的字符串S1和S2,求由S1重新排列产生S3,且字典序(S1&lt;S3&lt;=S2)的种类数 不同的题解 我的题解:O(NlgN) 分别统计字典序小于S2和小于S1的排列数,Ans=Ans2-Ans1-1(不能与S1相同) 有重复元素的排列数:sum表示元素总数,cnt[]表示元素个数 统计S1中每个字符串...

Qianyri的博客 361

Codeforces Round 895 (Div. 3)补题报告

本次比赛我并没有完成后三道题目,我觉得不应该,再下一次考试中,我应该更加努力,争取AK!!!2023.11.4 22:43完成t=N7T8a%2Cbccca%2Cbcnl%2Cra%2Cbn%2Cx%2Cynpscorep_%7Bky%7Dp_%7Bkx%7Dp_%7Bkx%7Dp_%7Bky%7Dnnsl-rs_ia_%7Bi%7Ds0s1l-rs0s1nia_iic_ipa_iiic_ia_iii2*c_i。

wanwu_gui_1的博客 204

Codeforces Round 975

Codeforces Round 975

青少年趣味编程 897

Codeforces Round 895 Div. 3 前六题补题报告

我们可以定义一个优先队列,每次将害怕它的动物的总价格最小的动物卖掉(因为当这个动物害怕一个动物时这个动物的价格更高,这样可以使损失最小),最后将剩下的动物原价卖出。因为要使差最大,所以先求出x,y各选几个数(注:因为x,y的公倍数的位置上的数都要加进去所以放哪个数都无所谓,因此要去掉两数n以内的所有公因数),然后。设x为r(l)的一个除1和本身外的因数,(r-x,x)(或(l-x,x))就是一组解。),然后将大的数都往sum_x里加,将小的数都往sum_y里加,使结果最优。现在我要将这些动物全部卖掉。

gaomuchen_120309的博客 176

Codeforces Round 900 Div.3 前五题补题报告

Codeforces Round 895 Div. 3 前六题补题报告得分情况补题情况错题分析C题题目大意初次思路正解思路正解代码错误原因D题题目大意初次思路正解思路正解代码E题题目大意初次思路正解思路正解代码错误原因 得分情况 A题AC B题AC C题全部TLE D题过了前9组,剩下的TLE E题过了前11组,剩下的TLE 补题情况 全部AC 错题分析 C题 题目大意 有 t 组数据。每组数据给定 n,k,x。请你判断能否在 1∼n 中不重复的恰好选出 k 个数使得这 k 的数的和为 x。可以选

gaomuchen_120309的博客 1519

Codeforces Round 895 (Div. 3) A-G

未完 暂时只有赛时写出来的A-F的AC代码 等我今天把题目补完。

weixin_45446715的博客 735

Codeforces Round 895 (Div. 3)题解

思路:贪心的想,肯定是把大的数放到加的里面,小的数放到减的里面,而从样例解释中可以发现,如果下标是x和y的最小公倍数的倍数的,再计算过程中抵消了,所以对f的值并没有贡献,在计算的过程中可以减掉,所以只要计算出n以内有多少个x的倍数,有多少个y的倍数,再减去他们的最小公倍数的倍数的个数,再进行贪心就行(tips:如果直接暴力给会tle,所以直接用等差数列的求和公式即可)=1,然后直接输出即可。题意:给你一段区间的左右端点l,r.看你能否找到两个数a,b满足 l=

2301_77861754的博客 411

codeforces895E. Eyes Closed

题目链接 codeforces895E. Eyes Closed 题解 线段树维护期望和 写出修改两区间的相互影响 就是一个区间修改 emmm考试的代码过不去,这么松的spj都过不去Orz,每次和答案差0.001*ans左右... 可能是我每次直接对区间暴力统计右区间的影响,然后直接打个修改区间tag.... 求解 代码 std: #include <iostream> #i...

agtvo48266的专栏 178
上一篇: codeforces 894C
下一篇: 博客开通啦
Site1997
博客等级 码龄10年 27粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值