乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      信息學(xué)競賽中代碼常見錯(cuò)誤總結(jié)

       長沙7喜 2020-02-07

      1


          總結(jié)一些常見的錯(cuò)誤分享給大家,歡迎大家在文末留言補(bǔ)充哦!

      1 有關(guān)long long 運(yùn)算的建議

      打完代碼一定要考慮long long問題,該開的一定要開!

      方案1

      取模三件套

      int add(int a,int b){

      return (a+b)%MOD;

      }

      int mul(int a,int b){

      return 1LL*a*b%MOD;

      }

      int sub(int a,int b){

      return (a-b+MOD)%MOD;

      }

      快速乘

      LL mul(LL x,LL y,LL MOD){

          LL res=(x*y-(LL)((double)x*y/MOD+0.1)*MOD)%MOD;

          if(res<0)res+=MOD;

          return res;

      }

      方案2

      #define int_ long long

      很浪費(fèi)空間\時(shí)間,不建議…

      2 空間消耗問題

      3 ??臻g問題

      關(guān)于爆棧:

      兩種情況,遞歸層數(shù)太多(RE),遞歸時(shí)傳了一個(gè)數(shù)組[還包括STL(set,bitset,map…)](RE或MLE)

      解決方案:

      4 重載運(yùn)算符的運(yùn)用

      bool operator <(const state &b)const{//STL習(xí)慣用<符號(hào)

      return step>b.step;

      }

      5 STL

      用STL的時(shí)候要小心邊界,很容易崩潰

      5.1 set/multiset

      s.lower_bound(val)——尋找第一個(gè)大于等于val valval的s ss中的元素(被坑過兩次,一次是某次Atcoder 還有一次是NOIP 開車旅行)

      s.upper_bound(val)——set用這東西好像沒用

      s.find(val)——找到當(dāng)前=val =val=val的迭代器。

      s.erase(*it)——一定注意里面是迭代器,如果要?jiǎng)hval的話需要先s.find(val)。

      s.count(val)——multiset才用的著,元素中=val =val=val的個(gè)數(shù)。

      5.2 string

      C++的string真的很好用…雖然很慢…但在模擬題中是很實(shí)用的(CSP能用)。

      s.substr(l,len)取以l開始的后面len個(gè)字符,len如果省去的話就默認(rèn)直到結(jié)尾。

      s.substr(l,len)刪除l開始的后面len個(gè)字符,len如果省去的話就默認(rèn)直到結(jié)尾,與上一個(gè)(大概是)反函數(shù)。

      s.find(string)找string是否存在,存在返回第一個(gè)出現(xiàn)的第一個(gè)字符所在位置,否則返回string::npos。

      5.3 vector

      不建議用…因?yàn)橛行┎僮魇强梢员豢ǖ絆(n) O(n)O(n)的。

      G.resize(siz)預(yù)留siz的空間,[siz,end)的全部刪掉。

      5.4 bitset

      S.set(idx,val)將idx位置置為val,val省略是默認(rèn)為1。

      S.count()數(shù)bitset中1的個(gè)數(shù)。

      S.size()bitset的大小。

      S.test(idx)查詢當(dāng)前下標(biāo)是否為1。

      S.any()查詢bitset中是否有1。

      S.all()查詢bitset中是否全部都是1。

      eg.biset Floyd 閉包

      for(register int i=1;i<=n;i++)//相當(dāng)于之前的k,要放在外面

              for(register int j=1;j<=n;j++)

              if(d[j][i])d[j]|=d[i];

      6 CE/文件操作相關(guān)

      眾所周知CE和MLE是OI中最可怕的兩種錯(cuò)誤

      注意一些變量名在NOI Linux下是禁用的!

      最可怕的就是x1,y1這種東西…還有一些常見的英文單詞,因此拼寫的時(shí)候盡量在英文單詞中刪幾個(gè)字母(不過像slove這樣的單詞就沒必要了,今年我還是別用process了)。

      #include<cstdio>

      #include<iostream>

      頭文件一定要加!雖然可能能夠通過編譯!

      還有要注意莫名其妙的多余隱藏字符(當(dāng)然這個(gè)比較玄學(xué))。

      freopen('road.in','r',stdin);

      freopen('road.out','w',stdout);

      必須一個(gè)單詞不多不少!空格也不行!!

      7 對(duì)拍相關(guān)

      考試的時(shí)候肯定是首先測(cè)大樣例,輸出多的時(shí)候要用fc A.out B.out。

      然后自己出幾組小數(shù)據(jù),如果行的話構(gòu)造一些大數(shù)據(jù)。

      如果考試時(shí)間十分充足,一定要進(jìn)行對(duì)拍

      以下是對(duì)拍的程序:

      #include<iostream>

      #include<windows.h>

      using namespace std;

      int main()

      {

          int testdata=100;

          while(1)

          {

              testdata--;

              system('makedata_plus.exe %random% > data.in');//%random%是隨機(jī)參數(shù),可加可不加

              system('cheat.exe < data.in > cheat.out');//< 就是讀入 > 就是輸出

              system('bf.exe < data.in > bf.out');

              if(system('fc cheat.out bf.out'))break;

          }

          if(testdata==0) cout<<'no error'<<endl;

          else cout<<'error'<<endl;

          system('pause');

          return 0;

      }

      隨機(jī)生成數(shù)據(jù)(僅供參考):

      #include <bits/stdc++.h>

      #define LL long long

      #define MAXN 200000

      #define RANGE 100000

      using namespace std;

      stringstream ss;

      int n,fa[MAXN+5],p[MAXN+5];

      int get_num(){

      return 1LL*rand()*rand()%(RANGE*2)-RANGE;

      }

      int xfind(int x){

      return (fa[x]==x)?x:fa[x]=xfind(fa[x]);

      }

      int main(int argc, char *argv[])

      {

      int i=10,kd=0;

      if(argc){

      ss.clear();

              ss<<argv[1];

              ss>>i;

      //kd=(i/20)%2;

      i%=20;

      }

      int data[21][3]={

      {1,1,1},

      {10,2,6},

      {17,4,10},

      {35,5,8},

      {70,3,14},

      {200,5,18},

      {200,6,37},

      {500,20,868},

      {500,20,742},

      {1000,100,998},

      {1000,100,997},

      {1000,99,996},

      {1000,99,995},

      {1000,100,994},

      {1000,100,993},

      {1000,99,992},

      {1000,99,991},

      {1000,100,990},

      {1000,100,989},

      {1000,99,988},

      {1000,99,987}};

      static char buf[1000];

      srand(time(NULL));

      n=data[i][0];

      printf('%d\n',n);

      p[1]=1;

      for(int j=2;j<=n;j++)

      fa[j]=1LL*rand()*rand()%(j-1)+1,p[j]=j;

      for(int j=1;j<=n;j++)

      printf('%d ',get_num());

      printf('\n');

      for(int j=1;j<=n;j++)

      printf('%d ',get_num());

      printf('\n');

      if(kd){

      for(int j=2;j<=n;j++)printf('%d %d\n',j-1,j);

      return 0;

      }else{

      random_shuffle(p+1,p+n+1);

      for(int j=2;j<=n;j++)

      printf('%d %d\n',p[fa[j]],p[j]);

      }

      return 0;

      }

      8 一些小細(xì)節(jié)

      倍增:注意先枚舉k再枚舉i。

      線段樹如果有負(fù)下標(biāo)應(yīng)將mid設(shè)為(l+r)>>1,不能用(l+r)/2,因?yàn)镃++除法向取整。

      多關(guān)鍵字更新答案一定要注意順序。

      example:

      if(maxh==h&&mxa>a)mxa=a;

      if(maxh<h)maxh=h,mxa=a;//不能夠交換順序

      4.以后檢查代碼的時(shí)重點(diǎn)還是應(yīng)該在檢查是否手殘上:)因?yàn)槲医?jīng)常手殘:)

      5.多組數(shù)據(jù)一定要清空??!清空??!清空!!

      數(shù)據(jù)千萬條,清空第一條。

      多測(cè)不清空,爆零兩行淚。

      9 考試策略相關(guān)

      拿到題目首先看第一頁的時(shí)空限制以及文件及題目名(感受出題人的毒瘤)。

      然后看題面,最好把三道題目都讀完,預(yù)估一下總體難度如何,最好心里排個(gè)序,但在NOIP這種情況還是很少見(除了NOIP2016 day1)。

      然后開始做題,建議從子任務(wù)一步一步做著走,這在NOIP中是十分有用的,因?yàn)槌鲱}人會(huì)給你很多提示,但平時(shí)的考試就很難說了…

      通過的測(cè)試點(diǎn)可以在上面打個(gè)標(biāo)記,可以讓你有一種成就感。

      選擇打正解還是打暴力一直是我很頭疼的事情。按理來說NOIP的部分分大多是思維型的,不會(huì)浪費(fèi)太多時(shí)間。

      做完一道難題可以去上上廁所,實(shí)測(cè)很實(shí)用。

      ————————————————

      本文來源:https://blog.csdn.net/qq_34940287/article/details/102066630


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多