(T1とT2を含む)仕上げクイズ

小規模のテスト、最初の二つの質問は、より多くの水ですが、整理する必要があります
(ゼリーのT1を男性♂問題は、1):
点から出発、拡散を通信する4つの方法は、#は、この時間に高さを、一点の高さによって増加し、単位時間あたりの格子を通って、Oを行く必要満員の間の拡散時間を求めることはできません、行く、とすることができますそして、。
そして、
(グリッドの開始点ではない高さ)
を見てwater_lift:うわー、はげをドリルこの問題は、S *それはない
、その後の0をバースト...
このタイトルには広義の検索トピックに愛さ表情で、契約の各段階のコストとは、広義の検索バーでのステップの最小数を、求めるとき原点は、知られているかを決定。
正し白本が証拠を与えている
だけでなく尋ね、この質問へのステップの最小数を、しかし、残りの質問は、実際に鶏料理の面で(1朝呼び出すことができます一つは二つの質問であり、残りの部分に表示され、私は一日、これを行うことができます!)
最初の問題は、残りの高さの合計を求めて、この問題のために、ステップ数がちょうど保全の下に各グリッドに到達するための質問で、そして最後のステップの最終的な数を引いグリッドにステップの数、及びその後それが答えです、合計し、
式は次のようになります
\(。。\ SUMの\のlimits_ 1} = \ finalstep(MAXN)-step_i 1 + \ {私は^ {N-})
最後の質問です読んで、彼らは一日に転送される可能性があります読んで...
その理由は、文字列を示すマップを読み取る必要があるということですが、各文字の間にスペースがあり...
データが文字に対処するために継続することで読むことを意味し、スペースや改行(非常TM Zaoxinです...)
:2つのアイデアを検討
while文と非文字を(この場合は、マップ句読点ことを示しています)彼らは文字の説明を読むためにwhileループから飛び出すことを考えると、文字が保存されます、行く...
または物質である\(3 * 7 = 2147483648パーセント1000年\)としてのアイデアを処理し、1つの分析ずつ、その後、全体のラインの全てが読み込まれます...
...毛布を完了するために、次に最も困難な問題
なぜあなたが調整でき、朝のよう誇張、次の
タグ可変残基の手やポインタ変数をコードすることは容易であるため、実際には、例えば基本的なエラー(とに(マーキング処理は、位置物事文字列に使用されている)、間違っているか、単に細部を無視する、または読み取り取得に)WAの山につながる
が、それも良いです。
少なくとも私は午前中にFC cmdを学びました(ファイル比較)...
FCまあ
掲載コードを忘れてしまいました:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
struct node{
    int x,y;
    int step;
    node(int _x,int _y,int _step):x(_x),y(_y),step(_step){}
};
queue<node> q;
int n,m;
string aa;
char pos[505][505];
bool vis[505][505];
int stp[505][505];
int sx,sy;
int mx[5]={0,-1,0,1,0};
int my[5]={0,0,1,0,-1};
int main(){
    scanf("%d%d",&n,&m);
    char ch=getchar();
    while(ch!='\n') ch=getchar();
    for(int i=1;i<=n;i++){
        getline(cin,aa);
        int t=0;
        int s=0;
        while(t<aa.size()){
            if(aa[t]=='*'||aa[t]=='#'||aa[t]=='o')
                pos[i][++s]=aa[t];
            if(pos[i][s]=='*'){
                sx=i;
                sy=s;
            }
            t++;
        }
    }
    vis[sx][sy]=1;
    q.push(node(sx,sy,0));
    int maxn=0;
    while(!q.empty()){
        node u=q.front();
        q.pop();
        for(int i=1;i<=4;i++){
            int nx=u.x+mx[i];
            int ny=u.y+my[i];
            if(nx<=0||n<nx) continue;
            if(ny<=0||m<ny) continue;
            if(pos[nx][ny]=='#'&&!vis[nx][ny]){
                vis[nx][ny]=1;
                stp[nx][ny]=u.step+1;
                maxn=max(stp[nx][ny],maxn);
                q.push(node(nx,ny,u.step+1));
            }
        }
    }
    int sum=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(i==sx&&j==sy)continue;
            if(vis[i][j])
            sum+=(maxn-stp[i][j]+1);
            sum%=19260817;
        }
    }printf("%d\n%d\n",maxn,sum);
    return 0;
}

T2([コンサート]ダブル形質転換):

MDデータ範囲:
データの20%、(N-のLeq 1 \ leq10000 \ \)\
100%データ、\(1.5e6 \ n型のLeq \のLeq 2E6 \ 1 \当量X [i]は\当量1E9 \) を生成ランダムに保証するものではありません
コードを見てみると、アップ掲示Tか!ん

、この質問は本当にアップexgcdアウト考えている
)(とうを証明するために:

コード:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int x;
inline int read(){
    int x=0;
    char c=getchar();
    while(!isdigit(c))
        c=getchar();
    while(isdigit(c)){
        x=(x<<3)+(x<<1)+(c^48);
        c=getchar();
    }
    return x;
}
inline int gcd(const int &a,const int &b){
    if(b==0) return a;
    return gcd(b,a%b);
}
int ans;
int main(){
    scanf("%d",&n);
    ans=read();
    for(int i=2;i<=n;i++){
        x=read();
        ans=gcd(ans,x);
    }
    printf("%d",ans*n);
    return 0;
}

この問題に関する最初の二つの質問

おすすめ

転載: www.cnblogs.com/648-233/p/11105672.html