【CF #782 Div2】 A-D

article/2025/10/18 20:12:23

A. Red Versus Blue

题目

分析

红方蓝方打比赛,确定红方比蓝方厉害,连胜的概率最低,排出比赛结果可能的序列。

因为R比B多,所以考虑在B之间插入R,b个B需要将R分为b+1组,需要连胜数最小,就把R均分插入B之间,所以,先求出r是b+1的最小倍数,之后再将剩余的每个插一个到每一组中。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1e6+10;
const ll N=32768;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);int main()
{int t;cin>>t;while(t--){int n,r,b;cin>>n>>r>>b;int m=r/(b+1);int mm=r%(b+1);if(b==1){for(int i=1;i<=r/2;i++){cout<<"R";}cout<<"B";for(int i=r/2+1;i<n;i++){cout<<"R";}cout<<endl;continue;}for(int i=1;i<=m;i++){cout<<"R";}if(mm){cout<<"R";mm--;}while(b--){cout<<"B";for(int i=1;i<=m;i++){cout<<"R";}if(mm){cout<<"R";mm--;}}cout<<endl;} return 0;
}

B. Bit Flipping

题目

分析

给一个01串,必须用k步翻转串(选定一个位置,除了本位都反转),使结果01串最大。

因为要使01串最大,所以尽可能让左边数位为1。所以从左边开始遍历。

如果是1,判断操作数是否为偶数,如果不是,对它进行一次操作,确保它被反转了偶数次,使它原数不变,仍为1;

如果是0,判断操作数是否为奇数,如果不是,对它进行一次操作,确保它被反转了奇数次,使它从0变为1;

当遍历到最后一位,因为最大,所以不能改变前面的数字,所以直接判断,之前操作数的奇偶,判断它是否能够被改变。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=2e5+10;
const ll N=32768;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
int ans[maxn];int main()
{int t;cin>>t;while(t--){memset(ans,0,sizeof(ans));int n,k;string s;cin>>n>>k>>s;int kk=k;for(int i=0;i<s.size();i++){if(i==n-1){int tt=k-kk;if(s[i]=='1'){if(tt%2){s[i]='0';}ans[i]=kk;}else {if(tt%2){s[i]='1';}ans[i]=kk;}continue;}if(s[i]=='1'){if(k%2==1&&kk){ans[i]=1;kk--;}else if(k%2&&!kk){s[i]='0';}}else {if(k%2==0&&kk){ans[i]=1;kk--;s[i]='1';}else if(k%2){s[i]='1';}}}cout<<s<<endl;for(int i=0;i<n;i++){cout<<ans[i]<<" ";}cout<<endl;} return 0;
}

C. Line Empire

题目

分析

你是国王,你要占领别的国家,默认首都在0处,你要占领所有国家。

你有两种操作,一种是将首都从i迁移到j处,需要花费a*\left | c[i]-c[j] \right |,另一种是,需要花费b*\left | c[i]-c[j] \right |,从首都i处占领j。输出最小花费。

因为是数轴,所以考虑,每个国家的值为单调递增。设全部占领后,首都位置为x,所以需要的总花费为两部分,一部分为,从0处一边占领一边迁都的花费,和x之后只需占领的花费。二分查找一下临界值的位置,如果前半部分的增加值比后半部分的减少值更小,则此处最优。(懒得打公式了,就是把每一项列出来,然后消消消,就可以推出来)

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=2e5+10;
const ll N=32768;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
ll c[maxn];int main()
{int t;cin>>t;while(t--){ll n,a,b;cin>>n>>a>>b;for(int i=1;i<=n;i++){cin>>c[i];}int l=0,r=n;while(r>l){int mid=(l+r)/2;if((n-mid)*b>(a+b)) l=mid+1;else r=mid;}ll ans=(c[l]-c[0])*(a+b);for(int i=l+1;i<=n;i++){ans=ans+b*(c[i]-c[l]);}cout<<ans<<endl;} return 0;
}

D. Reverse Sort Sum

题目

分析

数组a是有01构成的数组,f(i,a)是将数组a的前i项排序,每次排序结果存储在b中,c是所有b的和。给出数组c,求数组a。

首先可以得出数组a中1的总数为c中所有1的和除n(即cnt=sum/n)。因为后面的加进一个1来,排序后有影响,而前面的没有,所以倒序遍历,通过比较当前位置的c[i]是否需要新加一个1,来满足排序后本位1的个数,给a数组赋值。然后对cnt--。

感觉解释不是很清楚,附上别人写的题解

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=2e5+10;
const ll mod=32768;
const ll INF=0x3f3f3f3f;
const double pi=acos(-1);
int a[maxn],c[maxn],b[maxn];int main()
{int t;cin>>t;while(t--){int n;cin>>n;ll sum=0;memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(int i=1;i<=n;i++){cin>>c[i];sum+=c[i]; }ll cnt=sum/n;int f=0;for(int i=n;i>=1&&cnt>=0;i--){f--;b[i-cnt]++;f+=b[i];if(c[i]+f>0){cnt--;a[i]=1;}}if(cnt==1){a[1]=1;}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<endl;	}return 0;
}


http://chatgpt.dhexx.cn/article/WYMBIGWJ.shtml

相关文章

Dreamweaver css选择器

在 CSS 中&#xff0c;选择器是选取需设置样式的元素的模式。 下面我们介绍几种常用选择器: 元素选择器:通过选择html标签设置css样式 示例&#xff1a;直接选取p标签设置文本颜色 类选择器&#xff1a;通过设置class类设置css样式 注意&#xff1a;class命名不能以数字开头…

dw在html链接css代码怎么写,dw怎么链接css样式?

dw链接外部css样式的方式&#xff1a;在HTML文档中使用<link href"css文件的地址"rel"stylesheet"type"text/css"/>语句链接外部css样式。 Dreamweaver简称DW&#xff0c; 那么&#xff0c;我们想在外部写一个dw的外部样式&#xff0c;可是…

给DW2XLS源代码增加了同时导出多个dw的代码(合并多个dw)

给DW2XLS源代码增加了合并多个dw的代码。现在共享下载 客户定制的&#xff0c;如果后期我有修改的话&#xff0c;我会继续释放出来供下载的。 现在只是简单的合并&#xff0c;如果上下两个dw的栏位宽度不适合。需要自己修改改进。 换言之&#xff0c;适合上下两个dw栏位宽度…

PB导出数据excel格式dw2xls

PB导出数据excel格式dw2xls 使用DW2XLS控件 语法 uf_save_dw_as_excel ( dw, filename ) 参数 dw A reference to the datawindow object filename A string whose value is the name of the file you want to create. If filename is not on the operating systems sea…

FFT算法实现与分析MATLAB

FFT算法实现 厚 2.1实验目的 I、加深对快速傅里叶变换的理解。 II、掌握 FFT 算法及其程序的编写。 III、掌握算法性能评测的方法。 IV、熟悉MatLab编程。 2.2实验原理 一个连续信号Xa(t)的频谱可以用它的傅里叶变换表示为&#xff1a; 如果对该信号进行理想采样&#x…

采用FPGA实现FFT算法

关注、星标公众号&#xff0c;精彩内容每日送达 来源&#xff1a;网络素材 随着数字技术的快速发展&#xff0c;数字信号处理已深入到各个学科领域。在数字信号处理中&#xff0c;许多算法如相关、滤波、谱估计、卷积等都可通过转化为离散傅立叶变换(DFT)实现&#xff0c;从而为…

[笔记]FFT算法

前言 对于学通信的人来说&#xff0c;在学到数字信号处理时都会学到一个东东&#xff0c;叫做快速傅里叶变换(Fast Fourier Transform,简称FFT)。这东西真的挺有用的&#xff0c;但是只要有那么一点用的东西&#xff0c;就是特别难的。(现在也有很多不完整的地方&#xff0c;以…

c语言实现fft原理,新手小白一看就会,FFT算法的原理详解

原标题:新手小白一看就会,FFT算法的原理详解 相信网上现在有很多关于FFT的教程,我曾经也参阅了很多网上的教程,感觉都不怎么通俗易懂。在基本上的研究FFT,并且通过编程的形式实现之后。我决定写一篇通俗易懂的关于FFT的讲解。因此我在接下来的叙述中尽量非常通俗细致的讲解…

FFT算法实现,python,Java

FFT算法实践报告 FFT基本原理 代码链接: link. DFT 在讨论FFT之前&#xff0c;我们需要先了解以下DFT。所谓的DFT其实就是两个矩阵做点乘。 多项式可以有两种表示方法&#xff0c;一种是系数表示法&#xff0c;另一种是点值表示法。 这两种表示法之间是可以转换的&#xff…

MATLAB FFT算法的应用

目录 一&#xff0c;实验原理 二&#xff0c;实验内容 1、实现2N点实数序列 2、已知某序列​编辑在单位圆上的N64等分样点的Z变换为&#xff1a; 3、周期为N的余弦序列&#xff1a; 1&#xff0c;求该序列N点FFT 2&#xff0c;求该序列2N点FFT 3&#xff0c;求该序列N/2点…

FFT算法实现

关于FFT算法的原理这里就不多说了&#xff0c;具体参考有关书籍。 DFT与FFT运算量的比较 N点DFT的运算量 复数乘法 复数加法 一个X(k) N N-1 N个X(k)&#xff08;N点DFT&#xff09; N*N N(N-1) N点FFT的运算量 复数乘法 复数加法 N个X(k) (N/2)*log2N N*log2N 如…

使用python手写FFT算法

FFT(Fast Fourier Transform) 是 DFT(Discrete Fourier Transform)的快读实现&#xff0c;它在机理上没有改变DFT的算法&#xff0c;只是在实现上采用的巧妙的实现。 使 O ( N 2 ) O(N^2) O(N2)的实现变成了 O ( N l o g 2 N ) O(Nlog_2N) O(Nlog2​N)的实现&#xff0c;优化算…

C语言实现FFT算法

C语言实现FFT算法 fft1d.c和fft1d.h见https://download.csdn.net/download/weixin_43216875/12009644 1 fft1d.h #ifndef FFT1D_H #define FFT1D_H#include "math.h"#define PI 3.1415926535897932384626433832795028841971typedef struct complex //复数类型 {flo…

Matlab实现DITFFT算法

这段时间刚好在学习数字信号处理的快速傅立叶变换&#xff0c;也刚好应着老师布置的作业用matlab实现N点的FFT。 方法也是采用教科书上的DITFFT&#xff0c;当然关键也就是分治的思想&#xff0c;分成奇偶序列&#xff0c;再观察旋转因子和步长的不同来编写算法 该算法首先的部…

FFT算法的C语言实现

FFT算法的C语言实现 &#xff1a;数字信号处理 需要注意的几个点 #mermaid-svg-Q0Cv61uzu3GVxhM0 .label{font-family:trebuchet ms, verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Q0Cv61uzu3GVxhM0 .label text{fill:#333}#mer…

优雅的FFT算法

简 介&#xff1a; 利用FFT算法实现快速傅里叶变换&#xff0c; 在理论、工程中具有非常广泛的应用。 除了能够在合适的计算平台完成FFT算法&#xff0c;同时还需要注意到它在频谱分析中可能带来的频率混叠以及频率泄露等问题。 关键词&#xff1a; FFT&#xff0c;算法实现 #m…

STM32 FFT算法实现

DSP 库运行环境搭建 在 MDK 里面搭建 STM32F4 的 DSP 运行环境(使用.lib 方式)是很简单的&#xff0c;分为 3 个步骤&#xff1a; 1&#xff0c; 添加文件。 首先&#xff0c;我们在例程工程目录下新建&#xff1a;DSP_LIB 文件夹&#xff0c;存放我们将要添加的文件&#xff…

FFT算法解析

问题描述 两个n次多项式相乘,其时间复杂度为 O(n2) ,通过FFT来减小其问题的复杂度。 分析过程 FFT的基本思路是:我知道一个多项式表达式可以根据其表达式算出结果,同理我们也可以根据其结果算出表达式。对于A,B两个n次多项式,一共所有又2n+1个参数需要求解,我们至少需要…

FFT算法再学以及终于理解

前言 人生如逆旅&#xff0c;我亦是行人。 一、FFT FFT&#xff08;Fast Fourier Transformation&#xff09;&#xff0c;中文名快速傅里叶变换&#xff0c;用来 加速多项式乘法 &#xff0c;就是用来降低算法的时间复杂度的&#xff0c;将时间复杂度由原来的 O(n^2) 变为了O…

十分简明易懂的FFT(快速傅里叶变换)

FFT前言 快速傅里叶变换 (fast Fourier transform),即利用计算机计算离散傅里叶变换&#xff08;DFT)的高效、快速计算方法的统称&#xff0c;简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少&…