好用的模板(不断增补中)

好用的模板……有需要的拿去

在使用中如发现bug欢迎留言指出

1、打codeforces的比赛的时候是不是像我一样感觉时间不够用,恨不得多长几只手打代码?其实看看神犇的代码会发现,他们为节省时间都是直接在编译器的缺省值里打一堆头文件,还有一些神奇的#define……balabala的,我把自己打cf常用的头文件还有一些常用的define,以及快速读入搞成模板放上来

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
    LL x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int main()
{
}

2、高精度实在是让人头疼的东西,每次写加减乘除读入输出都好麻烦……目前写了非负高精整数的加减乘minmax……放模板

#define mx 100//高精位数
struct gaojing{
     int len;
     int a[mx+10];
};//定义高精度非负数类型
inline void set0(gaojing &s)//高精清零
{
    s.len=1;
    for (int i=1;i<=mx+5;i++)s.a[i]=0;
}
inline void inputn(gaojing &a)//高精输入
{
	set0(a);
    char ch=getchar();
    while (ch<'0'||ch>'9')ch=getchar();
    while (ch>='0'&&ch<='9')
    {
        a.a[a.len++]=ch-'0';
        ch=getchar();
    }
    a.len--;
    int change[mx+15];
    for (int i=1;i<=a.len;i++)
      change[i]=a.a[i];
    for (int i=1;i<=a.len;i++)
      a.a[i]=change[a.len-i+1];
    while (a.a[a.len]==0)a.len--;
}
inline void put(gaojing a)//高精输出并换行
{
    for (int i=a.len;i>=1;i--)printf("%d",a.a[i]);
    printf("\n");
}
inline int cmp(const gaojing &a,const gaojing &b)//比较:a<b:1  a>b:-1  a==b:0
{
    if (a.len!=b.len)
    {
        if (a.len<b.len)return 1;
        else return -1;
    }
    for (int i=a.len;i>=1;i--)
      if(a.a[i]<b.a[i])return 1;
      else if (a.a[i]>b.a[i])return -1;
    return 0;
}
inline gaojing max(const gaojing &a,const gaojing &b)//高精度max
{
    int opr=cmp(a,b);
    if (opr==1)return b;
    else return a;
}
inline gaojing min(const gaojing &a,const gaojing &b)//高精度min
{
	int opr=cmp(a,b);
	if (opr==1)return a;
	else return b;
}
inline gaojing operator + (const gaojing &a,const gaojing &b)//高精度加法
{
    gaojing c;set0(c);
    int maxlen=max(a.len,b.len);
    for (int i=1;i<=maxlen;i++)
    {
        c.a[i]=c.a[i]+a.a[i]+b.a[i];
        if (c.a[i]>=10)
        {
            c.a[i+1]+=c.a[i]/10;
            c.a[i]%=10;
        }
    }
    c.len=maxlen+4;
    while (!c.a[c.len]&&c.len>1) c.len--;
    return c;
}
inline gaojing operator - (const gaojing &a,const gaojing &b)//高精度减法,需保证a>b
{
	gaojing c;set0(c);
	gaojing d;d=a;
    for (int i=1;i<=b.len;i++)
      {
        c.a[i]=d.a[i]-b.a[i];
        if (c.a[i]<0)
        {
            c.a[i]+=10;
            int now=i+1;
            while (!d.a[now])
            {
                d.a[now]=9;
                now++;
            }
            d.a[now]--;
        }
      }
    for (int i=b.len+1;i<=d.len;i++)c.a[i]=d.a[i];
    c.len=d.len;
    while (c.a[c.len]==0&&c.len>1)c.len--;
    return c;
}
inline gaojing operator * (const gaojing &a,const gaojing &b)//高精度乘法
{
    gaojing c;set0(c);
    for(int i=1;i<=a.len;i++)
      for (int j=1;j<=b.len;j++)
        c.a[i+j-1]+=a.a[i]*b.a[j];
    int mxlen=a.len+b.len+5;
    for (int i=1;i<=mxlen;i++)
      {
        c.a[i+1]+=c.a[i]/10;
        c.a[i]%=10;
      }
    while (c.a[mxlen]==0)mxlen--;
    c.len=mxlen;
    return c;
}

不断更新中

时间: 2024-10-10 13:22:21

好用的模板(不断增补中)的相关文章

C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动态数组)STL vector进行分析和总结. 引言 因为前段时间对台大的机器学习基石和技法课程进行了学习,发如今详细的实现中经常涉及到各种类型的数据结构,比方线性表.二叉树.图等,在使用这些数据结构时感到有些吃力.主要是对一些主要的数据结构理解的不够.所以趁着暑假假期.近期一段时间总会抽出时间复习一

帝国CMS:列表模板(list.var)中调用正文内容,字符长度怎么控制

我在列表模板(list.var)中调用正文内容,字符长度怎么控制了一直显示不出来         $listtemp='<div class="textbox-content">         <p>[!--smalltext--]</p><p style="text-align: center;"><br><a href="[!--titleurl--]" target=&qu

std中vector的实现原理(标准模板动态库中矢量的实现原理)

我们实现的数据结构是为了解决在运行过程中动态的开辟空间使用(例如我们不停的输入,输入的多少我们不确定) 原理两种: 一.笨办法 我们第一次用多少空间,开辟多少空间A 我们第二次用空间,会开辟大于第一次开辟的空间B,将A里的数据拷贝到B中,然后释放A,在C中写入新的数据 缺点:在于拷贝的次数太多,效率低 二.改进的办法 矢量有一个参数,里面填写预留的空间,加入我们填写的预留空间大小是B,这里是预留,并没有真正的开辟物理内存,预留的作用于如果这时候如果需要开辟空间做其他事情,开辟的空间会避开B,这样

Laravel 模板引擎Blade中标签详细介绍

这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将详细的介绍下: @yield与@section 首先,@yield是不可拓展的,如果你要定义的部分没有默认内容让子模版扩展,那么用@yield($name,$default)的形式会比较方便,如果你在子模版中并没有指定这个区块的内容,它就会显示默认内容,如果定义了,就会显示你定义的内容. 与之比较,

高精度模板(修改中)

这个是一个高精度的模板,还在完成中... 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cmath> 6 #include<cstring> 7 #include<vector> 8 #define xh(a,b,c)for(int a=(b);a<=(c);a++) 9 #de

主动模式和被动模式 添加监控主机 添加自定义模板 处理图形中的乱码 自动发现

一.主动模式和被动模式如果监控的主机只有几十台或者几百台服务器的时候,使用主动模式和被动模式都可以,没有问题二.添加监控主机点击"配置"---主机群组,先添加主机群组,再添加主机模板是预设的,包括监控项目的集合添加主机群组aming-test,再添加主机,主机名称和可见名称都写linux-02,IP地址填写客户端的IP地址:192.168.238.130,DNS不需要写,DNS在什么时候会用到,IP地址写主机名,DNS是用来解析主机名的时候写主动模式和被动模式需要在监控项里面去定义应用

报表模板 — 在项目管理中应用数据报表分析

项目管理是在项目活动中运用专门的知识.技能.工具和方法,使项目能在有限资源下,实现或超过设定的需求和期望的过程,是对成功地达成一系列目标相关的活动的整体监测和管控. 无论是在大型工程.软件开发.系统制造之类的项目管理中运用报表数据分析的方法及时掌握项目运行情况,也能科学准确的预测项目成本与风险.常见的会将项目中的各种资源.工时.材料.效能等数据形成分析报表.大屏看板. 葡萄城行业报表模板库此次发布了包含人员效能分析.项目资源分析.计费工时分析.结算时间分析等8张在项目管理中运用的典型报表模板.

Laravel模板引擎Blade中section的一些标签的区别介绍

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: [email protected] 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?[email protected] 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与

安装PowerDesigner 12之后,在Microsoft Office Word 2003的模板和插件中无法移除WordToRqm.dot的解决方案

PowerDesigner 12 Microsoft Office Word 2003 重启Word后,发现并没有生效.打开注册表,定位到HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\WordToRQM12.Connect 修改LoadBehavior的值修改为2,重新打开Word 选中WordToRqm.dot项,点击Remove,并点击OK,重启Word 如果仍然想要使用WordToRqm.dot,可以将注册表数据恢复到之前的