[2020.10.27人気グループ] SSLシミュレーションコンテストソリューション

目次:

T1:魔法阵~
T2:小biu放牛
T3:小A的游戏
T4:小biu闯关

……

T1:マジックアレイ〜

ここに画像の説明を挿入
ここに画像の説明を挿入

分析:

正多角形をカットしたい場合、残りの辺の数はnnでなければならないと結論付けることができます。n、残りのすべてのポリゴンの列挙とライン上の最大値を指示する係数です。

コード:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=20005;
int n,a[N],fac_num,sum,factor[N],maxn,k,fac_tot,edge,nowfac;
void count_fac(int x)
{
    
    
	for(int i=2;i<x;i++)
		if(x%i==0)
		{
    
    
			fac_num++;
			factor[fac_num]=i;  //统计因数
		}
}
void tp()
{
    
    
	if(fac_num==0||n==3)  //特判
	{
    
    
		printf("%d",sum);
			exit(0);
	}
}
int main(){
    
    
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
    
    
		scanf("%d",&a[i]);
		sum+=a[i];
	}
	maxn=sum; count_fac(n); tp();
	for(int i=0;i<fac_num;i++)
	{
    
    
		nowfac=factor[i];k=1;
		while(nowfac--)  
		{
    
    
			fac_tot=0;edge=0;
			for(int j=k;j<=n;j+=factor[i])
			{
    
    
				fac_tot+=a[j];
				edge++;  //枚举nowfac边形的所有和 
			}
			if(edge>=3)
				maxn=max(maxn,fac_tot);  //最大和
			k++;	
		}
	}
	printf("%d",maxn);
	return 0;
} 

T2:小さな牛番の牛

ここに画像の説明を挿入
ここに画像の説明を挿入

分析:

牛の放牧を考慮した2つの欲望のポイント、
入力によって牛の頭を計算するhは電子D テールのテールをtはlはその後、範囲外の状況を判断し

コード:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e6+5; 
int n,m,x,a[N];
bool check(int p)
{
    
    
	int head=0,tail=0;
	for(int i=1;i<=n;i++)
	{
    
    
		head=max(tail,a[i]-x-p);  //计算head位置
		if(abs(head-a[i]+x)>p) return 0;  //判越界
		tail=head+2*x; //计算tail
		if(tail>m) return 0;  //判越界
	}
	return true;
}
int main(){
    
    
	scanf("%d%d%d",&n,&x,&m);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	int l=0,r=m;
	while(l<=r)  //二分答案
	{
    
    
		int mid=(l+r)>>1;
		if(check(mid)) r=mid-1;
		else l=mid+1;
	} 
	if(l==(m|1)) printf("-1");  //m+1
	else printf("%d",l);	
	
	return 0;
}

T3:リトルAのゲーム

ここに画像の説明を挿入
ここに画像の説明を挿入

分析:

わからない場合は、繰り返し文字が必要です。プロパティ
を見つけることができます:繰り返し文字の最初のペア間の距離<= k <= k<=kS = "SASS" S = "SASS"の
ような場合は判断できませんS=" S A S S " k = 2 k = 2k=ASASが残っている場合は2A Sを削除することができ、1 3 1、31 3または1、4 1、41 4したがって、判断することは不可能です。
最初のペアは1、3 1、3です。1 3距離である2 22自然と出会い、判断できない

コード:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,k,flag;
string s;
int main(){
    
    
	scanf("%d",&n);
	while(n--)
	{
    
    
		flag=0; 
		cin>>s;
		scanf("%d",&k);
		if(k==s.length()){
    
    
			printf("Certain\n");  //特判
			continue;
		}
		for(int i=0;i<s.length();i++)
		{
    
    
			for(int j=i+1;j<s.length();j++)
				if(s[i]==s[j])  //重复字母
				{
    
    
					int dis=j-i; //距离
					if(dis<=k) 
					{
    
    
						flag=1;
						printf("Uncertain\n");
						break;
					}
				}
			if(flag) break;
		}	
		if(!flag)
			printf("Certain\n");
	}
	
	return 0;
}

T4:リトルビウが突破

特にアベバについての記事を書きました

総括する:

ここに画像の説明を挿入
一般的にT2 T 4T2T4を再生していません一部T 2 、T 4

おすすめ

転載: blog.csdn.net/dgssl_xhy/article/details/109335254