首页 > 其他分享 >iwtgm-27

iwtgm-27

时间:2023-11-24 12:44:05浏览次数:38  
标签:prime 27 gcd int 质数 iwtgm d2 d1

题目链接

A.

先把菜肴按取出时间从前到后排序,因为先拿出先熟的一定最优
去枚举什么时候取出第i道菜,限制是时间是在前一道菜取出的时间之后,三层循环的dp
不错的状态转移

int f[2*210][2*210];
int a[210];
void solve() {
    memset(f,0x3f3f3f3f,sizeof(f));
    for(int i=0;i<2*210;i++)f[0][i]=0;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        for(int j=0;j<2*n;j++){
            for(int k=j+1;k<2*n;k++){
                f[i][k]=min(f[i][k],f[i-1][j]+abs(k-a[i]));
            }
        }
    }
    int ans=inf;
    for(int i=1;i<2*n;i++)ans=min(f[n][i],ans);
    cout<<ans<<endl;
}

B.

代码有注释

#include<bits/stdc++.h>

using namespace std;

const int maxn=3e5+5;
string s;

int A[maxn];//A[i]表示,s[i]左边有几个交替出现的字母,不包括自己
int B[maxn];//B[i]表示,s[i]右边有几个交替出现的字母,不包括自己
//对于每个点的ans至少等于1
//如果s[i]==L,则说明可以往左走,ans+=1+A[i]
//如果s[i+1]==R,则说明可以往右走,ans+=1+B[i+1]
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        cin>>s;
        s+='L';//把最后一个点的情况处理成不能往右走
        A[0]=0;
        for(int i=1;i<n;i++)
        {
            if(s[i]==s[i-1])
                A[i]=0;
            else
                A[i]=A[i-1]+1;
        }
        B[n-1]=0;
        for(int i=n-2;i>=0;i--)
        {
            if(s[i]==s[i+1])
                B[i]=0;
            else
                B[i]=B[i+1]+1;
        }
        if(s[0]=='L')
            cout<<1;
        else if(s[0]=='R')
            cout<<2+B[0];
        for(int i=0;i<n;i++)
        {
            int ans=1;
            if(s[i]=='L')
                ans+=A[i]+1;
            if(s[i+1]=='R')
                ans+=1+B[i+1];
            cout<<' '<<ans;
        }
        cout<<endl;
    }
}

C.

ai=d1^n * d2^n(d1,d2是ai的因数)
对于gcd有
gcd(a,b)=gcd(a+b,b)
且若gcd(a,b)=1,
则gcd(a,c)=gcd(a,c*b)=gcd(a,c * b^n)
现有gcd(d1,d2)=1,->gcd(d1+d2,d1)=1,gcd(d1+d2,d2)=1
->gcd(d1+d2,d1 * d2)=1,->gcd(d1+d2,d1^n * d2^n)

那么我们只要找到ai的两个互质因数即可

bool is_prime[20*N];//是否是质数,0为是,1为不是
int prime[20*N];//质数数组
int top=1;//质数的下标
int min_p[20*N];//最小质因数数组
int a[N],b[N];
void get_prime(int n){
    for(int i=2;i<=n;i++){
        if(!is_prime[i]){//是质数
            prime[top]=i;//存质数
            min_p[i]=i;//质数的最小质因数是本身
            top++;//下标后移
        }
        for(int j=1;j<top;j++){//最小到达遍历质数数组
            if(i*prime[j]>n)break;
            is_prime[i*prime[j]]=1;//标记质数的倍数即合数
            min_p[i*prime[j]]=prime[j];//质数的倍数的最小质因数是该质数
            if(i%prime[j]==0)break;//若i是之前质数的倍数,说明这个倍数会在后面的循环内被筛去,无需继续循环
        }
    }
}

void solve() {
    int n;cin>>n;
    get_prime(1e7+3);
    for(int i=1;i<=n;i++){
        int p;cin>>p;
        if(is_prime[p]==0)a[i]=-1,b[i]=-1;
        else{
            int k=min_p[p];
            while(p%k==0)p/=k;
            if(p==1)a[i]=-1,b[i]=-1;
            else a[i]=k,b[i]=p;
        }
    }
    for(int i=1;i<=n;i++)cout<<a[i]<<' ';
    cout<<endl;
    for(int i=1;i<=n;i++)cout<<b[i]<<' ';
}

第二个与d1互质因数只需用ai当ai%d1==0时不断除d1即可求出

标签:prime,27,gcd,int,质数,iwtgm,d2,d1
From: https://www.cnblogs.com/wwww-/p/17853501.html

相关文章

  • iwtgm-26
    题目链接A.拿例子说话n1,那么在1处建信号站,信号为0n2,那么在1和2处建信号站,信号均为0n3,可以在1,2,3处建信号为0的信号站,也可以在2处建信号为1的信号站n4,可以在1,2,3,4处建信号为0的信号站,也可以在2处建信号为1的信号站并在4处建信号为0的信号站,还可以在3处建信号为1的信号站,在1处建......
  • iwtgm-25
    题目链接A.感觉跟欧拉没什么关系,属于带偏了因为任两个点都有来回两条边,直接从最小点出发到每一个点就好了难点在于取一段,题解代码值得学习voidsolve(){lln,l,r;cin>>n>>l>>r;llfi=0,se=0;for(lli=n-1;i>=1;i--){fi=se+1;se+=i*2;......
  • iwtgm-24
    A.考虑按块来计算如果这个块在两边,那么除了与这个块相邻的那一个数与这个块的数不同(一个块里的数都是一样的),其他位置上的数任选若这个块在中间,那么与这个块相邻的左右两个数与这个块的数不同,其他位置上的数任选块的大小从1-n,每个块可选数字为10种,相邻数可选数字为9种,其他位置......
  • iwtgm-23
    题目链接A.首先,如果只有1个机关(除高度h)那么不需要水晶试想,无论这个机关在哪里,当它关闭后,下一个机关就会开启...以此类推反而机关多了情况会更复杂设i和i-1机关都是打开的,我现在在机关i,然后i和i+1的机关会一起关闭,那么i+2一定要有一个开的机关,若没有,则需要水晶intmain(){......
  • 10.23-10.27
    10.23今日任务:Java学习(完成)Java作业(完成)英语单词(未完成) 英语听力(完成)10.24今日任务:数据结构作业(完成)英语单词(完成) 10.25今日任务:英语单词(完成)  10.26今日任务:满课英语单词(完成) 10.27今日任务:javaweb学习(完成)英语单词(完成)......
  • 2023-2024-1 20232327《网络空间安全导论》第二周学习总结
    2023-2024-120232327《网络空间安全导论》第二周学习总结教材学习内容总结1.密码学历史悠久,主要分为古典密码、机械密码和线代密码;2.密码学研究主要有密码分析,密码理论,密码工程与应用以及密码管理;3.密码体制的分类:单钥密码体制和双钥密码体制;4.密码分析方法有穷举攻击法、......
  • 《安富莱嵌入式周报》第327期:Cortex-A7所有外设单片机玩法LL/HAL库全面上线,分享三款GU
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 1、2023Hackaday大赛胸牌开源Vectorscope-main.zip(66.83MB)https://github.com/Hack-a-Day/Vectorscope前段时间分享后,好几个网友咨询这个胸牌有没有开源,搜到了开源地址......
  • JetBrains TeamCity 任意代码执行漏洞(CVE-2023-42793)研究
    一、JetBrainsTeamCity简介TeamCity是一款由JetBrains开发的强大的持续集成(ContinuousIntegration,CI)和持续部署(ContinuousDeployment,CD)工具。它帮助开发团队自动化构建、测试和部署过程,以确保软件项目的质量和快速交付。TeamCity的主要特点和优势包括:灵活的构建配......
  • 2023-2024-1 20231427 《计算机基础与程序设计》第八周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#JXJC)这个作业要求在哪里<作业要求的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08)|作业正文|...https://www.cnblogs.com/wszdhnsh/p/17842926.html |......
  • openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库
    openGauss学习笔记-127openGauss数据库管理-设置账本数据库-修复账本数据库127.1前提条件系统中需要有审计管理员或者具有审计管理员权限的角色。数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。127.2背景信息......