Anthony 手中有 nnn 个依次标着整数 a1" role="presentation" style="position: relative;">a1a1a_1, a2a2a_2, ⋯⋯\cdots, anana_n (0≤a1≤a2≤⋯≤an≤630≤a1≤a2≤⋯≤an≤630 \leq a_1 \leq a_2 \leq \cdots \leq a_n \leq 63) 的球,现在 Ben 会等概率随机抽出一个球,记录球上的数字并放回,重复该过程三次,最终三次记录下的数字的异或和就是 Ben 的得分。

经过非常非常多次游戏之后,Ben 分析出了得分的概率分布情况,你需要根据这个概率分布情况推测出 Anthony 手中的 nnn 个球上的数字,或者指出 Ben 的记录有误。

输入格式

第一行包含一个正整数 T" role="presentation" style="position: relative;">TTT,表示有 TTT 组测试数据。

接下来依次描述 T" role="presentation" style="position: relative;">TTT 组测试数据。对于每组测试数据:

第一行包含一个正整数 nnn,表示 Anthony 手中球的数量。

第二行包含 64" role="presentation" style="position: relative;">646464 个整数 p0,p1,⋯,p63p0,p1,⋯,p63p_0, p_1, \cdots, p_{63},其中 pipip_i 表示 Ben 的得分为 iii 的概率乘以 n3" role="presentation" style="position: relative;">n3n3n^3 后的值,可以证明这个数字一定是一个整数。

保证 1≤T≤50001≤T≤5000 1 \leq T \leq 5000, 1≤n≤501≤n≤501 \leq n \leq 50, 0≤pi≤n30≤pi≤n30 \leq p_i \leq n^3 (i=0,1,⋯,63i=0,1,⋯,63i = 0, 1, \cdots, 63)。

输出格式

对于每组测试数据,如果 Ben 的记录有误,输出一行信息"Case #x: -1"(不含引号),其中x表示这是第x组测试数据;如果 Ben 的记录正确,输出一行信息 "Case #x: a1 a2 ... an"(不含引号),相邻的两个数中间用一个空格隔开。如果有多组解,输出任意一组解均可。

样例输入

2
3 4
3 2 2 3
2 2 3 2
1 1 1 1
3 3
-1 -1 -1
-1 -1 -1
-1 -1 -1
样例输出

Case #1: 22
Case #2: -7

fwt直接pow(1.0/3)就行。
注意特判各种情况。

#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \For(j,m-1) cout<<a[i][j]<<' ';\cout<<a[i][m]<<endl; \}
#pragma comment(linker, "/STACK:102400000,102400000")
#define All(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{int x=0,f=1; char ch=getchar();while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}return x*f;
}
bool fwt (ll a[] , int n ,bool on) {for ( int d = 1 ; d < n ; d <<= 1 ) {for ( int k = d << 1 , i = 0 ; i < n ; i += k ) {for ( int j = 0 ; j < d ; ++ j ) {ll x = a[i + j] , y = a[i + j + d] ;if(on){//xora[i + j] = ( x + y ) ;a[i + j + d] = ( x - y );}else{//xorif((x&1)!=(y&1)) return 0;a[i + j] = ( x + y ) /2 ;a[i + j + d] = ( x - y) /2 ;}}}}return 1;
}
#define MAXN (500)
ll a[MAXN];
int main()
{
//  freopen("C.in","r",stdin);
//  freopen(".out","w",stdout);int T=read();For(kcase,T) {int n=read(),tot=0;Rep(i,64) a[i]=read(),tot+=a[i];printf("Case #%d:",kcase);if(tot%(n*n*n)){puts(" -1");continue;}fwt(a,64,1);bool fl=0;Rep(i,64) {double t=max(-a[i],a[i]);t=pow(t,1.0/3);t=floor(t+0.5);ll c=t;if(a[i]<0) c=-c;if(c*c*c!=a[i]){fl=1;}else a[i]=c;}if(fl){puts(" -1");continue;}fl=fwt(a,64,0);tot=0;Rep(i,64) tot+=a[i];Rep(i,64) if(a[i]<0) fl=0;if(tot!=n||!fl) {puts(" -1");continue;}Rep(i,64) Rep(j,a[i]) printf(" %d",i);puts("");}return 0;
}

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*(抽球游戏-fwt开立方)相关推荐

  1. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 D. 白色相簿

    从某一点开始,以层次遍历的方式建树 若三点a.b.c互相连接,首先必先经过其中一点a,然后a可以拓展b.c两点,b.c两点的高度是相同的,若b(c)拓展时找到高度与之相同的点,则存在三点互相连接 // ...

  2. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛-白色相簿

    题意: 给定无向图,n个点,m条边,判断图中是否存在三元环.(n <= 1e5, m <= 3e6) 思路: 计数三元环的复杂度是mlogm,在这里1s跑不过.尝试通过bitset记录每个 ...

  3. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 B.我觉得海星

    https://nanti.jisuanke.com/t/26016 给定一个简单无向图,请你判断这个图是否海星,一个图海星当且仅当它内部存在五个互不相同的点 A,B,C,D,EA,B,C,D,E,满 ...

  4. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星

    res[i][j]:i->{x1,x2,x3...}->j 的集合的异或值 c[i][j]:i->{x1,x2,x3...}->j 的集合中元素个数 flag[i][j][k] ...

  5. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星 bitset

    B. 我觉得海星 题意: 一个无向图,判断是否含有五元环.T 组数据,n 个点. T<=100, n<=200 . tags: 一开始想 dfs,发现搞不出来.赛后听大佬们bb,原来可以 ...

  6. 【图论】计蒜客商汤在线编程挑战赛 D题 白色相簿

    给定一个无向图,找出图中有没有三元环 我采用的的是如下一种做法,随便找一个点作为根节点,bfs生成一棵树,同时保存每个节点的深度,如果某点的子节点已经拥有了深度,则判断这个深度是否与该点的深度相等,不 ...

  7. 格灵深瞳发起 AI · 爱 算法 在线编程挑战赛

    点击我爱计算机视觉标星,更快获取CVML新技术 DEEP SEA FISH 编 程 高 手 集 结 令 一 决 高 下 你热爱编程,喜欢AI么?如果你的答案是Yes,这里有一场绝不可错过的在线编程挑战 ...

  8. 天池 在线编程 卡牌游戏(01背包)

    文章目录 1. 题目 2. 解题 1. 题目 你跟你的朋友在玩一个卡牌游戏,总共有 n 张牌. 每张牌的成本为 cost[i] 并且可以对对手造成 damage[i] 的伤害. 你总共有 totalM ...

  9. 天池 在线编程 回合制游戏(前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 QW 是一个回合制游戏的玩家,今天他决定去打怪. QW 在一场战斗中会碰到 n 个怪物,每个怪物有攻击力 atk[i],每回合结束时如果第 i 个怪物还活 ...

最新文章

  1. 46:八进制到十进制
  2. mysql 同机做主从
  3. 判断字符串NSString是否是整形或者浮点型
  4. redis中执行lua脚本命令
  5. Ubuntu Server安全Webserver搭建流程
  6. 官宣!多所高校,整体搬迁!
  7. Bootstrap 滚动监听插件Scrollspy 的事件
  8. 2021-2025年中国中压额定母线槽行业市场供需与战略研究报告
  9. 实战Linux Bluetooth编程 (八) Class of Device
  10. python字典forward_《Python机器学习基础教程》
  11. 二叉树中获取从根节点到某个节点的路径
  12. CDA LEVEL I分数占比解读,看懂这些,考试更容易拿分
  13. Python神经网络模型和预测
  14. c语言中各个符号的意义及作用是什么,C语言各类符号意义以及用法是什么?
  15. Fedora34/35/36 软件闪退解决
  16. MTK和Android有区别,Android系统 下一个山寨MTK的代名词
  17. 【洛谷题解】P1427 小鱼的数字游戏
  18. 如何使用Git上传本地项目到github?(mac版)
  19. 系统安装 使用VMware15安装Win7系统
  20. Swift表格Lxr

热门文章

  1. css动画-3d旋转盒子
  2. mybatis如何判断update操作是否成功
  3. python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)cmd复制文件命令使用
  4. 荣耀 MagicBook 14 2022评测 荣耀magicbook14优缺点
  5. 软件测试中的用户思维
  6. 2022081班李亚楠20220901
  7. 浅谈【CSS】渐变背景(background-image)以及基础用法
  8. burnintest激活_PassMark BurnInTest Pro v9.0.1006(拷机软件)真正注册版
  9. 【教学类-13-01】20221112《数字色块图5*7*9-A4竖版》(中大班主题《》)
  10. MybatisPlus代码生成器实现只覆盖指定文件