• 自己给自己挖的坑(未完待续)


    1.http://codevs.cn/problem/5929/

    原因:不读题,不读题,不读题,合并了错误节点,自以为是std写的天衣无缝,样例也AC,但是没有意识到样例是很水的,另外,挪用代码也是很不好的习惯。

    2.QBXT两次考试

    原因:cena的旧版编译器没有优化STL+cena对STL动态内存的兼容性,导致疯狂TLE...

    3.http://poj.org/problem?id=1979

    原因:初始节点忘记设置访问数组为已经访问过,导致在某些数据下会多输出1,然后bad fix这个bug,AC样例,然而样例太水,三组数据是一种类型,然后果断WA...后期自己造测试数据:

    3 4
    @...
    ####
    ####

    成功多出一个点来(程序输出5,明显地应该输出4)。

    果断重新调试并fix之,再次Submit,AC.

    4.http://www.cnblogs.com/TheRoadToAu/p/7097726.html

    原因:不读题,对STL了解不够,不清楚坑点,本来该用multiset用成了set,卡掉30分(70->40)...

    5.https://www.luogu.org/problem/show?pid=1965

    原因:没有对每一个运算数进行取模运算,以为不会Boom,结果Boom了long long,怎么也查不错来,一直30分...

     1 #include<cstdio>
     2 using namespace std;
     3 
     4 inline long long FP(int a,int b,int mod)
     5 {
     6     if(b==0)return 1;
     7     int ans=1,base=a;
     8     while(b)
     9     {
    10         if(b&1)
    11             ans=(ans*base)%mod;
    12         base=(base%mod)*(base%mod)%mod;
    13         b>>=1;
    14     }
    15     return ans;
    16 }
    17 
    18 int n,m,k,x;
    19 int main()
    20 {
    21     scanf("%d%d%d%d",&n,&m,&k,&x);
    22     printf("%lld
    ",(m*FP(10,k,n)+x)%n);
    23     return 0;
    24 }
    AC

     

    6.https://www.luogu.org/problem/show?pid=2278

    原因:对于优先队列和重载运算符使用不熟练,本地CE……

    以后尽量使用重载运算符而非结构体伪函数(节省代码量+看着顺眼)。

    记得重载二元运算符的一般方式:

    ReturnType operator Operator (const DataType &ArgumentName) const

    {return this->member ...}

    例如以下的重载运算符:

    struct Process{
        int PID,StartTime,ETA,Rank;
        bool operator < (const Process &b) const
        {
            return this->Rank<b.Rank||this->Rank==b.Rank&&this->PID>b.PID;
        }
    }ProcessList[1000000];
    int n,rest,cnt=1,sz=0,time;
    priority_queue<Process> Q;

    重载运算符的好处:对于优先队列,自定义数据类型不需要手写另外一个结构体(或定义一个类型)写伪函数,并写一个比较长的定义。

    手写伪函数:

    struct XY
    {
        int num,s,t,val;
    } v[1000000];
    struct cmp
    {
        bool operator ()(XY &a,XY &b)
        {
            return a.val<b.val||a.val==b.val&&a.num>b.num;
        }
    };
    priority_queue<XY,vector<XY>,cmp> Q;

     7.

    促销

    【题目描述】

    某某商场搞了一个促销活动,促销活动以以下方式进行:

    1. 一个想要参加活动的顾客将他的发票扔进抽奖箱里。
    2. 在每天的最后,从抽奖箱里抽出两张发票:

    a) 金额最大的发票a

    b) 金额最小的发票b

    1. 金额最大的发票的持有者得到a-b的奖金。

    每天被抽出的发票都不会再被放回抽奖箱里。 

    你想知道促销活动结束时一共付出了多少奖金。

    【输入格式】

    第一行一个N,促销进行的天数;

    接下来N行,第一个数是一个ki,表示第i天收到的发票数;接下来ki个数,每个数是一个发票的金额。

    【输出格式】

    一个数,整个促销活动过程中一共付出了多少奖金。

    【输入输出样例】

    promotion.in

    promotion.out

    5

    3 1 2 3

    2 1 1

    4 10 5 5 1

    0

    1 2

    19

    【数据规模】

    对于30%的数据,发票总数M不超过2000;

    对于另外20%的数据,每张发票的金额不超过2000;

    对于100%的数据,发票总数M不超过1000000,每张发票的金额不超过1000000。

    原因:Cena...我不得不再次吐槽你一次...您不能用%lld算怎么回事啊23333...您换个别的编译器会死吗...我的50分就gg了...

    solution:

    #ifdef __WIN32

        #define lld "%I64d"

        #define llu "%I64u"

    #else

        #define lld "%lld"

        #define llu "%llu"

    #endif

    以后用lld与llu替代“%lld”与“%llu”...

    3.

    原因:freopen, fclose, stdin, stdout在cstdio库里!!!不论何时都要引用cstdio,以防爆炸!!!

    4.

    原因:Windows下换行编码为 ,Linux下换行符为 ,CRT出了锅,数据在Windows下生成,结果读入字符时读入了一个' '.

    solution: 不用scanf读入字符。直接读入字符串。

    5.

    原因:矩阵乘法不具有交换律!!!!!!!!矩阵乘法不具有交换律!!!!!!!!矩阵乘法不具有交换律!!!!!!!!矩阵乘法不具有交换律!!!!!!!!矩阵乘法不具有交换律!!!!!!!!矩阵乘法不具有交换律!!!!!!!!

  • 相关阅读:
    数据结构与算法10 微服务接口的鉴权和限流 [MD]
    .Net开发环境配置[OS/IIS/VS...]
    一、单件模式
    正则表达式调试器1.1
    C#2.0新特性系列文章转载
    巧用VS2005解决VS2005网站发布不便问题
    配置VS2005,加速VS2005运行速度
    转载:ASP.NET运行机制 和 图片盗链问题
    ASP.NET页面提前处理问题
    关于NTLM认证的python和.NET实现
  • 原文地址:https://www.cnblogs.com/TheRoadToAu/p/6700909.html
Copyright © 2020-2023  润新知