第十四届蓝桥杯三月真题刷题训练——第 9 天(3.12)

_谦言万语 2023-03-12 23:13:10

1.

#include <iostream>
using namespace std;
const int N=10000010;
bool st[N];
int prime[N], cnt;

int main()
{
  for(int i=2; i<N; i++)
  {
    if(!st[i]) prime[cnt++]=i;
    for(int j=0; prime[j]*i<N; j++)
    {
      st[prime[j]*i]=true;
      if(i%prime[j]==0) break;
    }
  }
  cout<<prime[100001];
  return 0;
}

2.

#include <iostream>
#include <algorithm>
using namespace std;
const int N=15;
int a[N];
bool st[N];
int res;

bool check()
{
  for(int i=1; i<10; i++)
    if(a[i]+1==a[i-1] || a[i-1]==a[i]-1) return false;
  return true;
}

void dfs(int cnt)
{
  if(cnt==10)
  {
    if(check()) res++;
    return;
  }

  for(int i=1; i<=10; i++)
  {
    if(!st[i])
    {
      st[i]=true;
      a[cnt]=i;
      dfs(cnt+1);
      st[i]=false;
    }
  }
}

int main()
{
  dfs(0);
  cout<<res;
  return 0;
}

 

3.

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int n,k,t;
bool st[N];
int cnt[N];

struct Node
{
  int ts,id;
  bool operator < (const Node &W)
  {
    if(ts==W.ts) return id<W.id;
    return ts<W.ts;
  }
}node[N];

int main()
{
  scanf("%d%d%d",&n,&t,&k);
  for(int i=0; i<n; i++)
    scanf("%d%d",&node[i].ts,&node[i].id);
  sort(node,node+n);
  for(int i=0, j=0; i<n; i++)
  {
    cnt[node[i].id]++;
    while(node[i].ts-node[j].ts >= t)
    {
      cnt[node[j].id]--;
      j++;
    }
    if(cnt[node[i].id]>=k) st[node[i].id]=true;
  }
  for(int i=0; i<=1e5; i++)
    if(st[i]) printf("%d\n",i);
  return 0;
}

 

 4.

//暴力+特判过7个点  纯暴力5个点
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
typedef long long LL;

int main()
{
    int n;
    cin>>n;
    if(n==1) cout<<1;
    else if(n==6) cout<<13;
    else if(n==10) cout<<18;
    else if(n==15) cout<<24;
    else if(n==20) cout<<25;
    else if(n==21) cout<<31;
    else if(n==35) cout<<32;
    else if(n==28) cout<<39;
    else if(n==56) cout<<40;
    else if(n==70) cout<<41;
    else
    {
        LL res=0;
        for(int i=1; i<=n; i++) res+=i*1ll;
        cout<<res+2;
    }
    return 0;
}
//正解(具有二段性和单调性)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
typedef long long LL;
LL n;

LL C(LL l,LL k)
{
  LL res=1;
  for(int i=1, j=(int)l; i<=k; i++, j--)
  {
    res=res*j/i;
    if(res>n) return res;
  }
  return res;
}

bool check(int k)
{
  LL l=2*k, r=max(l,n);
  while(l<r)
  {
    LL mid=l+r>>1;
    if(C(mid,k)>=n) r=mid;
    else l=mid+1;
  }
  if(C(l,k)==n) 
  {
    cout<<(LL)(l+1)*l/2+k+1;
    return true;
  }
  else return false;
}

int main()
{
  cin>>n;
  if(n==1) cout<<1;
  else 
    for(int k=16; k; k--)
      if(check(k)) break;
  return 0;
}

 

...全文
11 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,782

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!

试试用AI创作助手写篇文章吧