高中生信竞集训2021.9.1总结

本次集训主要练习了基础算法,包括高精度计算、区间DP、01背包问题等。通过解决美人松的高度、求阶乘的和、能量项链等题目,学习了各种策略,如贪心、二分和区间DP。在01背包问题中,强调了枚举的顺序和更新DP的重要性。新约瑟夫问题采用队列解决,而奇怪的电梯问题可以使用BFS。通过并查集处理团伙问题,表示敌对关系。总结起来,重载运算符写高精是重要收获,集训过程竞争激烈。
摘要由CSDN通过智能技术生成

ps.这次练习的主要是基础,很多以前的原题;

美人松的高度

弱智题

求阶乘的和(高精)

说实话,我真的今天才知道高精可以写在结构体里

不多说了,上代码吧

#include<stdio.h>
#include<memory.h>
#include<algorithm>
#define max(a,b) (a>b?a:b)
struct sb{
	int num[1004],len;
  void init(){
    memset(num,0,sizeof(num));
    len=1;
  }
	void in(){
    char ch=getchar();len=0;
    while(ch<'0'||ch>'9')ch=getchar();
    while(ch>='0'&&ch<='9'){
      num[++len]=(ch^48);ch=getchar();
   	}
      std::reverse(num+1,num+len+1);
 }
  void pr(){
    for(int i=len;i>=1;--i)
      putchar(num[i]+48);
  }
  sb operator +(const sb &x)const{
    sb temp;
    temp.init();
    temp.len=max(len,x.len);
    for(int i=1;i<=temp.len;++i){
      temp.num[i]+=num[i]+x.num[i];
      temp.num[i+1]+=temp.num[i]/10;
  
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值