The power of Fibonacci
Quadratic equation
Knapsack Cryptosystem
#pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; typedef long long ll; ll a[100],S,n,c[100],sum,b[800000],ans1,ans2; map<ll,ll>mp; int main() { scanf("%d%lld",&n,&S); for(register int i=1; i<=n; ++i) { scanf("%lld",&a[i]); } int mid=n>>1; for (int i=0; i<(1<<mid); i++) { sum=0; for (int j=0; j<mid; j++) { if ((i>>j)&1) { sum+=a[mid-j]; } } if (S>=sum) { mp[S-sum]=i+1; } } int nn=n-mid; for (int i=0; i<(1<<nn); i++) { sum=0; for (int j=0; j<n-mid; j++) { if ((i>>j)&1) { sum+=a[n-j]; } } if (mp[sum]>0) { ans1=mp[sum]-1; ans2=i; break; } } for (int i=0; i<mid; i++) { if ((ans1>>i)&1) { c[mid-i]=1; } } for (int i=0; i<n-mid; i++) { if ((ans2>>i)&1) { c[n-i]=1; } } for (int i=1; i<=n; i++) { printf("%d",c[i]); } printf("\n"); }
All men are brothers
#include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; const int maxn=100100; ull c2,c4,tmp,a,b; int f[maxn],siz[maxn],n,m,kk; int get_f(int x) { return x==f[x]?x:f[x]=get_f(f[x]); } void merge1(int x,int y) { if (siz[x]>siz[y]) { f[y]=x; siz[x]+=siz[y]; } else { f[x]=y; siz[y]+=siz[x]; } } int main() { scanf("%d%d",&n,&m); for (int i=1; i<=n; i++) { siz[i]=1; f[i]=i; } c2=1ull*n*(n-1)/2; c4=1ull*n*(n-1)/2*(n-2)/3*(n-3)/4; printf("%llu\n",c4); for (int i=1; i<=m; i++) { int x,y; scanf("%d%d",&x,&y); x=get_f(x); y=get_f(y); if (n-kk<4) { printf("0\n"); continue; } if (x==y) { printf("%llu\n",c4); continue; } kk++; a=siz[y]; b=siz[x]; c2-=a*b; tmp=a*b*(c2-(a+b)*(n-a-b)); c4-=tmp; printf("%llu\n",max(0ull,c4)); merge1(x,y); } }
Symmetrical Painting