首页 > 其他分享 >cfRound935div3--DEFG题解

cfRound935div3--DEFG题解

时间:2024-03-21 22:45:15浏览次数:32  
标签:题意 -- 题解 int DEFG cnt1 cnt0 pl

ps:这场因为精神状态不佳,又C题题意有点绕,卡题了,头晕找不到错.最后做了两题就溜了.狠狠扣90分..

D-Seraphim the Owl

题意:

即选一个位置,使得其满足题意。而且在满足题意的基础上,要靠近中心越好,如果满足题意而且靠近中心的距离一样,那么输出前面那个.

int cnt0[300005]={0};    //要定义在外面,否则会超时....
int cnt1[300005]={0};
void solve(){           //C  细节问题..
    int n; cin>>n;
    for(int i=1;i<=n;i++){
        char x; cin>>x;
        cnt0[i]=0,cnt1[i]=0;
        if(x=='0') cnt0[i]+=cnt0[i-1]+1;        //0左--1右
        else cnt0[i]=cnt0[i-1];
        if(x=='1') cnt1[i]+=cnt1[i-1]+1;
        else cnt1[i]=cnt1[i-1];
    }
    int ans;
    double dis=INT_MAX;
    for(int i=0;i<=n;i++){
        int num1=i/2;
        if(i&1) num1++;
        int num2=(n-i)/2;
        if((n-i)&1) num2++;
        if(cnt0[i]>=num1&&cnt1[n]-cnt1[i]>=num2){
            //第二个条件是cnt1[n]-cnt[i]!! --不是cnt1[n]-cnt[i-1]
            //例如i==2,意思是在2后面插入,那么2是在左边的,不能算在右边..
            if(abs(1.0*n/2.0-i)<dis){
                ans=i;
                dis=abs(1.0*n/2.0-i);
            }
        }
    }
    cout<<ans<<endl;
}

这题的前缀和减法写错了,因为是算挡板后面的1,所以cnt[n]-cnt[i]就是i+1到n的1的个数..

D-Seraphim the Owl

题意:

做法:在[m+1,n]的区间a和b那个小就选那个,因为前面的换位置是没有意义的-可换可不换.那肯定是选小的代价。到了m以及[1-m]区间的换位置才是有意义的.这个时候只需要枚举记录[1-m]哪个位置交换代价最小即可.再加上[m+1,n]的区间的代价.

int a[200005],b[200005];
void solve(){                   //D--贪心--也可以dp
    int n,m; cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    int ans=0,minn=INT_MAX,cursum=0;
    for(int i=n;i>m;i--) ans+=min(a[i],b[i]);
    for(int i=m;i>=1;i--){
        minn=min(minn,a[i]+cursum);
        cursum+=b[i];
    }
    cout<<ans+minn<<endl;
}

E-Binary Search

题意:

做法:思维题。“意识”到就简单--和最后的pl交换位置即可,因为能成为最后的pl,那么他一定是小于等于k的.因为遇到k也是l=mid,和最后的pl进行交换位置,其他位置保持不动,不会影响到达最后的pl.

或者更容易理解的:因为同一个数组二分算法到达的位置是一样的,那可以把k放到一个不会到达的位置,再把k放到最后的pl.

int arr[200005];
void solve(){                   //E--思维-构造
    // 和最后的pl交换位置即可,因为能成为最后的pl,那么他一定是小于等于k的.因为遇到k也是l=mid,和最后的pl进行交换位置,其他位置保持不动,不会影响到达最后的pl
    int n,k,idxk;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>arr[i];
        if(arr[i]==k) idxk=i;
    }
    int l=1,r=n+1;
    while(l+1!=r){
        int mid=(l+r)/2;
        if(arr[mid]<=k) l=mid;
        else r=mid;
    }
    if(l==idxk) cout<<"0\n";
    else cout<<"1\n"<<idxk<<" "<<l<<endl;
}

F-Kirill and Mushrooms

 

标签:题意,--,题解,int,DEFG,cnt1,cnt0,pl
From: https://www.cnblogs.com/ouhq/p/18084877

相关文章

  • lc2963 统计好分割方案的数目
    给定正整数数组nums[n],将数组分割成1个或多个连续子数组,如果不存在包含了相同数字的两个子数组,则认为是一种好分割方案,求好分割方案的数目,结果对1000000007取模。1<=n<=1e5;1<=nums[i]<=1e9相同的数字只能分到同一个子数组,转化成区间合并问题。然后枚举每个可以分割的位置,选或......
  • 前端学习-html
    1基础知识1.1BS架构和CS架构CS架构是客户端/服务器,需要安装客户端,例如手机app,PC应用BS架构是浏览器/服务器,适合功能简单的开发1.2浏览器内核浏览器内核渲染前端页面(将前端代码展示出来)1.3推荐网站https://developer.mozilla.org/zh-CN/2HTML标签2.1分类(1)按照结构......
  • 学习路线与博客地图
    编程语言编程语言是连接人与计算机的桥梁,掌握一门或多门编程语言都是必不可少的技能C/C++/RustC#JavaPythonGoPHPMarkdown语法计算机科学计算机科学是探索计算机内部世界与应用的学问,有助于提升编程能力,更深入地理解计算机系统设计和优化计算机基础知识(CS101)......
  • 【公告】第九届元宇宙数字人设计大赛,报名工作现已进入尾声!
    “第九届元宇宙数字人设计大赛”报名工作现已进入尾声。特此公告,本次大赛的报名截止时间为3月31日下午5点。请各位有意向参赛的选手抓紧时间,确保在规定时间内完成报名。图片本次大赛旨在选拔和培养数字领域的优秀人才,为参赛者提供一个展示自我、交流学习的平台。请广大参赛者珍......
  • MyBatis generator配置
    MyBatisgenerator1.在mavenpom.xml中添加插件配置<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version></plugin>2.在控制台运行指......
  • Ubuntu使用gvm安装go
    建议使用非sudo用户装,方便vscode连接时go插件使用。1.若系统之前存在旧版本的go,无则跳过此步骤sudorm-rf/usr/local/gosudoapt-getremovegolangsudoapt-getremovegolang-gosudoapt-getautoremove2.到gvm的官方github页面找到安装的命令https://github.com/moo......
  • 前端基础之JavaScriptDOM和BOM
    一、JavaScript的组成JavaScript的实现包括以下3个部分:ECMAScript(核心)描述了JS的语法和基本对象文档对象模型(DOM)处理网页内容的方法和接口浏览器对象模型(BOM)与浏览器交互的方法和接口核心(Core):核心部分包括语言的基本语法、数据类型、控制结构等。这些......
  • AJAX 前端开发利器:实现网页动态更新的核心技术
    AJAXAJAX是开发者的梦想,因为你可以:在不重新加载页面的情况下更新网页在页面加载后请求来自服务器的数据在页面加载后接收来自服务器的数据在后台向服务器发送数据HTML页面<!DOCTYPEhtml><html><body><divid="demo"><h2>让AJAX更改这段文字</h2><buttontype=......
  • 前端基础之原生js事件绑定案例
    原生js事件绑定开关灯案例<script><divid="d1"class="c1bg_greenbg_red"></div><buttonid="d2">变色</button><script>letbtnEle=document.getElementById('d2')letdivEle=docum......
  • 特殊IP地址
    0.0.0.0没有IP地址主机端:DHCP分配过程中,PC用0.0.0.0表示本机;比如主机发送DHPCDiscover广播报文的源目地址和端口是0.0.0.0:68->255.255.255.255:67服务器端:0.0.0.0本机所有IPv4地址;如果主机有两个IP地址,该主机一个服务监听的地址是0.0.0.0(比如FTP服务开启监听全0地址),那么通......