広西大学の第3回「チャイナイーストコムカップ」プログラムデザインコンペティション-フレッシュマングループ-パーシャルソリューション

1つ、A +++++++++++++

タイトル説明:

ある日、Xiaoxiの親友であるAntinomyが西大学を訪れ、キャンパスで2枚の巨大な絵画を見つけました。1枚は「イノベーション」、もう1枚は「起業家精神」というタイトルでしたが、すべて空白でした。そこで二律背反は小西に「この二つの絵はどうあるべきか」と尋ねた。小西:「イノベーションや起業家精神に従事する学生がいる。」二律背反:「イノベーションとは何か」小西:「高度な科学研究と技術に従事している研究高レベルの分野の競争に参加することは、単に学術活動とスキルトレーニングです。」二律背反:「起業家精神とは何ですか?」小西:「業界の実際の発展とリアルタイムの政治的および経済的状況に基づいて、持続可能な創造限られた資本での収益性大きな開発スペース活動。」Xiaoxi:「学生がイノベーションと起業家精神の競争に参加しているため、これらの2つの絵が空白である理由について。」

ご存知のように、イノベーションと起業家精神の競争は、私たちの学校が一人当たりに参加するヘビー級の競争です。このカテゴリーの競争は、いわゆる「A +」競争である賞や評価の評価において絶対的な利点があります。
しかし、ご存知のとおり、A +コンペティションがA +コンペティションである理由は、最高のコンペティションが非常に多いからです。今、Antinomyは、そのような制限がないと仮定して、コンペティションのタイトルセットに名前とリクエストを付けて知りたいと考えています。この競争のレベル。
Xiaoxiは、与えられたnnnタイトルごとに、それぞれが<national、nternational> <national、international> <national、international>(つまり、China International)のペアを形成できると考えており、競争のレベルはAAddに基づくことができます。 +。

説明を入力してください

テストケースTの最初の行を入力すると、テストデータのTグループがあります。テストケースの各グループの最初の行は整数nであり、これはn個のタイトルがあることを意味します。次のn行では、それぞれに文字列があります。行がタイトルにのみ可能である。i番目のタイトルを表し、国内または国際です
1≤T≤100
3≤n≤10^ 4

出力の説明

テストケースの各セットについて、現在の競争レベルを出力します


入力

4
3
国家の
国際的な
国家の
4
国家
、国際
、国家
、国際
4
国民
国家の
国民
国家の
4
国際
国際
国家の
国民

出力

A +
A ++
A
A ++

この質問は、単に国内および国際的な数を数え、2つのうちの最小値、つまり、2つが最大でいくつのペアを形成できるかをとることです。

#include<iostream>
#include<string>
using namespace std;
int main ()
{
    
    
	int t;
	cin >> t;
	while ( t-- )
	{
    
    
		int n, book[2] = {
    
     0 };
		cin >> n;
		while ( n-- )
		{
    
    
			string arr;
			cin >> arr;
			if ( arr == "national" )
				book[0]++;
			if ( arr == "international" )
				book[1]++;
		}
		cout << "A";
		for ( int i = 1; i <= min ( book[0], book[1] ); i++ )
			cout << "+";
		cout << endl;
	}

	return 0;
}

2.GDPキャリー

タイトル説明

XiaoxiとAntinomyは再びJunwuBuildingにやって来て、A +競技学校の競技会を擁護していました。彼らは、防衛に参加しているプロジェクトチームのプロジェクト計画を密かにめくり、各計画に毎日の流れなどの指標があることを発見しました。ゲームを作る。現在、nnnのプロジェクト計画があり、各計画には1日のターンオーバー数があります。これらのnnnの1日のターンオーバーは、長さnnnのシーケンスfffと見なされます。2人が交代で操作します。二律背反が主導権を握ります。二律背反は毎回fffを配置する必要があります。 。空でない連続セグメントを削除するには、このセグメントの要素の合計が奇数である必要があります。Xiaoxiは、毎回Fの空でない連続セグメントも削除する必要がありますが、要素の合計はこのセグメントでは偶数である必要があります。それができなくなった場合、その人は負けたと判断されます。段落が削除された後、元の段落の前の部分と元の段落の後の部分も連続していると見なされます。彼ら全員が最良の戦略を採用し、このnnnの毎日の売上高を与えることを知っているので、最終的に誰が勝つかを尋ねることができますか?

説明を入力してください

最初の行にnnnを入力して、fffの長さを示し、次の行で、nnn整数はf0、f1·······fn-1
3 <= n <= 10 ^ 6
1 <= fi <=を表します。10 ^ 9

出力の説明

勝者を示す1行の文字列を出力し、Antinomyが勝った場合はAntinomyを出力し、そうでない場合はXiJamを出力します。

例1の
入力

4
1 2 3 4

出力

二律背反

例2の
入力

3
2 2 4

出力

XiJam

この問題は単純なゲーム理論の問題です。二律背反(ドラゴンのボス)が主導権を握り、奇数しか取れないためです。

ランニングサムが奇数の場合、ドラゴンボスがすべてを直接受け取ることができ、ドラゴンボスが勝ち、
ランニングサムが偶数の場合は二律背反が出力され
ます。1。組み合わせに関係なく、すべてのトランザクションは偶数です。数+偶数は偶数にしかなり得ないので、ドラゴンボスは負けなければならず、XiJam
2を出力します。流水の一部は奇数で、ドラゴンボスは最初に奇数を取り、次に合計=偶数-奇数=奇数、したがって、Xijamはそれをすべて中古で受け取ることはできず、偶数が1つだけです。奇数-偶数==奇数なので、サードハンドでは、ドラゴンのボスがすべてを直接取ることができます。

分析を要約すると、それらがすべて偶数である場合にのみ、ドラゴンのボスは負ける可能性があります!

#include<iostream>
using namespace std;
int main ()
{
    
    
	int book=0,n;
	cin >> n;
	long long temp;
	for ( int i = 1; i <= n; i++ )
	{
    
    
		cin >> temp;
		if ( temp % 2 != 0 )
			book = 1;
	}
	if ( book == 1 )
		cout << "Antinomy" << endl;
	else cout << "XiJam" << endl;
	return 0;
}

三、解釈可能性

小西と二律背反がA +レベルの競争防衛のPPTを通過したとき、彼らはPPTにリストされた指標の多くが相互に支持関係にあることに気づきました。彼らは共同で審査員を力強くそして立派に見せるための外観を組織しました。持続可能性について言えば、三角形の安定性が良好であることはよく知られています。XiaoxiとAntinomyは、このPPTの山にリストされている各指標に信頼性があることも発見しました。3つの指標の信頼性が長さとして見たときに三角形を形成できる場合、これらの3つの指標は相互にサポートできるため、維持可能であるように見えます。並べ替えた後、各指標の信頼性は2の正の整数乗であり、信頼性が2 ^ iのfi指標があることがわかります。互いにサポートしている3つの指標のみが考慮され、各指標はそれのみが可能です。相互にサポートする三角形で使用されます。二律背反とXiaoxiは、nとnの数f1、f2、... fnf_1、f_2、... f_nf1、f2、... fnが与えられた場合、相互にサポートする三角形システムをいくつ形成できるかを知りたいと考えています。これらの指標によって?

説明を入力してください

説明を入力してください出力の説明

最大でいくつの三角形システムを形成できるかを示す整数を1行に出力します。

例1の
入力

3
1 1 1

出力

0

例2の
入力

5
1 2 2 2 2

出力

3

例3
入力

3
3 3 3

出力

3

促す

ヒント:2i2 ^ i2iを保存する必要はありません

まず、2つの辺の合計が3番目の辺よりも大きいという事実に基づいて、これらの値の3つの等しくない3つは三角形を形成できないため、二等辺三角形または正三角形のみを考慮することができます。
二等辺三角形を優先する理由は、最も確実にするために、前に余分な残り物を使用するようにする必要があるためです。

#include<iostream>
using namespace std;
int main ()
{
    
    
	long long n, f,book=0,ans=0;
	cin >> n;
	while ( n-- )
	{
    
    
		cin >> f;
		
		while( f>=2 && book > 0 )//优先等腰
		{
    
    
			ans++;
			f -= 2;
			book--;
		}
		ans += f / 3;//然后等边
		book += f % 3;
	}
	cout << ans << endl;
	return 0;
}

四、正規化

私は十分ではありません、合格!

5.小西とデジタル変換

私は怠け者です。タイトルを見るための直接リンク
パスワード:2020gxuacm19
小西とデジタル変換

この質問では、n%100などの余りを取るプロセスを理解する必要があります。数百以上は余りの結果に影響しないため、数百未満の位置のみを考慮する必要があります。
オントロジーの原則同じです

#include<iostream>
#include<string>
using namespace std;
int main ()
{
    
    
	string num;
	int n,x,y;
	cin >> n >> x >> y;
	cin >> num;
	int ans = 0;
	for ( int i = n - x ; i < n; i++ )
	{
    
    
		if ( ( num[i] == '1' && i != n - y - 1 ) || ( num[i] == '0' && i == n - y - 1 ) )
			ans++;
	}
	cout << ans << endl;
	return 0;
}

シックス、シャオキシとパズル

小西とジグソー
パスワード:2020gxuacm19

まず、主対角線の概念を理解する必要があります(ここではBaiduをお勧めします)


主対角線が理解されていれば、この質問は比較的簡単です。左下と右上に等しい長方形があれば十分です。そうすれば、要件を詳しく説明できます。

#include<iostream>
using namespace std;

int temp[2][2];
int main ()
{
    
    
	int t;
	cin >> t;
	while ( t-- )
	{
    
    
		int n, m;
		cin >> n >> m;
		int book = 0;
		for ( int i = 1; i <= n; i++ )
		{
    
    
			cin >> temp[0][0] >> temp[0][1] >> temp[1][0] >> temp[1][1];
			if ( temp[1][0] == temp[0][1] )
				book = 1;
		}
		if ( m % 2 == 0 && book == 1 )
			cout << "YES" << endl;
		else cout << "NO" << endl;
	}
return 0;
}

セブン、コニシとコピーアンドペースト

小西とコピーアンドペースト
パスワード:2020gxuacm19
この質問はもっと複雑で、逆の順序で推測されます。ここでは、lmggのコードを参照し、自分で理解してください。

#include<iostream>
#include<string>
#define MAX 200005
using namespace std;
int a[MAX], b[MAX], c[MAX];
int main ()
{
    
    
	long long k, m, n;
	string arr;
	cin >> k >> m;
	cin >> arr;
	cin >> n;
	for ( int i = 0; i < n; i++ )
		cin >> a[i] >> b[i] >> c[i];

	for ( int i = 0; i < k; i++ )
	{
    
    
		int p = i;
		for ( int j = n - 1; j >= 0; j-- )
		{
    
    
			if ( c[j] <= p )
			{
    
    
				if ( c[j] + b[j] - a[j] <= p )
				{
    
    
					p -= b[j] - a[j];
				}
				else//超过m裁掉那种
				{
    
    
					p = a[j] + p - c[j];
				}
			}

		}
		cout << arr[p];

	}
	cout << endl;
	return 0;
}

最後に、私のメモリバーストコードを投稿して、みんなに感謝し てもらいましょうこれを警告として受け取ってください

#include<iostream>
#include<string>
using namespace std;
int main ()
{
    
    
	string arr;
	long long k, m, n;
	cin >> k >> m;
	cin >> arr;
	cin >> n;
	while ( n-- )
	{
    
    
        string book;
		long long a, b, c;
		cin >> a >> b >> c;
		book = arr.substr ( a, b-a );
		arr.insert ( c, book );
		string Arr = arr.substr ( 0, m );
		arr = Arr;
	}
	for ( int i = 0; i < k; i++ )
		cout << arr[i];
	cout << endl;
	return 0;
}

競争は、4番目に加えて1億の小さな複雑なシミュレーションがあり、7番目と8番目の複雑なアイデアには基礎が必要です。それを行うための新入生としての残りの5つのタイトルは問題ではありません。

おすすめ

転載: blog.csdn.net/weixin_51550966/article/details/111478544