ACM——备忘录

一.总结一下我最近每次 d e b u g debug debug一个小时常犯还找不到的错误:

1. + + i ++i ++i里少了一个+

2. j = 0 ; i < n ; + + j j=0;i<n;++j j=0;i<n;++j i i i j j j不分

3.待更新

超全的高难度ACM/OI模板

%%%

二进制输出

1.itoa()函数

itoa()就是把一个整数转换成一个字符串,该函数接受3个参数。
第一个是整数,第2个是字符串,第三个是要储存的进制。

#include<bits/stdc++.h>
using namespace std;
int main()
{

    for(int i=0;i<=31;i++)
    {
        char s[10];
        itoa(i, s, 2);
        if(strlen(s)<5)
            for(int i=0;i<5-strlen(s);i++)
            cout<<0;
        printf("%s\n", s);
    }
    return 0;
}

2.除二取余


void showbit2(int a){
	/*

	除二取余: 
		6/2=3 % 0
		3/2=1 % 1
		1/2=0 % 1
		=> 110
	*/
	int ret = 0;
	while(a){
		ret = ret*10 + (a % 2); 
		a = a / 2;
	} 
	cout<<ret<<endl;
}

(1)cin同步输入,一个cin语句中,无法互相调用,cin结束以后才真正赋值

#include<iostream>
using namespace std;
int x,y,d,n,maxm,num,sum=1,f[100],a;
int main()
{
    ios::sync_with_stdio(false);
    cin>>a>>f[a];
    cout<<a<<endl<<f[a]<<endl;
}

注意!输出结果为:
10
0

(2)不开long long 见祖宗!!

速查表:

char             -128 ~ +127        (1 Byte)
short             -32767 ~ + 32768    (2 Bytes)
unsigned short     0 ~ 65536        (2 Bytes)
int             -2147483648 ~ +2147483647   (4 Bytes)
unsigned int         0 ~ 4294967295    (4 Bytes)
long == int
long long         -9223372036854775808 ~ +9223372036854775807    (8 Bytes)
double         1.7 * 10^308        (8 Bytes)

(3)getline,cin,(cin>>x).get();

#include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<stdio.h>
#include<cmath>
#define debug cout<<"ok"<<endl
typedef long long ll;
const int maxn=1e4+500;
const int mod=1e9+7;
using namespace std;
string s,buf;
int n;
int main()
{
    ios::sync_with_stdio(false);
    (cin>>n).get();//cin>>n会忽略掉换行符而getline遇见换行符会停止所以cin不能配getline要用(cin>>n).get();代替
    getline(cin,s);
    stringstream ss(s);
    while(ss>>buf)
    {
        cout<<buf<<endl;
    }
}

[矩阵求斐波那契数列]

链接

结构体重载比较运算符来排序

struct person
{
    ll yu,shu,ying,sum,idx;
    bool operator<(const person &t)const 
    {
        if(t.sum!=sum)return sum>t.sum;
        if(t.yu!=yu)return yu>t.yu;
        return idx<t.idx;
    }
}p[N];
。。。。。。。。。
sort(p+1,p+1+n);//直接sort就行了 

(4)不要滥用return,不要随意建函数用return,我就是因为用return,导致还有数据要输入结果WA了QwQ

待解决

1.幂次方
2.CF1295C Obtain The String

文件输入输出:

采用重定向的形式进行输入输出,很方便

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);

记得包含头文件#include<cstdio>
第二种方法是使用C语言的形式进行输入输出

 #include<cstdio>
 #define INF 1000000000
 using namespace std;
 int main()
 {
     FILE *fin,*fout;
     fin=fopen("input.txt","rb");
     fout=fopen("output.txt","wb");
     int a,b;
     fscanf(fin,"%d%d",&a,&b);
     fprintf(fout,"%d\n",a+b);
     return 0;
 }

第三种方法是C++推荐的形式,以流的形式输入输出

  #include<fstream>
  using namespace std;
  ifstream in("input.txt");
  ofstream out("output.txt");
  int main()
  {
      int a,b; 
      in>>a>>b;
      out<<a+b;
      return 0;
 }

scanf和cin都是遇见空格停!!

OI选手推荐使用第一种方式
复旦考研复试机考可能会要求输入文件内哦

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:设计师小姐姐 返回首页