首页 > 其他分享 >题解:P10672 【MX-S1-T1】壁垒

题解:P10672 【MX-S1-T1】壁垒

时间:2024-07-17 16:56:27浏览次数:16  
标签:ch int 题解 S1 T1 maxn include 种类 getchar

暑期集训=依托答辩。

分析

种类数是奇数一定无解。

否则每种数字先输出一次,在此过程中每增加两个数时,因为每个数字种类数都不一样,所以前缀种类数也同时增加 \(2\),保证一定为偶数。

然后输出完以后,设总种类数为 \(m\),无论以后再怎么加入新数字,前缀种类数一定为 \(m\) 不变,后面数字依次输出就行了。

Code

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#define int long long
#define V vector<char> 
using namespace std;
using namespace  __gnu_pbds;
//gp_hash_table<string,int>mp2;
//__gnu_pbds::priority_queue<int,less<int>,pairing_heap_tag> q;
inline int read()
{
	int w=1,s=0;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
	while(isdigit(ch)){s=s*10+(ch-'0');ch=getchar();}
	return w*s;
}
const int mod=998244353;
const int maxn=1e6+10;
int n,a[maxn];
int cnt[maxn];
vector<int> v;
signed main() 
{
	cin>>n;
	for(int i=1;i<=n;i++)a[i]=read();
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)
	{
		if(!cnt[a[i]])v.push_back(a[i]);
		cnt[a[i]]++;	
	}
	if(v.size()&1)return 0*printf("-1");
	for(auto i : v)
	{
		cout<<i<<' ';
		cnt[i]--;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=cnt[a[i]];j++)
		{
			cout<<a[i]<<' ';
		}
		cnt[a[i]]=0;
	}
	return 0;
}

标签:ch,int,题解,S1,T1,maxn,include,种类,getchar
From: https://www.cnblogs.com/fengyixuan2027/p/18307821

相关文章

  • 题解:AT_arc173_b [ARC173B] Make Many Triangles
    背景前几天打了比赛,崩麻了,所以来水一篇题解。LC真睿智题意给你\(n\)个点,问最多能组成几个三角形。分析听说可以随机化。这道题就是一个简单贪心。我们考虑,如果没有共线的点,那么答案显然就是\(\frac{n}{3}\)了。如果有共线,我们容易想到一个贪心思路:既然同一直线上的点不......
  • Divide Interval 题解
    背景太逊了,调了三次才调出来,所以写篇题解寄念。LC好睿智题意给你两个数\(a,b\),现在要从\(a\)跑到\(b\),每次可以将当前的\(a\)拆分成\(2^n\timesm(n,m\inN)\)的形式,并将它变成\(2^n\times(m+1)\)。问最少变几次能跑到\(b\),输出次数和每次变化前后\(a\)的值。分......
  • 题解:AT_abc352_d [ABC352D] Permutation Subsequence
    虽然比赛没打,但是想来水估值发表思路。题意给你一个\(1\simn\)的排列,让你从中找一段长为\(k\)的子序列,使得这个子序列中的元素排序后数值连续。分析题意转换一下,先用结构体存储每个元素的编号和数值,按照数值排序。于是这道题就成了:一个序列,让你求所有长\(k\)的子段中......
  • 有较复杂限制条件的dp(CF366C,POJ1837,CF294B题解+总结)
    前言这篇文章将用三道精选的好题例题让你学会这种类型的题目。题型看起来是一个背包,但是多了一个条件,是一个等式或不等式,有时候式子还挺复杂的,该怎么办呢?例题1CF366CDimaandSalad题意原题有n......
  • 洛谷P1596 [USACO10OCT] Lake Counting S 题解
    看别的神犇用的都是并查集,我还是用暴搜吧(doge下面纯暴搜#include<bits/stdc++.h>usingnamespacestd;intn,m,ans;//N行M列和答案charc[105][105];//存储农田的二维向量voiddfs(intx,inty){//暴搜 if(c[x][y+1]=='W'){ c[x][y+1]='.';//将水坑改为......
  • windows11 使用pytorch transformers运行Qwen2-0.5B-Instruct模型 (基于anaconda pyth
    吾名爱妃,性好静亦好动。好编程,常沉浸于代码之世界,思维纵横,力求逻辑之严密,算法之精妙。亦爱篮球,驰骋球场,尽享挥洒汗水之乐。且喜跑步,尤钟马拉松,长途奔袭,考验耐力与毅力,每有所进,心甚喜之。 吾以为,编程似布阵,算法如谋略,需精心筹谋,方可成就佳作。篮球乃团队之艺,协作共进,方显力......
  • CodeForces Round 898 (div 4) H题解析
     CodeForcesRound898(div4)H.Mad City                           大致思路   对于有n条边和n个点,说明这个图里面只有一个环并且两人同时开始和结束移动,所以可以得到当Valeriu进入到这个图里面的唯一......
  • 一道大「水题」 题解
    一道大水题时间限制:1000ms空间限制:256000kB题目描述[题目描述]有\(n\)个点,第\(i\)个点到第\(j\)个点有边当且仅当j是i的倍数且\(j/i\)为质数。(边是单向的)给出\(q\)组询问,每次询问从第\(1\)个点走到第\(x\)个点的方案数,对\(1e9+7\)取模。[输入格式]......
  • UNR #8 部分题题解
    由于博主水平有限,目前只有\(A,B,D\)题题解。A.最酷的排列题目描述\(T\)组数据,给定长为\(n\)的序列\(a\)和下标集合\(S\),你可以对序列进行任意次操作,每次选择一个区间并将其中元素升序排序。求\(\sum\limits_{i\inS}a_i\)的最小可能值。数据范围\(1\len,\sum......
  • 零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码
    文章目录一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结一.......