首页 > 其他分享 >4.6Codeforces Global Round 25

4.6Codeforces Global Round 25

时间:2024-04-07 16:26:48浏览次数:19  
标签:25 4.6 前面 int Global cin long using red

A题:Dual Trigger
题意:一个01字符串,每次只能选择俩不相邻的0,把他俩变成1(初始情况都是0)
问你最后能不能把这个全0字符串,变成所要求的那样
思路:
首先分奇偶情况,试了几种情况发现,奇数个1是不可能的
而对于偶数,也就只有一种情况是不行的:只有两个1并且最大的连续值就是2。
实现:
先把奇数给排除了,然后统计1的个数,统计最大连续1有几个
当1的个数为2,且最大连续值为2 就是NO 否则输出YES

#include<bits/stdc++.h>
using namespace std;
#define int long long
using i64 = long long;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
	int T;cin>>T;
	while(T--)
	{
		int n;cin>>n;
		string a;
		cin>>a;
		int j=0;
		int red=0,ans=0,ma=0;
		for(auto i:a)
		{
			if(i=='1')
			{
				ans++;//记录1的个数 
				red++;
				ma=max(ma,red);//记录最大连续1的个数 
			}
			else red=0;
		}
		if(ans%2==1)
		{
			cout<<"NO"<<endl;
			continue;
		}
		if(ans==2&&ma==2)
		{
			cout<<"NO"<<endl;
		}
		else
		{
			cout<<"YES"<<endl;
		}
		
	

	}

    return 0;
}

B题:Battle Cows
**题意:一堆数字,从左到右,相邻依次比较,大的晋级,和下一个比较。
你的奶牛是第k个,问:你这个奶牛最多能赢多少次?
(你有一次和别人换地方的机会,也可以不换)
分析:
抓住导致情况不同的本质几点,比如本题就是“比他大的”、“前面的比他大的”(前面如果有比他大的,他只能是0)
然后大致分个类:(只能初步规划出两个类,第三个类是在进一步实践中发现的)
1、前面没有比他大的,
2、前面有好多个(先想你很容易就能想到的,再想你没太注意的(这个直接列举多猜猜就是))
3、因为你算前面有多个的时候,你是用t0-t1 但是如果前面只有一个,没有t1 你自然会想到卡在12中间
实现:
1、先存进入一个数组里,然后再循环把每个比他大的,的下标,都存进另外一个数组(你要的是前后关系,你不需要知道比他大多少)(我以为这个地方俩循环会超时呢....毕竟那么多次询问呢,看来是我想多了)
2、然后看吧,三种情况
a.前面没有比他大的—————直接把这个k移动到第一个位置
b.前面有好多个比他大的————max(和第一个交换,和第一个比他大的交换)
c.前面一个后面几个————max(和一个交换,和第一个比他大的交换(这个时候,是k到t0的距离,而上面是t0到t1的距离))
关于思维题:
方法才是最重要的,方法想的不够好,你无法清晰的透过方法看到结果,实现的时候就慢慢吞吞,出现问题不断调试,最后把好多STL技巧都搬上了还是没调出来,这时候应该跳出来,看看方法。
方法想的尽量完全和清晰(做不到特别完整没关系,在初步实践中改正即可)
脑子学会和手学会还是有很大差距的,脑子学会,输入分类理解一遍就好了。
手学会,别无他法,唯有重复以上,不断输入输出

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;
#define int long long

void solve() {
    int n,k;cin>>n>>k;//n个数字  第k个数字 
    vector<int> a(n+1),t;
    for(int i=1;i<=n;i++) {
        cin>>a[i];//存入a数组 
    }

    for(int i=1;i<=n;i++) {
        if(a[i]>a[k]) t.push_back(i);//大于第k的,就存进去(存的是下标) 
    }
    if(t.empty()){
        cout<<n-1<<"\n";//如果t为空,整个数组里没有比第k个大的 
        return;
    }
    if(t.size()==1){//如果只有一个比他大的 
        if(t[0]>k) cout<<t[0]-2<<"\n";
        else{
            cout<<max(t[0]-2,k-t[0]-1+(t[0]!=1))<<"\n";
        }
        return;
    }
    if(t[0]>k){//前面没有比他大的(那就把第k个移动到第一个) 
        cout<<t[0]-2<<"\n";
    }else if(t[1]<k){//前面有好几个大的 
        cout<<max(t[0]-2,t[1]-t[0]-1+(t[0]!=1))<<"\n";
    }else{//这是卡在第一个和第二个之间对吧? 
        cout<<max(t[0]-2,k-t[0]-1+(t[0]!=1))<<"\n";
    }

}

signed main() {
    std::ios::sync_with_stdio(false), std::cin.tie(nullptr);
    int t = 1;std::cin >> t;
    while (t--) solve();
    return 0;
}

标签:25,4.6,前面,int,Global,cin,long,using,red
From: https://www.cnblogs.com/yzzyang/p/18119293

相关文章

  • Nginx 1.25.4 编译安装
    Nginx1.25.4源码编译安装最新长期技术支持版本 nginx-1.25.4,官方下载源码包: https://nginx.org/download/nginx-1.25.4.tar.gz一键安装脚本不啰嗦,脚本简单快速编译安装#!/bin/bash#安装相关包yum-yinstallgccpcre-developenssl-develzlib-develmakewget#......
  • 2024清明节北斗课堂总结(4.4---4.6)
    背景通过学校老师的指引,我在清明节仅仅3天的假期内,上了长达18个小时的课程。课程虽然有一点点的累,但还是学到真本事的。Day1第一天,介绍是说上数据结构。本来我是认为会先将想栈、队列、链表等简单并可以用STL的数据结构,但一上来,就讲了树。另附:给我们讲课的是mrsrz。树的......
  • Impala Daemon无法启动问题记录(25000端口被占用)
    前言:集群主节点根目录内存快爆了,开始清理主节点内存重启组件,发现Kerberos认证的角色用户都过期了,又重新生成了一下角色,在启动impala组件过程中,其中一个ImpalaDaemon组件启动失败。集群版本:CDH6.3.2+CM6.3.1查看ImpalaDaemon启动报错日志上午11点22:12.422分INFOja......
  • 2024.4.6 组合数学补题
    CF128CGameswithRectangle个人认为突破点是“严格包含”,一开始没注意严格不知道怎么处理。严格的话就是横竖分别在若干条边中,分别选出2k条边。横竖互不影响可以乘法原理,只考虑一个方向即可。#include<iostream>#include<cstdio>#include<algorithm>#definemaxn10000......
  • P2542 [AHOI2005] 航线规划
    P2542[AHOI2005]航线规划trick+树剖首先删边操作困难,考虑倒序处理。发现题目中的关键性质:无论航线如何被破坏,任意时刻任意两个星球都能够相互到达。在整个数据中,任意两个星球之间最多只可能存在一条直接的航线。这说明无论何时图都是连通的,那么我们完全可以建一棵树,再考虑加......
  • 2024.4.6练习笔记
    浙江理工大学2024年程序设计竞赛(同步赛)Fleetcode题目要求:求出一个序列中对于每个位置\(i\),以\(i\)为起点第一个\(\text{leetcode}\)子序列的终止位置。需要注意的是不要求子序列连续。不存在则答案为零。容易想到双指针,但是会TLE,考虑一些优化。扫描序列,字母是属于......
  • 17天【代码随想录算法训练营34期】第六章 二叉树part04(● 110.平衡二叉树 ● 257.
    110.平衡二叉树#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defgetDepth(self,root):......
  • ubuntu20.04.6将虚拟机用户目录映射为磁盘Z
    文章目录linux虚拟机设置为NAT模式安装sshd服务映射目录到windows磁盘安装samba套件修改配置文件smb.conf重启smbd并设置用户名和密码windows映射遇到的问题1、设置好之后映射不成功2、smbd下载失败3、smbd密码配置问题4、当有改动时候,最好重启一下smbd服务linux虚......
  • 4.6
    其实有很多想写的,但是很多都忘了()()()如果有能实时记录文字的东西就好了昨天看了个番,然后发现自己的处境和女主差不多,只不过女主太有天赋了,是我比不上的,然后后面就是经典剧情:互相救赎,当时我就想:互相救赎吗,好像很有趣啊,然后就破防了然后晚上在床上大概搞懂了自己现在这个样子是怎么样......
  • 20211325高进涛加密API研究
    密码引擎-加密API研究 Content任务详情0.研究学习原始文档CryptoAPIPKCS#11GM/T0016-2012智能密码钥匙密码应用接口规范GM/T0018-2012密码设备应用接口规范1.总结这些API在编程中的使用方式CryptoAPIPKCS#11SKF2.列出这些API包含的函数,进行分类,并总结它......