首页 > 其他分享 >Codeforces Round 900 (Div

Codeforces Round 900 (Div

时间:2024-02-27 16:34:47浏览次数:27  
标签:900 int cin long Codeforces -- while Div 翻转

Codeforces Round 900 (Div. 3)

A. How Much Does Daytona Cost?

这个题简单,在子段上最常见的元素其实只要这个元素出现就行

    int t;
	cin>>t;
	int n,k;
	while(t--)
	{
		cin>>n>>k;
		int arr[n];
		int out=0;
		for(int i=0;i<n;i++)
		{
			cin>>arr[i];
		}
		for(int i=0;i<n;i++)
		{
			if(arr[i]==k)
			{
				out=1;
				break;
			}
		}
		if(out==1)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}

B. Aleksa and Stack

我最开始把a0=1,a1=2然后依次递推进行输出,递推中让i=1进行除法因为a[i+2]是整数,所以将(a[i]+a[i+1])++,使其能够得到一个整数a[i+2]并且a[i+2]和a[i]+a[i+1]的和由于递增的原因不会整除;后来交答案才发现可以直接构造一个2×i-1的奇数序列a[i]+a[i+1]为偶,3×a[i+2]为奇数,故不能整除;

long long t;
	scanf("%lld",&t);
	long long n;		
	while(t--)
	{
		scanf("%lld",&n);
		for(long long i=1;i<n;i++)
		{
			printf("%lld ",2*i-1);
		}
		printf("%lld\n",2*n-1);
	}

C. Vasilije in Cacak

这个题主要是分析x是否在原序列所形成的最小总和和最大总和之间,其中minsum,maxsum直接用等差数列求和公式就行

long long t;
	cin>>t;
	long long n,k,x;
	long long maxsum,minsum;
	while(t--)
	{
		cin>>n>>k>>x;
		maxsum=(2*n-k+1)*k/2;
		minsum=(1+k)*k/2;
		if(maxsum<x||minsum>x)cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
	}

D. Reverse Madness

这个题思路很简单,就是在字符串两端点内会进行翻转,我们只需利用前缀和就能记录其翻转的次数,然后翻转次数为偶数就不用管,奇数就进行翻转,但是就是这个数据它下标的原因就不好处理,后面想到了将s=“ ”+s来更换下标。(由于查找效率过慢,手写了二分查找,后面才晓得可以直接upper_bound)

	int t;
	scanf("%d", &t);
	while (t--)
	{
	    int n, k; 
	    cin >> n >> k;
	    string s;
	    cin >> s;
	    s = " " + s;
	    vector<int> l(k + 1), r(k + 1);
	    for (int i = 1; i <= k; i++)
	        scanf("%d",&l[i]);
	    for (int i = 1; i <= k; i++)
	        scanf("%d",&r[i]);
	    int q;
	    scanf("%d",&q);
	    vector<int> cnt(n + 1, 0);
	    for (int i = 1; i <= q; i++)
	    {
	        int x;
	        scanf("%d",&x);
	        int pos = upper_bound(l.begin() + 1, l.end(), x) - l.begin() - 1; // 找到第一个大于他的数再前面一个就是他所在的区间
	        int temp = min(x, l[pos] + r[pos] - x);
	        cnt[temp]++; // 记录每个位置被翻转的次数
	    }
	    for (int i = 1; i <= k; i++)
	    {
	        int mid = (l[i] + r[i])/2;
	        int sum = 0;
	        for (int j = l[i]; j <= mid; j++)
	        {
	            sum += cnt[j];
	            if (sum %2 == 1)
	                swap(s[j], s[l[i] + r[i] - j]);
	        }
	    }
	    // cout << s << endl;有空格
	    for (int i = 1; i <= n; i++)
	       printf("%c",s[i]);
	    cout << endl;
	}

E. Iva & Pav

涉及位运算还没学后面补T____T

标签:900,int,cin,long,Codeforces,--,while,Div,翻转
From: https://www.cnblogs.com/godcy/p/18037155

相关文章

  • Codeforces Round 888 (Div
    CodeforcesRound888(Div.3)A.EscalatorConversations推导即可,判断条件就是abs(h[i]-H)%k==0&&abs(h[i]-H)/k<m&&h[i]!=H,先要整除再能相隔abs(h[i]-H)/k个台阶谁高谁矮任意不影响,但是最后这个我就没注意到h[i]!=H小卡一会。#include<bits/stdc++.h>usingnamespacestd;......
  • Codeforces 1906L Palindromic Parentheses
    考虑先判定有无解对应的\(k\)的范围。首先若\(k=n\)一定无解,因为字符串开头是\(\texttt{(}\)结尾是\(\texttt{)}\)匹配不上。下界因为各有\(\frac{n}{2}\)个\(\texttt{()}\),所以可以先猜测下界就为\(\frac{n}{2}\)。考虑构造到这个下界。能发现只需要形如\(\te......
  • 如何计算两个正太分布的KL散度 —— 正太分布的KL散度 (Kullback-Leibler divergence)
    参考:https://blog.csdn.net/int_main_Roland/article/details/124650909给出实现代码:defget_kl():mean0,log_std0,std0=policy_net(Variable(states))mean1=Variable(mean0.data)log_std1=Variable(log_std0.data)std1......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    Preface开学了没时间组队训练就抽空把之前欠下的CF补一补这场当时玩《拔作岛》上头了忘记有比赛了,等想起来的时候已经快结束了就没现场打赛后补题发现A~E都很简单,F的话一个地方没太想清看了题解才会A.MovingChips签到,找一个极小的且包含了所有\(1\)的区间,这个区间中\(0\)......
  • Codeforces 1451F Nullify The Matrix
    因为保证了这个路径必须是向下和向右,就可以考虑每一条\(i+j=x\)的斜线上的点,因为一条路径经过的点对应的\(i+j\)一定是每次\(+1\)的。考虑到因为对于同一条直线,每个点是独立的,因为一条路径至多经过这条直线上的一个点。于是可以考虑用\(\text{Nim}\)的思想把这条......
  • CF1923 Educational Codeforces Round 162 (Rated for Div. 2)
    C.FindB给出一个数组A,对于q个询问,每个询问给出[l,r],对于A的子数组[l,r],问是否存在一个相同大小的数组B,使得两个数组的和相同,且任意相同下标的元素不同?Solution:A中任意一个大于1的元素,可以把他变成1,多余的那部分给到其他位置的元素上(如最后一个)对于等于1的元素,把......
  • CF1932 Codeforces Round 927 (Div. 3)
    E.FinalCountdown我愿称之为今年最傻逼的一次,思路很快想出来了,但是实现一直搞不对观察发现答案是n的所有前i位数相加(如12345,那么ans=12345+1234+123+12+1)要证明的话就是按照题目的Note那样算,(以12345为例,ans=(12345-1234-123-12-1)+21234+2123+212+21)然后傻逼的事情......
  • 2024 蓝桥杯模拟赛3(div1+div2)
    P8834[传智杯#3决赛]序列\(O(N^2)\)枚举defread():returnmap(int,input().split())n,k=read()a=list(read())res=0foriinrange(n):forjinrange(i):ifa[i]*a[j]<=k:res+=1print(res)P8780[蓝桥杯2022省......
  • 2024 蓝桥杯模拟赛3(div1+div2)
    题目A.暴力枚举#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=2e5+10;#defineinf0x3f3f3f3fvoidsolve(){intn,k;cin>>n>>k;vector<int>a(n+1);for(inti=1;i<=n;i++)cin>>a[i];......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    目录写在前面ABCDE写在最后写在前面比赛地址:https://codeforces.com/contest/1923。为唐氏儿的寒假带来了一个构式的结局,飞舞一个。天使骚骚不太行啊妈的,推了三条线了感觉剧情太白开水了,咖啡馆也是这个熊样子、、、A签到。显然最优的策略是不断地选择最右侧的1进行操作,每......