首页 > 其他分享 >D. Prefix Permutation Sums

D. Prefix Permutation Sums

时间:2024-06-17 23:44:05浏览次数:26  
标签:pre int ll Sums Prefix while flag Permutation 缺少

原题链接

题解

1.缺少一个前缀和,缺少在哪了?
如果缺少在 \(i<n\) 的地方,则会出现一个两个数之和,即缺少两个数
否则会只缺少一个数
2.两个数之和可能大于 \(n\),也可能不
3.虽然 \(a_i\) 达到了 \(1e18\) 但是 \(n \leq 2e5\) ,所以可以用数组记录出现的数

code

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

ll pre[200005] = {0};
ll vis[400005] = {0};

inline void read(ll &x) {
	x = 0;
	ll flag = 1;
	char c = getchar();
    while(c < '0' || c > '9'){
        if(c == '-') flag = -1;
        c = getchar();
    }
	while(c >= '0' && c <= '9') {
		x = (x << 3) + (x << 1) + (c ^ 48);
		c = getchar();
	}
	x *= flag;
}

inline void write(ll x) {
    if(x < 0){
    	putchar('-');
		x = -x;
	}
    if(x > 9)
		write(x / 10);
    putchar(x % 10 + '0');
}

void solve()
{
        ll n;
        read(n);

        for(int i=1;i<=2*n;i++) vis[i]=0;
        ll sum = 0;
        int flag=2;
        for(ll i = 1; i < n; i++) {
            read(pre[i]);
            if(pre[i]-pre[i-1]>n+n-1LL)
            {
                flag=0;
            }
            if(!flag) continue;
            if(++vis[pre[i] - pre[i - 1]] == 2 || pre[i] - pre[i - 1] > n) {
                flag--;
                sum = pre[i] - pre[i - 1];
            }
        }

        if(!flag)
        {
            puts("no");
            return;
        }

        if(!sum)
        {
            int cnt=0;
            for(int i=1;i<=n;i++) cnt+=(vis[i]!=0);
            if(cnt==n-1LL) puts("yes");
            else puts("no");
            return ;
        }

        ll tem = sum;
        for(ll i = 1; i <= n; i++) {
            if(!vis[i]) sum -= i;
        }
        if(!sum) puts("YES");
        else puts("NO");
}
int main()
{
    ll t;
    read(t);
    while(t--)
    {
        solve();
    }
    return 0;
}

标签:pre,int,ll,Sums,Prefix,while,flag,Permutation,缺少
From: https://www.cnblogs.com/pure4knowledge/p/18253456

相关文章

  • LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Pre
    LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefixtuing等]由于LLM参数量都是在亿级以上,少则数十亿,多则数千亿。当我们想在用特定领域的数据微调模型时,如果想要full-tuning所有模型参数,看着是不太实际,一来需要相当多的硬件设备(GPU),二来需要......
  • ACL和Prefix-list的区别
    好的,让我们来看一个例子,这个例子将彻底区分ACL和Prefix-list:假设我们有一个网络192.168.1.0/24,我们想要允许192.168.1.0/25(也就是192.168.1.0到192.168.1.127)和192.168.1.192/26(也就是192.168.1.192到192.168.1.255)的IP地址,但是不允许192.168.1.128/26(也就是192.168.1.128到192.1......
  • AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘
    AttributeError:‘ChatGLMModel‘objecthasnoattribute‘prefix_encoder‘:全面解析问题概述当您使用ChatGLM模型或相关库时遇到AttributeError:‘ChatGLMModel‘objecthasnoattribute‘prefix_encoder‘错误时,这意味着ChatGLMModel类中不存在prefix_encod......
  • LeetCode 974 Subarray Sums Divisible by K All In One
    LeetCode974SubarraySumsDivisiblebyKAllInOneLeetCode974能被K整除的子数组之和errosfunctionsubarraysDivByK(nums:number[],k:number):number{//-5/0/5letcount:number=0;//单个元素for(leti=0;i<nums.length;i++){......
  • CF1919E Counting Prefixes
    CF1919ECountingPrefixesRating:2600题目大意有一个由-1与1构成的数列\(A\)。告诉你它的前缀和升序排序的数列\(P\)。求有多少个满足方案的数列\(A\)。多组数据,其中\(A\)的长度\(n\)有。\(\sumn\leq5000\)。解题思路首先我们考虑枚举\(s=\sumA\)。我......
  • [ABC238E] Range Sums
    原题链接题解把这里的数字看成间隔,不要看成点假设已知能和\(l\)组成区间的端点集合\(A\)和以\(r\)组成区间的端点集合\(B\),这时候加入一个以\(l,r\)为左右端点的区间,那么在加入区间\(l,r\)之后,这两个集合可以合并code#include<bits/stdc++.h>usingnamespacestd......
  • Topcoder SRM592-Div1-Lv2 LittleElephantAndPermutationDiv1
    题意设\(A,B\)为两个长为\(n\(\leq50)\)的排列,定义操作\(F(A,B)=\sum\limits_{i=1}^{n}\max(A_i,B_i)\),给定\(n,k\),求有多少种有序对\((A,B)\)满足\(F(A,B)\geqk\),答案模\(10^9+7\)。思路首先还是用经典的思路将无序转为无序,我们假定\(A\)是有序的即\(A={1,2,3,......
  • Learning Latent Permutations with Gumbel-Sinkhorn Networks
    目录概SinkHornoperatorMeanG.E.,BelangerD.,LindermanC.andSnoekJ.Learninglatentpermutationswithgumbel-sinkhornnetworks.ICLR,2018.概本文提出了一种自动学习permutations的方法.SinkHornoperatorSinkHornoperator的操作流程如下:\[S^{0}(......
  • CF1089I Interval-Free Permutations
    标签:析合树析合树就是用来处理这一种值域连续段的问题的。OI-wiki上对于析合树的讲解。我们回顾一下题目,要求不存在长度为\([2,n-1]\)之间的连续段,换句话说,就是根节点下恰有\(n-1\)个节点,且没有任何一个字段是题目中要求的连续段。我们记这样的答案为\(A_n\)也就......
  • UVA11922 Permutation Transformer 题解
    题目传送门前置知识无旋treap解法与luoguP3391【模板】文艺平衡树不同的是本题翻转后需要放到整个序列的末尾。由于需要翻转后放到末尾,故无旋Treap在维护文艺平衡树的过程中合并时跳着合并即可。代码#include<bits/stdc++.h>usingnamespacestd;#definelllong......