自学内容网 自学内容网

some cf 题

Problem - 1929C - Codeforces

Codeforces Round 926 (Div. 2)

#include <bits/stdc++.h>
#define int long long
using namespace std;
int t;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--)
    {
    int k,x,a;
    cin>>k>>x>>a;
    int zhi=1;
    bool tmp=false;
    if(zhi>=a)
    tmp=true;
    for(int i=1;i<=x-1;i++)
    {
    int shu=(zhi+1)/(k-1);
    if((zhi+1)%(k-1)!=0)
    shu++;
    zhi+=shu;
    if(zhi>=a)
    {
    tmp=true;
    break;
}
}
if(k*(a-zhi)<=a)
tmp=true;
if(tmp==true)
cout<<"NO"<<'\n';
else
cout<<"YES"<<'\n';
}
}

Problem - 1903C - CodeforcesCodeforces Round 912 (Div. 2)

#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[1000000],aa[1000000];
int ans,ccnt,sum,tot,f;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
     int t;
     cin>>t;
     while(t--)
     {
     int n;
     cin>>n;
     for(int i=1;i<=n;i++)
     cin>>a[i];
     ans=ccnt=sum=tot=0;
     f=0;
     for(int i=n;i>=1;i--)
     {
     sum+=a[i];
tot+=a[i];
f=1;
if(sum>0)
{
aa[++ccnt]=tot;
tot=0;
f=0;
}
}
if(f)  aa[++ccnt]=tot;
for(int i=1;i<=ccnt;i++)
ans+=(ccnt-i+1)*aa[i];
cout<<ans<<'\n';
 }
}

Problem - 1878E - CodeforcesCodeforces Round 900 (Div. 3)

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=34,M=2e5+10;
int n,q;
int a[M],num[M][N]; 
int check(int l,int r,int k)
{
int sum=0;
for(int bit=0;bit<=30;bit++)
{
int cnt=num[r][bit]-num[l-1][bit];
if(cnt==r-l+1)
sum+=(1ll<<bit);
}
     return (sum>=k);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
     int t;
     cin>>t;
     while(t--)
     {
     cin>>n;
     for(int i=1;i<=n;i++)
       for(int j=0;j<=30;j++)
       num[i][j]=0;
       for(int i=1;i<=n;i++)
       {
       cin>>a[i];
       for(int bit=0;bit<=30;bit++)
       {
       if(a[i]>>bit&1) num[i][bit]=1;
       num[i][bit]+=num[i-1][bit];
   }
   }
   int q;
   cin>>q;
   while(q--)
   {
   int l,L,r=n,x;
   cin>>l;
   L=l;
   cin>>x;
   while(l<r)
   {
   int mid=(l+r+1)/2;
   if(check(L,mid,x))
   l=mid;
   else
   r=mid-1;
}
if(check(L,l,x))
cout<<l<<' ';
else
cout<<"-1"<<' ';
   }
   cout<<'\n';
 }
}


原文地址:https://blog.csdn.net/2301_80160438/article/details/143088014

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!