白い牛の月のシーズンオフの問題に対する解決策20(BU TI)

白い牛の月のシーズンオフの問題に対する解決策20(BU TI)

はじめに:
あきらめの端に近接しています。
いくつかのボードの質問は、実際に何をするつもりはなかった(でも、それがする場合は、しかし、ボードはまだ唯一の問題は、彼らはわずかな変形、損傷しないだろう)
、この学期の被験者は良好な水ああ(蘭です、私は非常に良い感じ、再び最近の最終試験をガチョウのACMレベルはまだフラグを設定し、)大きな変化を見ていない:996のこの冬ブラシモードが私を待っています!


A、Feibolaqi(マトリックスは迅速法&パワーを見つけます。)


これは、人々が愚かである私の質問ですが、Feibolaqi私は実際に法律を知りません。
私が知っていた問題への解決策を読んだ後
Altキー
、項目1最初のn個のアイテムとn =項目*最初の(N + 1)
詳細な説明は、このブログを参照https://blog.csdn.net/lanchunhui/article/details/51840616を

暴力の書き込みサイクル、その後、ソリューションを探し続けて:私の神、​​迅速なパワーマトリックスは、私は私の行列テンプレートは、すぐに電源に使用あげるよ怖がって、私はすべてが法律を知っている罰金になると思う2、

まあ、けれども、テンプレートをとっているが、(使用する方法がわからないで)質問の高速電力行列をやったことがない
、彼はこのブログを読んでよう:
https://blog.csdn.net/wust_zzwh/article/details/52058209 ###

テンプレートは、まだ自分のコーディングの習慣を少し変更することができると感じて、右、また偉大なスピーカー

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#define mod(x) (x%MOD)
#define MOD 1000000007
#define ll long long 
using namespace std;
struct mat{
    ll m[2][2];
}unit;
//重载乘法运算符
mat operator * (mat a,mat &b){
    mat ret;
    memset(ret.m,0,sizeof(ret.m));
    for(int k=0;k<2;k++){
        for(int i=0;i<2;i++){
            if(a.m[i][k]){
                for(int j=0;j<2;j++){
                    ret.m[i][j]=mod(ret.m[i][j]+(ll)a.m[i][k]*b.m[k][j]);
                }
            }
        }
    }
    return ret;
}
//单位矩阵初始化
void init_unit(){
    for(int i=0;i<2;i++){
        unit.m[i][i]=1;
    }
    return ;
}
//矩阵快速幂
mat pow_mat(mat a,ll n){
    mat ret=unit;
    while(n){
        if(n&1){
            ret=ret*a;
        }
        n>>=1;
        a=a*a;
    }
    return ret;
}
int main(){
    init_unit();           //这个非常重要
    mat real;
    real.m[0][0]=1;
    real.m[0][1]=0;
    real.m[1][0]=1;
    real.m[1][1]=0;
    mat temp;
    temp.m[0][0]=1;
    temp.m[0][1]=1;
    temp.m[1][0]=1;
    temp.m[1][1]=0;
    ll n;
    cin>>n;
    if(n==1){
        cout<<1<<endl;
    }
    else{
        mat ans1=pow_mat(temp,n-2)*real;
        mat ans2=pow_mat(temp,n-1)*real;
        cout<<mod(ans1.m[0][0]*ans2.m[0][0])<<endl;
    }
    return 0;
}

私は、以前のテンプレートにテンプレートを参照してください。https://blog.csdn.net/f_zyj/article/details/52202169


B、最大辺の長さ


私は主に両方のケースで最大値を取って、問題のああを理解しています:
ここに画像を挿入説明

その後、次のコードがありました:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#define ll long long
using namespace std;
int main(){
    ll a,b;
    cin>>a>>b;
    if(a<b){
        swap(a,b);
    }
    cout<<max(a/3,b/2);
    return 0;
}

ゲームは、あなただけで見つけることができない場合は間違って、私はまた、仏だところ

以下は、標準的なプロセスサブサブです:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#define ll long long
using namespace std;
int main(){
    ll a,b;
    cin>>a>>b;
    if(a<b){
        swap(a,b);
    }
    cout<<max(min(a/3,b),b/2);
    return 0;
}

害!


E、単なる間隔


裸の木のラインが、それでも怠惰な感じが今マークにつまずいていること、それをしませんでした。


F、進変換


、タルススを見て、タルソ私は前方にC ++でそれをノックするテンプレートを置くのが面倒だった、非常に静かでJavaを使い始めました
が、Javaの本質を理解するために失敗し、多くの人がワシントン州のポストで、その結果、使用されるカプセル化の方法を知りません、人々は愚かです
見つかった説明を読んだ後:さて、のJava NB!

import java.math.BigInteger;
import java.util.*;
public class Main{
	public static void main(String args[]) {
		Scanner scan=new Scanner(System.in);
		String str=scan.next();
		int a=scan.nextInt();
		int b=scan.nextInt();
		//a进制数转为b进制数
		String res=new BigInteger(str,a).toString(b);
		System.out.println(res);
	}
}

私、少しポニー


一つは感じることができるああ、DFSであるが、なぜゲームとき、私は知らない、DFSは前に、心の私の状態の崩壊につながることはなかったが、ちょうどDFSコード、実際に渡された給与を書いたん。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<set>
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int dirx[]={0,-1,-2,-2,-1,1,2,2,1};
int diry[]={0,-2,-1,1,2,2,1,-1,-2};
int mp[2010][2010];
int n,m;
int cnt;
void dfs(int x,int y){
    cnt++;
    mp[x][y]=1;
    for(int i=1;i<=8;i++){
        int fx=x+dirx[i];
        int fy=y+diry[i];
        if(fx>=1&&fx<=n&&fy>=1&&fy<=m&&mp[fx][fy]==0){
            dfs(fx,fy);
        }
    }
}
int main(){
    memset(mp,0,sizeof(mp));
    cin>>n>>m;
    cnt=0;
    dfs(1,1);
    if(cnt==n*m){
        cout<<"Yes"<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
}

実際の試験の質問を考えていた、問題の解決策を見て、特定のコードを参照してください。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<set>
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    if((n>=3&&m>=3&&(n+m!=6))||(n==1&&m==1)){
        cout<<"Yes"<<endl;
    }
    else{
        cout<<"No"<<endl;
    }
    return 0;
}

J、DH帽子


問題の標準液。
ここに画像を挿入説明


K、Hello Worldの


また、仏、この出席の問題。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<set>
#include<queue>
#include<map>
#define ll long long
using namespace std;
ll a[1010];
int main(){
    int n,m,k,x;
    cin>>n>>m>>k;
    for(int i=1;i<+n;i++){
        cin>>x;
    }
    cout<<"I Love nowcoder"<<endl;
    return 0;
}

フィール私が学んだ行列高速電力サン作業の多くは、Javaを怠惰なツリーラインマークは、リサイクルを続け Jカンカン明日の、デジタルDP

公開された127元の記事 ウォン称賛32 ビュー10000 +

おすすめ

転載: blog.csdn.net/boliu147258/article/details/103653326