@994495jj
2017-05-31T11:45:42.000000Z
字数 3952
阅读 1440
(ACM)动态规划 (ACM)数学----博弈论 (ACM)二分 (ACM)推公式
///solve 1#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=4005;int a[N],d[N][N];int main() {int n;while(~scanf("%d",&n)) {///initmemset(d,0,sizeof(d));///solveint ans=1;for(int i=1;i<=n;++i) {scanf("%d",a+i);for(int j=0,last=0;j<i;++j) {d[i][j]=max(d[i][j],d[j][last]+1);if(a[j]==a[i]) last=j;ans=max(ans,d[i][j]);}}printf("%d\n",ans);}return 0;}
///solve 2#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlconst int N=4005;int a[N],b[N],res[N][N][2];int main() {int n;while(~scanf("%d",&n)) {///initmemset(res,0,sizeof(res));///readfor(int i=1;i<=n;++i) {scanf("%d",a+i);b[i]=a[i];}///sortsort(a+1,a+1+n);///int ans=1;a[n+1]=a[n]+1;a[0]=a[1];int now=0;for(int i=1;i<=n+1;++i) {if(a[i]==a[i-1]) ++now;else {ans=max(ans,now);now=1;}}///get aint m=0;a[++m]=a[1];for(int i=2;i<=n;++i) {if(a[i]!=a[i-1]) a[++m]=a[i];}///solvefor(int i=1;i<=n;++i) {int p=lower_bound(a+1,a+1+m,b[i])-a;for(int j=1;j<=m;++j) {if(j==p) continue;if(res[p][j][0]==res[p][j][1]) ++res[p][j][0];if(res[j][p][1]==res[j][p][0]-1) ++res[j][p][1];}}for(int i=1;i<=m;++i) {for(int j=1;j<=m;++j) {ans=max(ans,res[i][j][0]+res[i][j][1]);}}printf("%d\n",ans);}return 0;}
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlll n,x,y,c;ll ca(ll x,ll y,ll mid) {ll t=mid-x+1;if(t<0) t=0;ll ans=-t*t;t=mid-n-x+y;if(t<0) t=0;ans=ans+(1+t)*t/2;return ans;}ll calc(ll mid) {ll ans=1+mid*(1+mid)*2;ans=ans+ca(x,y,mid);ans=ans+ca(y,n+1-x,mid);ans=ans+ca(n+1-y,x,mid);ans=ans+ca(n+1-x,n+1-y,mid);return ans;}bool check(ll mid) {return calc(mid)>=c;}int main() {while(~scanf("%I64d%I64d%I64d%I64d",&n,&x,&y,&c)) {ll l=0,r=3e9,ans=0;while(l<=r) {ll mid=(l+r)>>1;if(check(mid)) {ans=mid;r=mid-1;} else {l=mid+1;}}printf("%I64d\n",ans);}return 0;}
#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <set>#include <map>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> pii;typedef pair<ll,ll> pll;#define mp make_pair#define pb push_back#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define de(x) cout << #x << "=" << x << endlint sg(ll x) {if(0<=x&&x<=3) return 0;if(4<=x&&x<=15) return 1;if(16<=x&&x<=81) return 2;if(82<=x&&x<=6723) return 0;if(6724<=x&&x<=50625) return 3;if(50626<=x&&x<=2562991875) return 1;return 2;}int main() {int n;while(~scanf("%d",&n)) {ll ans=0;for(int i=1;i<=n;++i) {ll x;scanf("%I64d",&x);ans^=sg(x);}if(ans) puts("Furlo");else puts("Rublo");}return 0;}