• 常用代码及经验总结(不断更新)


    2017-08-25 16:59:48

      今天遇到一个很神奇得体cf 35C

          如果不用以下这个代码就过不去??!!  

      竟然连test1都过不去

        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
        ios_base::sync_with_stdio(false);

      所以以后还是要加上这段代码的

    找到原因了,感觉自己好傻

    这个题有说明了,之前PDF中已经明白题意所以没有仔细看题目,以后还是要小心了

     

    以下是看cf 上大佬经常用的一些小代码

    #include <bits/stdc++.h>
    #define PI pair
    #define pi acos(-1.0)
    #define mem(a) memset(a,0,sizeof(a))
    #define mems(a,b) memset((a),(b),sizeof(a))
    #define ll long long
    #define ull unsigned long long
    #define rep(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
    #define REP(i,a,b) for(int (i)=(a);(i)<(b);(i)++)
    #define ls root<<1
    #define rs root<<1|1
    #define Ls root<<1,l,mid
    #define Rs root<<1|1,mid+1
    #define pb push_back
    #define IOS ios::sync_with_stdio(false),cin.tie(0);
    const int inf=0x3f3f3f3f;
    const ll INF=0x3f3f3f3f3f3f3f3f;
    const double eps=1e-8;
    const int maxn=200000+10; 
    using namespace std;
    
    
    #define ll long long int
    #define fast_io ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
    #define rep(i,a,b) for(ll i=a;i<=b;i++)
    #define rev(i,a,b) for(ll i=a;i>=b;i--)
    #define pll pair<ll,ll>
    #define F first
    #define S second
    #define pb push_back
    #define mp make_pair
    #define V vector<ll>
    #define print2(x) cout <<"####"<< #x <<"  =>  "<<x<< endl
    #define print1(x) cout <<"****"<< #x <<"  =>  "<<x<< endl
    

     

    2017-08-26 11:55:55

    今天做的这个题Subset已经做了好几遍了,但是还是有问题,

    今天给我最大的教训就是要注意数据类型,本来应该用longlong的用来int当然会一直wa

    找各种逻辑错误,测试各种例子,却没有考虑到当给出比较大的数据的时候会溢出

     

    2017-08-28 10:59:59

    今天做的一道水题,二进制处理的题目,很简单,但是给我提醒了

    首先:以后写代码要标注好开始时间和结束时间,用时间来限制

    其次:以后写代码要写一部分就调试一部分,养成良好习惯

     

    2017-08-29 10:30:08

    要注意没有思路就不要再电脑前面干耗着,要拿出来纸笔开始写写画画,

    不要着急,大体弄清思路才开始编码,要不然会导致效率低下;

     

    2017-08-30 16:55:02

    今天调试了很长时间,所以说以后还是尽量一次成功,调试花的时间实在是太长了

    以后应该先想好在开始敲代码:

    主要错误发现:

    1、边界问题,大于小于号搞反了,还有 Mid >= r Mid < l如果都取等就会出现问题

    2、输入输出问题,虽然之前测试了各种输入方式的快慢,但是还是有问题出现的,

    为了保险起见,还是用scanf比较好,以后坚决不用cin cout 这两个太坑爹了

    2017-08-31  19:11:42

    总结:

    1、这个也是采用每次一调试的办法来做的,但是这次调试中出现了重大失误,由于对以上两个函数调试的不严谨,

    判断数据过小,导致小的数据可以过,但是大一点的数据就会失败的情况,这也是这么多次wa的原因

    2、还是没有习惯用printf,所以以后写代码就加上fast_io,以后写代码尽量使用带加速到cin函数

    3、数据生成器用另外一个project来写,用生成的数据进行对拍,这次发现错误考的就是对拍,没有对拍就很难改下去了,

    这道题的对拍比较好些,虽然我用的是别人的代码做的对拍,但是这个对拍很容易写出来,就是运行时间有点长

    4、这次还有重大错误就是定义域问题,使用memset的时候要看清作用的范围,还有各种初始化条件,都要关心每一遍的

    遍历的作用

    5、另外在面对一个循环中的多次询问,要保证每次的询问对下次的询问没有影响,恢复现场才可以。

    6、hdu可以用bits/stdc++.h头文件

    22:26:40

    学dp入门的几个点:

    1、状态真的很难想, 需要做很多题累积很多经验才可以

    2、动态规划为了强调记忆性,可以采用自顶向下和自底向上两种方法

    3、对于复杂的感觉很混乱的题目要分析其中的规律,比如对称,从某一个尾部的状态开始分析,

    往前推导一下,就有可能找到状态

    4、用tmp--变数--来维护一个区间值,可以不重复计算该区间的值,达到减少重复的效果,是dp中常用的方法;

    5、有一个经验是题目中给的数据的范围一般就是dp的范围

    6、dp经常会用到取模,但是如果用int的话可能在mod之前就会overflow,所以建议用long long

  • 相关阅读:
    c++ 队列
    17:特殊类成员:函数指针5
    c++ deque 双端队列
    18:字符串-char型字符串
    c++ 16 this 和 继承 及继承机制中的构造函数 与 析构函数
    c++ string char* const char*
    c++ 小片段
    google protobuf 使用示例
    hibernate-cache
    hibernate-criteria查询(二)
  • 原文地址:https://www.cnblogs.com/pprp/p/7428866.html
Copyright © 2020-2023  润新知