先上题目:

Find Numbers

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 26    Accepted Submission(s): 20
Special Judge

Problem Description
给n个非负整数,满足对于某正整数k,n=2^k-1。从中选出(n+1)/2个数,使得它们的和是(n+1)/2的倍数。
 
Input
第一行,T,询问个数。
下面2T行,每两行是一个询问。对于每两行:
第一行,n。
第二行,n个整数,a_0, a_1, ..., a_{n-1}。

数据范围:
1<=T<=20
1<=n<=2^15
0<=a_i<=10^9

 
Output
对第i个(1<=i<=T)询问的回答为两行,第一行为编号:
Case #i:
第二行为结果:
如果不能选出这样的(n+1)/2个数,输出-1;
否则输出一行,用一个空格分隔的(n+1)/2个数b_0, b_1, ..., b_{(n+1)/2-1}。满足0<=b_i<n, b_i两两不同,且sum(a_{b_i})是(n+1)/2的倍数。如果有多解,输出任意一个。
 
Sample Input
2
3
1 3 5
7
0 1 2 3 4 5 6
 
Sample Output
Case #1:
0 2
Case #2:
0 2 4 6
 
Source
 
  中文题意不解释,做法读入所有数字以后保存它们以及它们的下标,然后按照数字大小排序(这里没有看百度放出来的题解,不知道是不是一定要排序,反正我觉得排下序应该也没事),然后枚举数字选(n+1)/2个,如果符合条件就打印,否则继续枚举,知道无法枚举就输出-1。
  上面说的方法很暴力,但还是过了,一开始觉得是不是数据太水了,然后想了一下觉得有可能不是,虽然还没有完全想明白,但是我觉得可能与题目中几个信息点有关:①目标状态是(n+1)/2的倍数,同时要知道n=2^k-1,也就是说结果是二的次幂的倍数。②感觉输出-1的情况可能很少,或者甚至不会出现,自己想找一组可以输出-1的数据的时候发现好像挺难找的。
  总的来说这一题还没有完全弄懂,虽然过了→_→,等有题解的时候去看看。
 
上代码:
 
 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <utility>
#define MAX 32770
#define LL long long
using namespace std; typedef pair<int,LL> pii; pii s[MAX];
int n,e;
LL f;
stack<int> st; bool dfs(int c){
if(!e){
if(f%((n+)/)==) return ;
return ;
}
for(int i=c;i<n;i++){
st.push(s[i].first);
f+=s[i].second;
e--;
if(dfs(i+)) return ;
st.pop();
f-=s[i].second;
e++;
}
return ;
} int main()
{
int t;
//freopen("data.txt","r",stdin);
scanf("%d",&t);
for(int z=;z<=t;z++){
scanf("%d",&n);
e = (n+)>>;
for(int i=;i<n;i++){
scanf("%I64d",&s[i].second);
s[i].first=i;
}
sort(s,s+n);
while(!st.empty()) st.pop();
f=;
printf("Case #%d:\n",z);
if(!dfs()) printf("-1");
else for(int i=;!st.empty();i++){
if(i) putchar(' ');
printf("%d",st.top());
st.pop();
}
putchar('\n');
}
return ;
}

1001

 

百度之星2014复赛 - 1001 - Find Numbers的更多相关文章

  1. 【百度之星2014~复赛 解题报告~正解】The Query on the Tree

    声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站 ...

  2. 【百度之星2014~复赛)解题报告】The Query on the Tree

    声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站 ...

  3. 百度之星2014复赛 - 1002 - The Query on the Tree

    先上题目: The Query on the Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  4. 【百度之星2014~初赛(第二轮)解题报告】Chess

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载.可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

  5. 【百度之星2014~初赛(第二轮)解题报告】JZP Set

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

  6. 百度之星初赛2A 1001 ALL X(HDU 5690)

    All X Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  7. [百度之星2014资格赛] Disk Schedule 报告

    Disk Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  8. 百度之星2014初赛 - 1002 - Grids

    先上题目: Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  9. 百度之星2014资格赛 1003 - Xor Sum

    先上代码: Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)T ...

随机推荐

  1. Androlid入门之文件系统操作(三)文件读写

         import java.io.*; import android.app.Activity; import android.os.Bundle; import android.view.Vi ...

  2. bzoj4241 历史研究——分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4241 就是分块,预处理出从第 i 块到 j 位置的答案,以及从第 i 块到最后位置间每个数出 ...

  3. PCB 无需解压,直接读取Genesis TGZ指定文件 实现方法

    通过无需解压读取ZIP压缩包的方法,寻思者如何可以不解压直接读Genesis TGZ文件内容, 通过查找资料,原来可以通过:SharpCompress.dll工具实现此需求,此工具如此NB 一.Sha ...

  4. Django day06 模版层(一) 变量和深度查询

    一.模版语法之变量:  1  - {{ 变量 }} ******重要*******{#这个相当于print了该变量#} def index(request): name = 'prince' #字符串 ...

  5. Asp.net跨域配置

    <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...

  6. Java.Cas4.0客户端接入配置

    1.本示例中使用cas4.0+cas-client-core3.4版本,ide则是myeclipse2014 blue版本,mvn使用3.9版本 2.注意事项:请先实现破解cas-client-cor ...

  7. BZOJ 4808 二分图最大独立集

    思路: 棋盘是个二分图 那就把一个可以走的白点  向所有可以走的黑点连边 跑一个最大匹配   (匹配上了就代表这两个点不能共存) 最大独立集=sum-最大匹配 //By SiriusRen #incl ...

  8. Python之first script

    1 A first script 1) script1.py - imports a Python module (libraries of additional tools) to fetch th ...

  9. JSP_内置对象_out

    out对象是JspWriter类的实例,是向客户端输出内容的常用对象,常用方法如下: void println() 向客户端打印字符串 void clear() 清除缓冲区的内容,如果在flush之后 ...

  10. Generics of a Higher Kind

    http://adriaanm.github.io/files/higher.pdf https://www.atlassian.com/blog/archives/scala-types-of-a- ...