(未完成)[hduoj]“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛(代码片段)

xutianshu xutianshu     2023-03-09     334

关键词:

solved 5

 

A(签到)

题意:两个人随机得到0或1其中之一数字,每个人都可以猜对方的数字是什么,有一个人猜对就算成功,问最优策略下00,01,10,11四种情况两人的成功概率分别是多少。

题意不明的签到题,题面说两人不能沟通,以为就是两个人随便猜,成功率都是1-0.5*0.5=0.75。结果是两个人可以提前商量好策略,那显然可以其中一个人猜和自己相同的数,另一个人猜和自己不同的数,那么所有的成功率都是100%。

技术图片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define LL long long
#define pii pair<int,int>
#define mp make_pair
#define st first
#define nd second
#define pb push_back

const int N= 1e7+7;
const int inf= 3e3+7;


int main()
    printf("1.00
1.00
1.00
1.00
");

    system("pause");
View Code

0:48(2A)

 

B(递推)

题意:求斐波那契数列每一项的平方的连续一段和。

题意不明的签到题,前缀和,注意最后相减之后要加mod再模mod防止出现负数。

技术图片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define LL long long
#define pii pair<int,int>
#define mp make_pair
#define st first
#define nd second
#define pb push_back

const int N= 1e6+7;
const int inf= 3e3+7;
const int mod=192600817;

int get(int a,int b)
    return a*4+b+1;


LL f[N],F[N];

int main()
    f[1]=f[2]=1;
    F[1]=1;
    F[2]=2;
    for(int i=3;i<=1e5;i++)
        f[i]=(f[i-1]+f[i-2])%mod;
        F[i]=f[i]*f[i]%mod;
        F[i]+=F[i-1];
        F[i]%=mod;
    
    int q;
    while(cin>>q)
    while(q--)
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        //if(get(a,b)==get(c,d))cout<<0<<endl;
        if(get(c,d)<get(a,b))cout<<(F[get(a,b)]-F[get(c,d)-1]+mod)%mod<<endl;
        else cout<<(F[get(c,d)]-F[get(a,b)-1]+mod)%mod<<endl;
    
    
    system("pause");
View Code

1:37(3A)

 

C(模拟)

题意:把一个数字变换为他的各数位的平方和,经过若干次变换后这个数可以变成1,则称他为鸽子数,求第K个鸽子数。

记忆化搜索即可。

技术图片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define LL long long
#define pii pair<int,int>
#define mp make_pair
#define st first
#define nd second
#define pb push_back

const int N= 1e7+7;
const int inf= 3e3+7;

int cnt;

int ans[N],vis[N],mem[N],in[N];

int solve(int x)
    if(mem[x]!=-1)return mem[x];
    if(x==1)return 1;
    if(in[x])return 0;
    in[x]=1;
    int res=x,now=0;
    while(res)
        now+=(res%10)*(res%10);
        res/=10;
    
    mem[x]=solve(now);
    in[x]=0;
    return mem[x];


int main()
    memset(mem,-1,sizeof(mem));
    for(int i=1;i<=2e6;i++)if(mem[i]==-1)mem[i]=solve(i);
    rep(i,2e6)if(mem[i])ans[++cnt]=i;
    int q;
    cin>>q;
    while(q--)
        int k;
        cin>>k;
        cout<<ans[k]<<endl;
    

    system("pause");
View Code

0:33(1A)

D

 

E(线性代数)

题意:给出三个点的坐标,以及线性变换后三个点的新坐标(保证三点不共线),多次询问(x,y)经过线性变换后的坐标

 

F

 

G(数学)

技术图片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define LL long long
#define pii pair<int,int>
#define mp make_pair
#define st first
#define nd second
#define pb push_back

const int N= 1e7+7;
const int inf= 3e3+7;
const int mod=1000000007;

LL po(LL x)
    if(x==0)return 1;
    LL res=po(x/2);
    if(x&1)return res*res%mod*2%mod;
    return res*res%mod;


int main()
    LL x;
    while(cin>>x)
        cout<<(x-1)%mod * (po(x)%mod) %mod +1<<endl;
    

    system("pause");
View Code

1:12(1A)

 

H

 

I

 

J(矩阵快速幂)

题意:f[n]=f[n-1]+2*f[n-2]+n^3,f[1]=1,f[2]=2,求f[n]。

矩阵快速幂裸题

(打了好久...)

技术图片
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define LL long long
#define pii pair<int,int>
#define mp make_pair
#define st first
#define nd second
#define pb push_back

const int N=6;
const int inf= 3e3+7;
const int mod=123456789;
 
LL tmp[N][N];  
void multi(LL a[][N],LL b[][N],int n)  
  
    memset(tmp,0,sizeof tmp);  
    for(int i=0;i<n;i++)  
        for(int j=0;j<n;j++)  
        for(int k=0;k<n;k++)  
        tmp[i][j]=(tmp[i][j]+ (b[i][k]%mod*a[k][j]%mod) )%mod; 
    for(int i=0;i<n;i++)  
        for(int j=0;j<n;j++)  
        a[i][j]=tmp[i][j];  
  
LL init[N][N]=
    2,0,0,0,0,0,
    1,0,0,0,0,0,
    27,0,0,0,0,0,
    9,0,0,0,0,0,
    3,0,0,0,0,0,
    1,0,0,0,0,0
;

LL a[N][N]=
    1,2,1,0,0,0,
    1,0,0,0,0,0,
    0,0,1,3,3,1,
    0,0,0,1,2,1,
    0,0,0,0,1,1,
    0,0,0,0,0,1
;

LL b[N][N]=
    1,2,1,0,0,0,
    1,0,0,0,0,0,
    0,0,1,3,3,1,
    0,0,0,1,2,1,
    0,0,0,0,1,1,
    0,0,0,0,0,1
;

LL res[N][N];

void Pow(LL a[][N],LL n)  
  
    for(int i=0;i<N;i++)
    for(int j=0;j<N;j++) res[i][j]=init[i][j],a[i][j]=b[i][j];
    while(n)  
      
        if(n&1)  
            multi(res,a,N);
        multi(a,a,N);  
        n>>=1;  
      


int main()
    int q;
    cin>>q;
    while(q--)
        LL n;
        cin>>n;
        Pow(a,n-2);
        cout<<res[0][0]<<endl;
    
    system("pause");
View Code

2:26(2A)

 

hduoj题目分类

基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1 查看详情

hdu6467简单数学题递推公式&&o优化乘法(广东工业大学第十四届程序设计竞赛)(代码片段)

...ampleInput5100  SampleOutput129660756544  Source“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛        解题思路: 但是这道题只推出递推 查看详情

hduoj2094产生冠军

??产生冠军TimeLimit:1000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):8541    AcceptedSubmission(s):4019ProblemDescription有一群人,打乒乓 查看详情

hduoj1285确定比赛名次

??确定比赛名次TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):11940    AcceptedSubmission(s):4756ProblemDescription有N个比赛 查看详情

hduoj1012ucalculatee

分析:注意格式。#include<stdio.h>intmain(){ inti,j,k; doublesum=0; printf("ne ------------ "); printf("01 12 22.5 "); for(i=3;i<=9;i++) { k=1; for(j=1;j<=i;j++) k*=j; sum+=1.0/k; printf( 查看详情

hduoj-1735简单的贪心算法

字数统计TimeLimit:1000/2000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1987    AcceptedSubmission(s):552ProblemDescription  一天,淘气的Tom 查看详情

hduoj3371connectthecities(最小生成树)

ConnecttheCitiesTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):9985    AcceptedSubmission(s):2843ProblemDescripti 查看详情

hduoj水果

/*水果夏天来了~~好开心啊,呵呵,好多好多水果~~Joe经营着一个不大的水果店.他觉得生存之道就是经营最受顾客欢迎的水果.如今他想要一份水果销售情况的明细表,这样Joe就能够非常easy掌握全部水果的销售情况了.Input... 查看详情

hduoj2560thesevenpercentsolution(代码片段)

#include<iostream>#include<stdlib.h>usingnamespacestd;intmain()//第一个循环用于输入,遇到#停止while(1)//第二个循环用于单次输入的每个字符的判断while(1)charc;c=getchar();//若遇到换行符,则结束此次输入if(c==‘‘||c==EOF)cout<<en 查看详情

hduoj2162-primes(代码片段)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2161 题意:判断n是不是素数,输入到0停止。题目规定12都不是素数。 题解:筛素数。老题目。不过这次是普通筛23333.。之前做的题了。 1#include<iostream>2#include<cmath>3#... 查看详情

hduoj1257最少拦截系统(代码片段)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 题意:经典题。 题解:最长上升子序列。 代码:1#include<iostream>2#include<algorithm>3#include<cstdio>4#include<cstring>5#include< 查看详情

hduoj1166敌兵布阵

发现自己之前对线段树树状数组这种数据结构只会套套模板,根本就没有理解与运用。所以打算最近开始重新学习这些数据结构。那么这就是我的树状数组第一道练习题目:敌兵布阵差不多就是模板题目 1#include<cstdio>2#in... 查看详情

hduoj开门人与关门人

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1234#include<stdio.h>#include<string.h>structpoint{chars1[20],s2[20],s3[20];//假设是定义成s1[15],s2[15],s3[15]就会出错}p[100];//定义结构体数组intmain(){intN,M 查看详情

如何有效使用杭电hduoj

参考技术A找好题刷.当你想熟练某个算法的时候可以在网上找相关的题目,有一些都是杭电的经典的题目.平时如果想检查自己或是锻炼一下自己的解题能力和知识面的话,也可以去打打HDOJ的BC(bestcoder)...感觉还是有帮助的.有的水题... 查看详情

hduoj几道递推dp(代码片段)

就不写题解了。很基础的递推。  HDU2084数塔题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 代码: 1#include<iostream>2#include<algorithm>3#include<cstdio>4#include<cstring>5 查看详情

hduoj18651string大数菲波那切数列

 1stingTimeLimit:5000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):5310    AcceptedSubmission(s):2030ProblemDescriptionYo 查看详情

hduoj1848fibonacciagainandagainsg函数博弈菲波那切数列

FibonacciagainandagainDescription任何一个大学生对菲波那契数列(Fibonaccinumbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1,2,3,5,8,13……就是菲波那契数列。 在HDOJ上有不少相关的题... 查看详情

hduoj悼念512汶川大地震遇难同胞——老人是真饿了(代码片段)

贪心算法~#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<iomanip>usingnamespacestd;structriceintprice;intweight;r[1001];boolcmp(ricea,riceb 查看详情