ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

7.23日算法结记

2021-07-23 20:30:53  阅读:203  来源: 互联网

标签:std int 结记 7.23 Stk 算法 include com 解法


今天记录一下写过的有必要记录的题,算小结,本日任务重点在图形学。

夏令营第一场

Alice and Bob

题目大意:给定两堆石头,AB二人分别从一堆中取走不超过m个的k个石块,可以选择从另一堆取走s*k(s为任意自然数)个石头,最后无法取走者失败。(5000数据量)

解法:高级一点的博弈,四个循环将所有成功情况遍历出来即可得到答案。

Hash Function

题目大意:给定一组数S,给出这组数利用mod n进行哈希的哈希值,使得n最小。

解法:用NTT/FFT来加速你的求解过程。其他和搜索一样。还是看佬的码吧

夏令营第二场

GCD

题目大意:给定一组数字和一个容器,一个数字占用容器的一个位置,要求所有填满容器的组合的GCD值乘积。

解法:素数提取,利用素数筛提前计算素数,计算PhiM,利用杨辉三角和费马小定理/Phi算法来加速这个过程。

Stack

题目大意:给出段伪码(生成非严格上升子序列的长度),生成一段数据提取其中的片段交给做题人,要求还原一个满足此要求的数据。

Stk is an empty stack

for i = 1 to n :

        while ( Stk is not empty ) and ( Stk's top > a[i] ) :

                pop Stk

        push a[i]

        b[i]=Stk's size

解法:个人推荐使用记录每个数据所在位置,然后进行还原的类前缀数组的作法,好处是好看好理解。

#include <iostream> 
#include <cstdio>
#include <vector>
using namespace std;

int main(){
    int n,k;
    std::cin>>n>>k;
    std::vector<int> b(n);
    for(int i=0;i<k;i++){
        int p,x;
        std::cin>>p>>x;
        p--;
        b[p]=x;
    }
    int cur=0;
    for(int i=0;i<n;i++){
        cur++;
        if(b[i]>0){
            if(b[i]>cur){
                std::cout<<"-1\n";
                return 0;
            }
            cur=b[i];
        }else{
            b[i]=cur;
        }
    }
    std::vector<int> cnt(n+1);
    std::vector<int> a(n);
    for(int i=0;i<n;i++){
        cnt[b[i]]++;
    }
    for(int i=1;i<=n;i++){
        cnt[i]+=cnt[i-1];
    }
    for(int i=0;i<n;i++){
        std::cout<<cnt[b[i]]--<<" \n"[i == n-1];
    }
    return 0;
}

Girl friend

阿波罗尼圆(球)的相较面积/体积如何求?

推荐:两圆相交到两球相交 - Chasssser - 博客园 (cnblogs.com)

和:阿波罗尼斯圆怎么用? - 知乎 (zhihu.com)

        阿氏圆_百度百科 (baidu.com)

公式记得开double,这个图形学会用。

代码查看 (nowcoder.com)

清佬的代码推荐。

标签:std,int,结记,7.23,Stk,算法,include,com,解法
来源: https://blog.csdn.net/m0_51179099/article/details/119043088

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有