ホームページ >ウェブフロントエンド >htmlチュートリアル >codeforces 260 div2 A、B、C_html/css_WEB-ITnose

codeforces 260 div2 A、B、C_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 12:00:181158ブラウズ

A: 水の質問、構造を並べ替えた後、2 つの配列の配列が同じかどうかを確認してください。

B: 1、2、3、4 の n 乗をそれぞれ書き出し、5 を法とします。残りが 5 のループセクションがあることがわかります。 %4 = 0 の場合は 4 を出力し、それ以外の場合は 0 を出力します。

大きな数値を書き込んで剰余を取るだけです。

B. Fedya and Maths

テストごとの制限時間

1 秒

テストごとのメモリ制限

256 メガバイト

入力

標準入力

出力

標準出力

Fedya の研究体育館でのフェディアの数学の宿題は、次の式を計算することです: 与えられた n の値に対して

(1n?+?2n?+?3n?+?4n) を計算することができました。指定された数値 n は非常に大きくなる可能性があります (たとえば、プログラミング言語の整数型を超える可能性があります)。

入力

1 行には 1 つの整数 n (0?≤?n?≤?10105) の数値が含まれます。先行ゼロは含まれません。

出力

先行ゼロなしで式の値を出力します。

サンプルテスト

入力

出力

入力

124356983594583453458888889

出力

演算 x mod y は、x を y で除算した後の剰余を取ることを意味します。

最初のサンプルへの注:

#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <ctime>#include <map>#include <set>#define eps 1e-9///#define M 1000100///#define LL __int64#define LL long long///#define INF 0x7ffffff#define INF 0x3f3f3f3f#define PI 3.1415926535898#define zero(x) ((fabs(x)<eps)?0:x)using namespace std;const int maxn = 1000010;int main(){    string s;    while(cin >>s)    {        int n= s.size();        int cnt = s[0]-'0';        for(int i = 1; i < n; i++)        {            cnt %= 4;            cnt = (cnt*10+(s[i]-'0'))%4;        }        if(cnt%4 == 0)            cout<<4<<endl;        else cout<<0<<endl;    }}
C:あなた、いくつかの数字、あなた数値を取得した場合は、その数値より 1 大きい数値と 1 小さい数値が削除されます。取得できる最大の数値の合計を求めます。

最初に数値に基づいてハッシュし、それを 1 回線形に dp します。 dp[i][1] = ma(dp[i-2][0], dp[i-2][1]) + vis[ i ]*i,dp[i][0] = max(dp[i-1][0], dp[i-1][1]) 1 はこの数値を取得することを意味し、0 はこの数値を取得しないことを意味します。データ型はlonglongである必要があることに注意してください。

C. 退屈

テストごとの制限時間

1 秒

テストごとのメモリ制限

256 メガバイト

入力

標準入力

出力

標準出力

アレックスは退屈が好きではありません。だから、彼は退屈になるたびにゲームを思いつきました。

プレイヤーは、n 個の整数からなるシーケンスを思いつきました。 1 つのステップで、シーケンスの要素 (ak とします) を選択して削除できます。その際、ak?+?1 および ak?-?1 に等しいすべての要素も から削除する必要があります。このステップはプレーヤーに ak ポイントをもたらします。

Alex は完璧主義者なので、できるだけ多くのポイントを獲得することにしました。

入力

最初の行には整数 n (1?≤?) が含まれています。 n?≤?105) は、Alex のシーケンスに含まれる数値の数を示します。

2 行目には、n 個の整数 a1、a2、...、an (1?≤?ai?≤?105) が含まれます。

出力

Alex が獲得できる最大ポイント数を出力します

入力

21 2

output

10

Note

Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this [2,?2,?2,?2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.


#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <ctime>#include <map>#include <set>#define eps 1e-9///#define M 1000100///#define LL __int64#define LL long long///#define INF 0x7ffffff#define INF 0x3f3f3f3f#define PI 3.1415926535898#define zero(x) ((fabs(x)<eps)?0:x)using namespace std;const int maxn = 1000010;LL vis[maxn];LL dp[maxn][2];int main(){    int n;    while(cin >>n)    {        int x;        memset(vis, 0, sizeof(vis));        memset(dp, 0, sizeof(dp));        for(int i = 0; i < n; i++)        {            scanf("%d",&x);            vis[x] ++;        }        dp[1][1] = vis[1];        dp[2][1] = vis[2]*2;        dp[2][0] = dp[1][1];        for(int i = 3; i <= maxn-10; i++)        {            dp[i][1] = max(dp[i-2][0], dp[i-2][1])+vis[i]*i;            dp[i][0] = max(dp[i-1][0], dp[i-1][1]);        }        cout<<max(dp[maxn-10][0], dp[maxn-10][1])<<endl;    }    return 0;}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。