BZOJ2798/POI2012 Squarks
来源:互联网 发布:网络优化工程师的公司 编辑:程序博客网 时间:2024/05/16 08:06
Task
设有n个互不相同的正整数{X1,X2,…Xn},任取两个Xi,Xj(i≠j),能算出Xi+Xj。现在所有取法共n*(n-1)/2个和,要你求出X1,X2,…Xn。
3<=n<=300, 每个正整数不超过10^8
Solution
假设原序列是单调递增的,
对于所有
现在下标有两维不好处理,就算已知了
对所有
由于1是最小的i,可以直接确定
那么现在的问题就是不知道
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#define ll long long#include<queue>#include<set>using namespace std;inline void rd(int &res){ res=0;char c; while(c=getchar(),c<48); do res=(res<<1)+(res<<3)+(c^48); while(c=getchar(),c>=48);}inline void print(ll x){ if(!x)return ; print(x/10); putchar((x%10)^48);}inline void sc(ll x){ if(x<0){x=-x;putchar('-');} print(x); if(!x)putchar('0'); putchar(' ');}const int M=305;int A[M*M/2],tot=0,n,m,B[M];struct node{ int s[M];};vector<node>ans;multiset<int>S;multiset<int>::iterator it;int main(){ int i,j,cas,a,b,k; scanf("%d",&n); m=n*(n-1)/2; for(i=1;i<=m;i++)rd(A[i]); sort(A+1,A+1+m); for(i=3;i<=n;i++){//x[2]+x[3]肯定为第3~第n个 if((A[1]+A[2]-A[i])&1)continue; if(i!=3&&A[i]==A[i-1])continue; B[1]=(A[1]+A[2]-A[i])/2; B[2]=A[1]-B[1]; B[3]=A[2]-B[1];//分别得到前三个数 if(B[2]<=B[1]||B[3]<=B[2])continue; int f=1; S.clear(); for(j=3;j<=m;j++){ if(j!=i)S.insert(A[j]); } for(j=4;j<=n;j++){// 找到第j个数 B[j]=*S.begin()-B[1]; if(B[j]<=B[j-1]){f=0;break;} for(k=1;k<j;k++){ it=S.find(B[k]+B[j]); if(it==S.end()){f=0;break;} S.erase(it); } if(!f)break; } if(!f)continue; node x; for(j=1;j<=n;j++)x.s[j]=B[j]; ans.push_back(x); } printf("%d\n",ans.size()); for(i=0;i<ans.size();i++){ for(j=1;j<=n;j++){ sc(ans[i].s[j]); } putchar('\n'); } return 0;}
0 0
- BZOJ2798/POI2012 Squarks
- BZOJ2798: [Poi2012]Bidding
- BZOJ 2797 Poi2012 Squarks
- BZOJ2797: [Poi2012]Squarks
- 2797: [Poi2012]Squarks
- BZOJ2797: [Poi2012]Squarks
- BZOJ2797: [Poi2012]Squarks
- BZOJ 2797 [Poi2012]Squarks 数学
- bzoj 2797 [Poi2012]Squarks set 数学
- BZOJ2798/POI 2012 Bidding
- bzoj-2797 Squarks
- POI2012题解
- [Poi2012]Festival
- BZOJ 2789: [Poi2012]Letters
- BZOJ2793 [Poi2012]Vouchers 调和级数
- [BZOJ 2790]POI2012 Distance
- [BZOJ 2789]POI2012 Letters
- [BZOJ 2791]POI2012 Rendezvous
- http://blog.csdn.net/zhangweiwtmdbf/article/details/52369276
- ConvertLUnicodeStringToNullTerminatedString
- 抽象工厂模式
- HDOJ 5927 Auxiliary Set【树】
- Java源码解析(3) —— Class(2)
- BZOJ2798/POI2012 Squarks
- 软件工程(一)
- 变量和函数
- Codeforces 724C 预处理
- (Leetcode)92. Reverse Linked List II ——反转单链表
- Openfiler 2.99命令行下添加Volume Group
- [bzoj3682]Phorni
- 利用Java从班级通联电子表中剔除部分指定同学之后生成新的Excel表格
- Java 8 in Action (1) -- 函数式接口