Educational Codeforces Round 49(Rated for Div.2)切題報告
4719 ワード
A.Palindromic Twist原題アドレステーマ大意:t個の問題をあげます.各問題には1つのnと1列の文字列が含まれています.nはこの文字列にn個の文字列があります.各文字は1回変換しなければなりません.1回しか変換できません.変換の要求は自分の隣の文字にしか変換できません.例えば、「b」は「a」や「c」になります.「p」は「o」「q」になりますが、「a」は「b」になり、「z」は「y」になります.
答えの構想:シミュレーションはこのように書くことができます:私たちは循環を使って、1からn/2まで、このようにして、もしこの2つのアルファベットが変化することで等しいならば次のビットを計算することができて、さもなくば循環を終えて“NO”を出力します.
コード:
———————————————————騒々しい境界線——————————————————————————
B.Numbers on the Chessboard原題リンク
行列の中の数は1からn^2までで、一定の规则によって行列の中に并べて、まず、1行1列の格子の中で置いて、2は1の后ろの2つの格子の中で置いて、このようにします.今あなたにq個の質問をあげて、それぞれの質問の中で2つの数(x 1,y 1)があって、あなたに(x 1,y 1)この格子の中の数がいくらですかと答えてください.
答えの構想:1つのこんにゃくの中のこんにゃくの私として、第1目はシミュレーションを考えて、順番に数を記入して、しかし後の1秒はニマが10^9であることを発見して、このTMは天に昇るので、n^2の数があるため、それはせいぜいn^18回走ることを意味して、これは天に昇るのではありませんて、これは宇宙を飛び出します.だから、私の熟考を経て、私はこれが数学の問題である数学の問題であることを発見しました.
コード:
さあ、今日の問題はここまでです.皆さん、ご指導(レンガを撮る)を歓迎します.
答えの構想:シミュレーションはこのように書くことができます:私たちは循環を使って、1からn/2まで、このようにして、もしこの2つのアルファベットが変化することで等しいならば次のビットを計算することができて、さもなくば循環を終えて“NO”を出力します.
コード:
#include
using namespace std;
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++) //t
{
int n;
cin>>n;
char c[n];
cin>>c;
int ff=n-1;
int j;
for(j=0;j2;j++) // , , n/2
{
if(c[j]+1==c[ff]+1) // , +1, -1, 4 , , “NO” 。
{
ff--;
continue;
}
if(c[j]+1==c[ff]-1)
{
ff--;
continue;
}
if(c[j]-1==c[ff]+1)
{
ff--;
continue;
}
if(c[j]-1==c[ff]-1)
{
ff--;
continue;
}
cout<<"NO"<break;
}
if(j==n/2) // j==n/2 , “YES” 。
{
cout<<"YES"<return 0;
}
———————————————————騒々しい境界線——————————————————————————
B.Numbers on the Chessboard原題リンク
行列の中の数は1からn^2までで、一定の规则によって行列の中に并べて、まず、1行1列の格子の中で置いて、2は1の后ろの2つの格子の中で置いて、このようにします.今あなたにq個の質問をあげて、それぞれの質問の中で2つの数(x 1,y 1)があって、あなたに(x 1,y 1)この格子の中の数がいくらですかと答えてください.
答えの構想:1つのこんにゃくの中のこんにゃくの私として、第1目はシミュレーションを考えて、順番に数を記入して、しかし後の1秒はニマが10^9であることを発見して、このTMは天に昇るので、n^2の数があるため、それはせいぜいn^18回走ることを意味して、これは天に昇るのではありませんて、これは宇宙を飛び出します.だから、私の熟考を経て、私はこれが数学の問題である数学の問題であることを発見しました.
コード:
#include // , , ?
#define ll long long
using namespace std;
ll n,q,x,y,h,ans; // , long long
int main()
{
cin>>n>>q;
while(q--) // ( )
{
cin>>x>>y;
h=(n*n-1)/2+1;
ans=(n*(x-1)+y-1)/2+1;
if((x+y)&1) ans+=h;
cout<// , !!!
}
}
さあ、今日の問題はここまでです.皆さん、ご指導(レンガを撮る)を歓迎します.