Codeforces Round 883 (Div. 3)

A. Rudolph and Cut the Rope

只需要按照钉子距离的高度a_{i}和绳子的长度b_{i}的差值进行排序即可

代码

int n;
pii a[N];
bool cmp(pii a,pii b)
{
    return a.x-a.y<b.x-b.y;
}
 
void solve()
{
    cin>>n;
    for(int i=1;i<=n;i++)
      cin>>a[i].x>>a[i].y;
    sort(a+1,a+1+n,cmp);
    reverse(a+1,a+1+n);
    int res=0;
    for(int i=1;i<=n;i++)
    {
        if(a[i].x<=a[i].y)
        {
            break;
        }
        res++;
    }
    cout<<res<<endl;
}

B. Rudolph and Tic-Tac-Toe

模拟即可

代码

void solve()
{
    int n=3;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
         cin>>s[i][j];
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(s[i][j]==s[i][j+1]&&s[i][j+1]==s[i][j+2]&&s[i][j]!='.')
            {
                cout<<s[i][j]<<endl;
                return;
            }
            if(s[i][j]==s[i+1][j]&&s[i+1][j]==s[i+2][j]&&s[i][j]!='.')
            {
                cout<<s[i][j]<<endl;
                return;
            }
            if(s[i][j]==s[i+1][j+1]&&s[i+1][j+1]==s[i+2][j+2]&&s[i][j]!='.')
            {
                cout<<s[i][j]<<endl;
                return;
            }
            if(s[i][j]==s[i+1][j-1]&&s[i+1][j-1]==s[i+2][j-2]&&s[i][j]!='.')
            {
                cout<<s[i][j]<<endl;
                return;
            }
        }
    }
    cout<<"DRAW"<<endl;
}

C. Rudolf and the Another Competition

统计出每个人的过题的数量x_{i}和罚时t_{i}然后依次先对比过题数然后再对比罚时即可

void solve()
{
	cin>>n>>m>>t;
    vector<pii>p(n+10);
    int res=0;
    for(int i=0;i<n;i++)
    {
    	p[i].x=p[i].y=0;
    	vector<int>a;
    	int s=0;
    	for(int j=0;j<m;j++)
    	{
    		int x;
    		cin>>x;
    		a.push_back(x);
    	}
    	sort(a.begin(),a.end());
    	
    	for(int j=0;j<m;j++)
    	{
    		s=s+a[j];
    	    if(s<=t)
    	    {
    	    	p[i].x+=1;
    	    	p[i].y+=s;
    	    }	
    	}
    	if(i>0)
    	{
    		if((p[0].x<p[i].x)||(p[0].x==p[i].x&&p[i].y<p[0].y))res++;
    	}
    }
    cout<<res+1<<endl;
 
    
}

D. Rudolph and Christmas Tree

先统计所有三角形的面积,然后减去重叠部分即可,重叠部分可以根据初中学过的相似三角形定理对应边成比例即可

void solve()
{
    cin>>n>>d>>h;
    for(int i=1;i<=n;i++)
      cin>>y[i];
    sort(y+1,y+1+n);
    double s=n*d*h*0.5;
    for(int i=2;i<=n;i++)
    {
        int v=h+y[i-1];
        if(v>y[i])
        {
            double x=v-y[i]*1.0;
            double t=x/h*d*x*0.5;
            s-=t;
        }
    }
    printf("%f\n",s);
}

E2. Rudolf and Snowflakes (hard version)

根据样例中的图解

img

节点个数假设为n

n=1+4{1}+4{2}=21

我们假设他有k个子节点,会扩展x次那我们可以推出一个方程

n=1+k+k{2}+…+k{x}

所以只要将n分解成多项式即可

我们可以看出这个具有单调性,所以可以利用二分来快速求得答案

先枚举指数 x\in[2,60] 然后再二分k即可

void solve()
{
   cin>>n;
   for(int i=2;i<=60;i++)
   {
   	  int l=1,r=n+1;
   	  
   	  auto check=[&](int x){
   	  	int s=0,t=1;
   	  	for(int j=0;j<=i;j++)
   	  	{
   	  		s+=t;
   	  		if(s>inf)s=inf;
   	  		if((__int128_t)t*x>inf)t=inf;
   	  		else t*=x;
   	  	}
   	  	return s;
   	  };
   	  
   	  while(l+1<r)
   	  {
   	  	int mid=l+r>>1;
   	  	if(check(mid)>=n)r=mid;
   	  	else l=mid;
   	  }
   	  if(check(r)==n)
   	  {
   	  	cout<<"YES"<<endl;
   	  	return;
   	  }
   }
   cout<<"NO"<<endl;
  return;
}

Codeforces Round 894 (Div. 3) 是一个Codeforces举办的比赛,是第894轮的Div. 3级别比赛。它包含了一系列题目,其中包括题目E. Kolya and Movie Theatre。 根据题目描述,E. Kolya and Movie Theatre问题要求我们给定两个字符串,通过三种操作来让字符串a等于字符串b。这三种操作分别为:交换a中相同位置的字符、交换a中对称位置的字符、交换b中对称位置的字符。我们需要先进行一次预处理,替换a中的字符,然后进行上述三种操作,最终得到a等于b的结果。我们需要计算预处理操作的次数。 根据引用的讨论,当且仅当b[i]==b[n-i-1]时,如果a[i]!=a[n-i-1],需要进行一次操作;否则不需要操作。所以我们可以遍历字符串b的前半部分,判断对应位置的字符是否与后半部分对称,并统计需要进行操作的次数。 以上就是Codeforces Round 894 (Div. 3)的简要说明和题目E. Kolya and Movie Theatre的要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Codeforces Round #498 (Div. 3) (A+B+C+D+E+F)](https://blog.csdn.net/qq_46030630/article/details/108804114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Codeforces Round 894 (Div. 3)A~E题解](https://blog.csdn.net/gyeolhada/article/details/132491891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值