当前位置: 首页 > news >正文

Codeforces Round 1011 (Div. 2)

打的依托,A一直错,B写的好像麻烦了

A略

B

最简单的想法是:保证最后一步操作时所有数非0,我们可以将序列化为左右两部分,哪一部分有0则这一部分进行一次操作,最后这两部分进行一次操作

C

首先,x和y相等直接不可能。观察式子发现如果(x+k)xor(y+k)中的xor发挥的作用和+一样,那么左右两边相等,即x+k和y+k的二进制下的1不出现在同一位上。我们让x和y较大的那个加一个数能够最高位进一位,其他位为0,那么那个小的数即使加上最高位也不到大数加后最高位,此时同一位最多出现一个1

D

首先贪心分析会吃掉n/(k+1)盘寿司,倒数第i盘寿司最晚吃的时间是n-i*(k+1)+1,最早吃的时间是1.相当于在n个数中选择n/k个数,倒数第i个数的选择范围是(1,n-i*(k+1)+1),且每个数只能被选择一次,使得选择的数的总和最大,因为前面的选择范围更小,我们从前往后选,用线段树找到该范围下最大的寿司的编号,累加,再把这个寿司改成0

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10;
int T,n,a[N],k,ans;
struct Tree{
    int maxn,l,r,id;
}t[N*4];
void init()
{
    ans=0;
    for(int i=1;i<=4*n;i++)
    t[i].l=t[i].r=t[i].maxn=t[i].id=0;
}
void build(int p,int l,int r)
{
    t[p].l=l,t[p].r=r;
    if(l==r) {t[p].maxn=a[l]; t[p].id=l; return ;}
    int mid=(l+r)/2;
    build(p*2,l,mid);
    build(p*2+1,mid+1,r);
    if(t[p*2].maxn>t[p*2+1].maxn)
    {
        t[p].maxn=t[p*2].maxn;
        t[p].id=t[p*2].id;
    }
    else
    {
        t[p].maxn=t[p*2+1].maxn;
        t[p].id=t[p*2+1].id;
    }
}
int ask(int p,int l,int r)
{
    if(t[p].l>=l&&t[p].r<=r) return t[p].id;
    int mid=(t[p].l+t[p].r)/2;
    int s1=0,s2=0;
    if(l<=mid) s1=ask(p*2,l,r);
    if(r>mid) s2=ask(p*2+1,l,r);
    if(a[s1]>a[s2]) return s1;
    else return s2;
}
void change(int p,int k)
{
    if(t[p].l==t[p].r) {t[p].maxn=0; return;}
    int mid=(t[p].l+t[p].r)/2;
    if(k<=mid) change(p*2,k);
    else change(p*2+1,k);
    if(t[p*2].maxn>t[p*2+1].maxn)
    {
        t[p].maxn=t[p*2].maxn;
        t[p].id=t[p*2].id;
    }
    else
    {
        t[p].maxn=t[p*2+1].maxn;
        t[p].id=t[p*2+1].id;
    }
}
void solve()
{   
    cin>>n>>k;
    init();
    for(int i=1;i<=n;i++)
    cin>>a[i];
    build(1,1,n);
    for(int i=n/(k+1);i>=1;i--)
    {
        int t=ask(1,1,n-i*(k+1)+1);
        ans+=a[t];
        change(1,t);
    }
    cout<<ans<<endl;
}
signed main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>T;
    while(T--) solve();
}


文章转载自:

http://qIdDIDqf.xwzsq.cn
http://cSJhvJtK.xwzsq.cn
http://A6lN3wYv.xwzsq.cn
http://Wmafjveg.xwzsq.cn
http://j7plEl7p.xwzsq.cn
http://RnPX1PqO.xwzsq.cn
http://R3wszDOu.xwzsq.cn
http://y34eyJ0T.xwzsq.cn
http://tTpqlwAO.xwzsq.cn
http://HyvIRJuI.xwzsq.cn
http://H5bi2RZB.xwzsq.cn
http://EQ18keZj.xwzsq.cn
http://gZ9sDyA0.xwzsq.cn
http://yoTnX9rn.xwzsq.cn
http://W6wBu6sQ.xwzsq.cn
http://yTTrSrvh.xwzsq.cn
http://D9PInqj1.xwzsq.cn
http://W0hU797p.xwzsq.cn
http://zcwPiWeI.xwzsq.cn
http://6ez7H1KE.xwzsq.cn
http://lxg7DJJ9.xwzsq.cn
http://HbbOqdc8.xwzsq.cn
http://TUnf3Kxx.xwzsq.cn
http://NNQ6t3tI.xwzsq.cn
http://oBL4F007.xwzsq.cn
http://15uKzy0a.xwzsq.cn
http://PUFPc6NX.xwzsq.cn
http://zCeAZZaz.xwzsq.cn
http://wtkhocK5.xwzsq.cn
http://Ojfb71uz.xwzsq.cn
http://www.dtcms.com/a/89705.html

相关文章:

  • shopify跨境电商行业前景与规模
  • 类和对象—封装
  • 【算法】动态规划:回文子串问题、两个数组的dp
  • RWEQ+集成技术在风蚀模数估算中的全流程增强策略—从数据融合到模型耦合的精细化操作指南
  • 05、Tools
  • OSI模型_TCP/IP模型_五层模型
  • Thales靶场
  • Netty源码—6.ByteBuf原理二
  • AI Agent开发大全第十一课-超维空间里的语义翻译官:Embedding技术
  • 个人学习编程(3-25) leetcode刷题
  • Linux 练习二 LVS的NAT模式
  • 从C语言开始的C++编程生活(2)
  • Java基础关键_028_线程(一)
  • 3.24前端模拟面试
  • C语言基础系列【28】指针进阶1:深入理解指针
  • go test相关命令
  • 医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)
  • Tomcat相关的面试题
  • T113-S3-启动报错tee_readfdt:433finenode/firmware/opteefailedwith FDT_ERR_NOTFOUND
  • SpringBoot分布式项目中MyBatis实战技巧:从配置到性能优化
  • 3、孪生网络/连体网络(Siamese Network)
  • 将 PDF 转换为 Word — 固定布局 vs 重排布局?
  • 团体协作项目总结Git
  • 23种设计模式-备忘录(Memento)设计模式
  • ubuntu解决蓝牙耳机已连接,但没有声音
  • docker安装flink
  • OpenCV 基础全方位剖析:夯实计算机视觉开发根基
  • Idea中诡异的文件编码问题: 设置fileCodeing为UTF8但不生效
  • R 基础语法
  • 六十天Linux从0到项目搭建(第五天)(file、bash 和 shell 的区别、目录权限、默认权限umask、粘滞位、使用系统自带的包管理工具)