蓝桥杯14小白月赛题解

直接输出

pi/ti,for遍历

#include <iostream>
using namespace std;
#define int long long 
int a,b,c ;
double t=1.00;
signed main()
{
  cin>>a;
  int an=0;
  for(int i=1;i<=a;i++)
  {
  		cin>>b>>c;
  		if(t>c*1.00/b)
	  	{
	  		t=c*1.00/b;
	  		an=i;
  		}	
  }
  cout<<an<<endl;
  return 0;
}

用前缀和求重新启动的次数,特盘端点。

#include <iostream>
using namespace std;
#define int long long 
const int n=1e6+11;
int a,b,c,l,r,d[n];
signed main()
{
	ios::sync_with_stdio(false);
	  cin.tie(0),cout.tie(0);
	cin>>a;
	string t;
	cin>>t>>b;
	t=" "+t;
	for(int i=1;i<=a-1;i++)
	{
		d[i]=d[i-1];
		if(t[i]=='1'&&t[i+1]=='0')
		{
			d[i]++;
		}
	}
	d[a]=d[a-1];
  d[a+1]=d[a];
	while(b--)
	{
		cin>>l>>r;
		int v=d[r]-d[l-1];
    if(r==a+1)
    {
      cout<<v<<endl;
      continue;
    }
    if(r<=a-1&&t[r]=='1'&&t[r+1]=='0')
		{
			v--;
		}
		cout<<v<<endl;
	}
}

背包

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int n=3e3+11;
int a,b[n],c[n],l,r,d[n],f[n];
signed main()
{
	ios::sync_with_stdio(false);
	  cin.tie(0),cout.tie(0);
	cin>>a;
	for(int i=1;i<=a;i++)
	{
		cin>>b[i];
	}
	for(int i=1;i<=a;i++)
	{
		cin>>c[i];
	}
	for(int i=1;i<=a;i++)
	{
		cin>>d[i];
	}
	for(int i=0;i<=3000;i++)
	{
		f[i]=1e18;
	}
	f[b[1]]=0;
	int v=b[1];
	for(int i=1;i<=a;i++)
	{
    for(int j=b[i]-1;j>=0;j--)
		{
			f[j]=1e18;
		}
		for(int j=3000;j>=b[i]&&j>=d[i];j--)
		{
			f[j]=min(f[j-d[i]]+c[i],f[j]);
		}
	}
	int p=1e18;
	for(int i=b[a];i<=3000;i++)
	{
		p=min(p,f[i]);
	}
	if(p>=1e18)
	{
		cout<<"-1"<<endl;
	}
	else
	{
		cout<<p<<endl;
	}
}

分别考虑每一位,组合数。

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int mod=998244353;
const int n=1e6+11;
int a,b[n],c[n],l,r,d[n],f[n];
int ss(int x,int y)
{
    int p=1;
    while(y)
    {
        if(y%2==1)
        {
            p=p*x%mod;
        }
        x=x*x%mod;
        y/=2;
    }
    return p;
}
signed main()
{
    ios::sync_with_stdio(false);
      cin.tie(0),cout.tie(0);
    a=9;
    int s=1;
    f[1]=1;
    for(int i=2;i<=100000;i++)
    {
        s=s*10%mod;
        f[i]=(f[i-1]+s)%mod;
    }
    
    s=0;
  int ff=0;
    for(int i=1;i<=a;i++)
    {
        cin>>b[i];
    if(b[i]!=0)
    {
      ff++;
    }
        s+=b[i];
    }
  if(ff==1)
  {
    cout<<f[s]%mod<<endl;
    return 0;
  }
    //cout<<"dfd"<<endl;
    d[s]=1;
    for(int i=s-1;i>=1;i--)
    {
        d[i]=d[i+1]*i%mod;
    }
    c[0]=1;
    for(int i=1;i<=s-1;i++)
    {
        c[i]=c[i-1]*i%mod;
    }
    //cout<<"ff"<<endl;
    int an=0;
    for(int i=1;i<=a;i++)
    {
        if(b[i]==0)
          continue;
        if(b[i]==1)
        {
            an=(an+(f[s]*i%mod))%mod;
        }
        else
        an=(an+(((d[s-1-(b[i]-1)+1]*ss(c[b[i]-1],mod-2)%mod)*f[s])%mod*i)%mod)%mod;
        //cout<<an<<" "<<f[s]<<" "<<d[s-1-(b[i]-1)+1]<<endl;
    }
    cout<<an<<endl;
}
// 2 3 1 0 0 0 0 0 0
相关推荐
测试界萧萧5 小时前
15:00面试,15:08就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
柒月的猫7 小时前
求和(2022蓝桥杯A组试题C)
c语言·算法·蓝桥杯
<但凡.12 小时前
题海拾贝:蓝桥杯 2020 省AB 乘法表
c++·算法·蓝桥杯
pzx_00112 小时前
【LeetCode】94.二叉树的中序遍历
算法·leetcode·职场和发展
lyx14260617 小时前
leetcode 3083. 字符串及其反转中是否存在同一子字符串
算法·leetcode·职场和发展
茶猫_17 小时前
力扣面试题 39 - 三步问题 C语言解法
c语言·数据结构·算法·leetcode·职场和发展
chenziang11 天前
leetcode hot100 对称二叉树
算法·leetcode·职场和发展
柒月的猫1 天前
方格分割(蓝桥杯2017年试题D)
职场和发展·蓝桥杯
柒月的猫1 天前
翻转(蓝桥杯2023大学C组试题E)
职场和发展·蓝桥杯
Solitudefire1 天前
蓝桥杯刷题——day9
算法·蓝桥杯