URAL 2011. Long Statement题解

传送门



题意:有N个为1或2或3的数,问用这N个数的排列方式是不是有6中以上。



思路:降智题,显然六个数以上无论这六个数是怎么组成,只要有两种数字就一定能组成6种,5种及以下我就懒得找规律了,直接全排列统计。



AC程序

using namespace std;
const int maxn=105;
int a[maxn],n,ans;
set<int> se;
map<string,bool> ma;
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        se.insert(a[i]);
    }
    if(n>=6)
    {
        if(se.size()>=2)
        {
            cout<<"Yes"<<endl;
            return 0;
        }
        else
        {
            cout<<"No"<<endl;
            return 0;
        }
    }
    sort(a,a+n);
    do
    {
        string s="";
        for(int i=0;i<n;i++)
        {
            s=s+char(a[i]+'0');
        }
        if(!ma[s])
        {
            ans++;
            ma[s]=1;
        }
    }while(next_permutation(a,a+n));
    if(ans>=6)
    cout<<"Yes"<<endl;
    else
    cout<<"No"<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/NightRaven/p/9463052.html

时间: 2024-10-20 06:26:41

URAL 2011. Long Statement题解的相关文章

Timus 2011. Long Statement 排列组合的运用

Nikita, a schoolboy, is currently taking part in one of programming contests. He is really upset because all the problem statements are so long and unclear. So he took the statement of the first problem and cut it into pieces in such a way that each

poj 2352 &amp; Ural 1028 数星星 题解

一道水题,由于x坐标递增y坐标也递增于是前缀和统计即可,用树状数组实现. #include<bits/stdc++.h> using namespace std; const int maxn=15010; const int maxx=32010; inline long long read(){ long long x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar();

BZOJ2453: 维护队列

2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 183  Solved: 89[Submit][Status] Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A有时候会依据个人喜好,替换队列中某个弹珠的颜色.但是A还没有学过编程,且觉得头脑风暴太浪费脑力了,所以向你来寻求帮助. Inp

(提交音频太快导致崩溃)应该是SubmitSourceBuffer允许的最大buffer值XAUDIO2_MAX_QUEUED_BUFFERS的限制

使用IAudio2SourceVoice->SubmitSourceBuffer来提交音频数据,会有一个数据队列,可以使用XAUDIO2_VOICE_STATE来获取状态,可以看到当前待播放的等待队列中还有多少Buff,提交音频数据过快的话,会导致程序崩溃,应该是因为下面的buffer最大值限制: // Numeric boundary values #define XAUDIO2_MAX_BUFFER_BYTES        0x80000000    // Maximum bytes al

线段树详解 (原理,实现与应用)

线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点. 线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)). 线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为 少量特定的子区

NOIP 2011 Day 1 部分题解 (Prob#1 and Prob#2)

Problem 1: 铺地毯 乍一看吓cry,地毯覆盖...好像是2-dims 线段树,刚开头就这么难,再一看,只要求求出一个点,果断水题,模拟即可.(注意从标号大的往小的枚举,只要有一块地毯符合要求就输出,返回.) (全篇未完结,代码就不发了.) Problem 2: 选择客栈 模拟果断会超时,所以用类似动态规划的方法. 用$\text{sum}\left[ i\right]$表示从一号客栈到i号客栈途中的符合要求的Café总数,自然,$\text{O}\left( n\right)$的时间复

NWERC 2011 ABCDEH 题解

A:SPOJ NWERC11A A - Binomial coefficients 题解:点击打开链接 B: 点击打开链接 Bird tree 从下到上发现是个gcd的过程(辗转相除 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { int T; scanf("%d", &T); while (T--) { i

PA 2011 Round 3 prz题解

题目大意,现在要走过一条斑马线,斑马线是由n条交替的黑条和白条构成的,第一条是黑条.脚的长度是s.要求在走的过程中,他脚的任何一部分都不能碰到象征邪恶的黑条.第一条之前和第n条之后的部分都是白色的,可以任意选择第一条之前的位置出发.但出发位置一旦选定,之后每一步的长度都必须是k.请你判断有没有可能在不碰到黑条的情况下通过斑马线,即走到第n条之后. 此题同样是模拟赛题!!! 我现在已经非常质疑自己的智商了,为什么每次都是离正解只差一步呢,每次都不能换一个思路去想一想. 先说说我的错误解法:我列了n

URAL 1881 Long problem statement

1881. Long problem statement Time limit: 0.5 secondMemory limit: 64 MB While Fedya was writing the statement of the problem GOV Chronicles, he realized that there might be not enough paper to print the statements. He also discovered that his text edi