Inhaltsverzeichnis
① Beurteilung des Schaltjahres
②Beurteilen Sie, ob das Datum angemessen ist
③Berechnung mit Hilfe von Excel
②Größter gemeinsamer Teiler (euklidisch)
(3) Kleinstes gemeinsames Vielfaches
6. Häufig verwendete Funktionen in C++
①Sortierfunktion Sortierfunktion
②Initialisierungsfunktion memset
1. Gewalt, Aufzählung
In der Regel mehrere Schleifen, achten Sie auf Grenzen und Ausgänge
2. Datumsausgabe
① Beurteilung des Schaltjahres
int check(int x) { if(x%400==0||(x%4==0&&x%100!=0) return 1; return 0; }
②Beurteilen Sie, ob das Datum angemessen ist
int check(int year,int month,int day) { int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(year%4==0&&year%100!=0||year%400==0)//闰年判断 a[2]+=1; if(month<1||month>12)//判断月份是否出界 return 0; int t=a[month]; if(day<1||day>t) return 0; return 1; }
③Berechnung mit Hilfe von Excel
3. Nummernverarbeitung
① Einfaches Sieb
1. Einfaches einfaches Sieb:
int prime(int n) { if(n==1) return 0; for(int i=2;i*i<n;i++) { if(n%i==0)return 0; } return 1; }
2. Esperanto-Sieb
Idee: Markieren Sie ausgehend von 2 die Vielfachen jeder Primzahl als zusammengesetzte Zahl
int a[MAXN]; void prime() { memset(a,1,sizeof(a); //初始化为都是素数 a[0]=a[1]=0;//0和1不是素数 for(int i=2;i<=MAXN;i++) { if(a[i]) { for(int j=i*i;j<MAXN;j=j+i) a[j]=0;//i的倍数都不是素数 } } }
②Größter gemeinsamer Teiler (euklidisch)
因为a / b = k(余r) 所以 a可以表示成a = kb + r(a,b,k,r皆为正整数,且r<b), 则r = a mod b假设d是a,b的一个公约数, 则 a%d == 0, b%d == 0而r = a - kb, 两边同时除以d,r/d=a/d-kb/d=m, 由等式右边可知m为整数,因此r%d==0而r=a mod b, 因此d也是b,a mod b的公约数假设d是b,a mod b的公约数, 则b%d == 0,(a-k*b)%d == 0(a − k ∗ b a-k*ba−k∗b)%d = a%d-k∗ *∗b%d == 0 , k是一个整数。进而a%d == 0. 因此d也是a,b的公约数因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等
1. Einzelnummer:
int gcd(int a,int b) { return b?gcd(b,a%b):a; }
2. Mehrere Nummern:
int gcds(int a[],int n) { int g=a[0]; for(int i=1;i<n;i++) { g=gcd(g,a[i]); } return g; }
(3) Kleinstes gemeinsames Vielfaches
Das kleinste gemeinsame Vielfache zweier Zahlen ist gleich ihrem Produkt dividiert durch den größten gemeinsamen Teiler (a*b/ggT(a,b))
1. Einzelnummer:
int lcm(int a,int b) { return a*b/gcd(a,b); }
2. Mehrere Nummern:
int lcms(int a[],int n) { int l=a[0]; for(int i=1;i<n;i++) { l=lcm(a[i],l); } return l; }
④ zwei Punkte
int i=0,j=100001;//所给范围 while(i<=j) { int mid=(i+j)/2;//二分法将mid看作边长 if(check(mid))//假如已经符合就继续往上查找 i=mid+1;//找到符合题意的最大边长 else j=mid-1;//往下查找 }
4. dp——01 Rucksack
bekannte Zustände
① Es gibt N Gegenstände und einen Rucksack. Das Fassungsvermögen des Tornisters beträgt V.
② Für jeden Artikel: Volumen, Wert
③Jeder Artikel kann nur einmal verwendet werden
Zwei Bedingungen müssen erfüllt sein
①Das Gesamtvolumen der ausgewählten i Artikel überschreitet nicht V
②Der Wert dieser Artikel summiert sich zum größten
③Für einen bestimmten Artikel: verwenden/nicht verwendenanalysieren:
Wenn Sie es nicht nehmen, gibt es j Platz für i-1 Gegenstände
Wenn Sie es nehmen, müssen Sie nur den Platz von jc[i] den i-1 Elementen und den Platz von c[i] dem i-ten Element zuweisen
Der Gesamtwert, der durch die Zuweisung von jc[i]-Speicherplatz und die Zuweisung von j-Speicherplatz zu i-1 Elementen erzielt wird, ist unterschiedlich
#include<bits/stdc++.h>//万能头文件 #define ll long long using namespace std; const ll maxn=100; ll n,v,f[maxn][maxn]; ll c[maxn];//每个物品占用空间 ll w[maxn];//每个物品的价值 int main() { cin>>n>>v; for(ll i=1;i<=n;i++) scanf("%lld",&c[i]); for(ll i=1;i<=n;i++) scanf("%lld",&w[i]); for(ll i=1;i<=n;i++)//第i个物品 for(ll j=v;j>=0;j--)//剩余空间j { if(j >= c[i])//如果装得下 f[i][j]=max( f[i-1][j-c[i]]+w[i],f[i-1][j]); else//如果装不下 f[i][j]=f[i-1][j]; } cout<<f[n][v]<<endl;//输出答案 }
5. Suchen
①dfs
void dfs(int x,int y) { if(x==fx&&y==fy)//出口 { sum++;return ; } for(int i=0;i<4;i++) { int nx=x+s[i][0]; int ny=y+s[i][1]; if(nx<1||nx>n||ny<1||ny>m||mp[nx][xy]==1||vis[nx][ny]==1) continue;//边界条件以及是否有障碍或已走过 vis[nx][ny]=1;//标记走过 dfs(nx,ny);//递归 vis[nx][ny]=0//回溯 } }
6. Häufig verwendete Funktionen in C++
①Sortierfunktion Sortierfunktion
sortieren(a,a+num)
②Initialisierungsfunktion memset
memset(a,0,sizeof(a));
③Mathematische Funktionen
1., abs - Finden Sie den absoluten Wert einer ganzen Zahl
2. pow——Ermitteln Sie die Potenz von x
3, sqrt - Berechne die Quadratwurzel
7. Saite
Gängige Methoden der String-Klasse - Turbo Summer Soseki's Blog - CSDN Blog