Codeforces Round #476 (Div. 2) [Thanks, Telegram!] (弱鸡持续更新中)

点击打开链接

A.数学题

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double k,n,s,p;
    cin>>k>>n>>s>>p;
    int x=(int)ceil(ceil(n/s)*k/p);
    cout<<x<<endl;
    return 0;
}

B.暴力

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
const int maxn=100+5;
char s[maxn][maxn];
int t[maxn][maxn];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
    memset(t,0,sizeof(t));
	for(int i=0;i<n;i++)
		scanf("%s",&s[i]);
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		   if(s[i][j]=='.') {
		   	 //ËÄ·½ÏòÅжÏ
		   	 bool flag=true;
			 for(int k=0;k<m;k++)
			 {
			    if(i+k<0||i+k>=n||s[i+k][j]=='#') flag=false;
			 } 
			 if(flag) {
			 	for(int k=0;k<m;k++)
			 	{
			 		t[i+k][j]++;
				}
			 }
			 flag=true;
			 for(int k=0;k<m;k++)
			 {
			    if(i-k<0||i-k>=n||s[i-k][j]=='#') flag=false;
			 }
			 if(flag) {
			 	for(int k=0;k<m;k++)
			 	{
			 		t[i-k][j]++;
				}
			 }
			 flag=true;
			 for(int k=0;k<m;k++)
			 {
			    if(j-k<0||j-k>=n||s[i][j-k]=='#') flag=false;
			 }
			 if(flag) {
			 	for(int k=0;k<m;k++)
			 	{
			 		t[i][j-k]++;
				 }
			 }
			 flag=true;
			 for(int k=0;k<m;k++)
			 {
			 	if(j+k<0||j+k>=n||s[i][j+k]=='#') flag=false;
			 }
			 if(flag) {
			 	for(int k=0;k<m;k++)
			 	{
			 		t[i][j+k]++;
				 }
			 }
		 }
	int res=0;
	PII f;
	f=PII(1,1);
	for(int i=0;i<n;i++)
	   for(int j=0;j<n;j++)
	      if(t[i][j]>res) {
	      	res=t[i][j];
	      	f.first=i+1;
	      	f.second=j+1;
		  }
	printf("%d %d\n",f.first,f.second);
	return 0;
}

C.思维题

因为D比较小,所以枚举D,要想第一个人分得最多,那么第一个人分得次数为i次,其余人为i-1次

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	LL n,m,k,d;
	cin>>n>>k>>m>>d;
	LL ans=0;
	for(LL i=1;i<=d;i++)
	{
		LL x=n/(k*i-k+1);
		if(!x) break;
		if(x>m) x=m;
		LL f=n/(k*x)+(n%(k*x)>=x?1:0);
		if(f>i) continue;
		ans=max(ans,x*f);
	}
	cout<<ans<<endl;
	return 0;
}

D.思维题 数学题

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
const int INF=0x3f3f3f3f;
int main()
{
    int w,l;
    scanf("%d%d",&w,&l);
    int a[maxn],cnt=INF;
    a[0]=0;
    for(int i=1;i<w;i++)
    {
        int t;
        scanf("%d",&t);
        a[i]=a[i-1]+t;
        if(i>=l) {
            cnt=min(cnt,a[i]-a[i-l]);
        }
    }
    cout<<cnt<<endl;
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值