您的位置:首页 > 其它

143 - ZOJ Monthly, October 2015

2015-10-23 19:58 309 查看
A Ant

比赛的时候公式推出来了,可是取模那一块弄错了,一直wa

假设另外两条边是x,y

那么最短的路线就是len = x^2 + y^2 + n^2 + 2*x*y

这个公式分成三个部分求

s1 = sum(x^2 + y^2)

s2 = sum(n^2)

s3 = sum(2*x*y)

假设n=3

n x y

3 3 3

3 3 2

3 3 1

3 2 2

3 2 1

3 1 1

显然s2 = (n^2) * n *(n+1)/ 2

s1的公式也是简单的

对于每一个i (1 <= i <= n), i^2都有(n+1)个

s1 = (n + 1)* ( n*(n+1)*(n+2)/6 )

难点是s3,需要通过规律得到

s3 = ( n * (n+1)/2 )^ 2+ n*(n+1)*(n+2)/6

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
#define mod 1000000007
#define ll long long int
ll mul(ll a,ll n)
{
	ll s=1;
	while(n)
	{
		if(n&1) s=(s*a)%mod;
		a=(a*a)%mod;
		n>>=1;
	}
	return s;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		ll n;
		scanf("%lld",&n);
		n%=mod;
		ll s1,s2,s3;
		s1=(n+2)%mod*n%mod*(n+1)%mod*(2*n%mod+1)%mod*mul(6,mod-2)%mod;
		s2=n%mod*n%mod*n%mod*(n+1)%mod*mul(2,mod-2)%mod;
		s3=n%mod*n%mod*(n+1)%mod*(n+1)%mod*mul(4,mod-2)%mod;
		ll ans=(s1+s2+s3)%mod;
//		cout<<s1<<" "<<s2<<" "<<s3<<endl;
		printf("%lld\n",ans);
	}
	return 0;
}


B Birthday Gift

C Cake

最大的p[ i ].b都是Bob拿走的

先按p[ i ].b从大到小排序

dp的转移方程式是

dp[ i ][ j ] = max ( dp[ i-1 ][ j ] , dp[ i-1 ][ j-1 ] + p[ i ].a)

i:前i个 j:Alice取了j个

j <= i/2

<span style="font-size:14px;">#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int dp[805][805];
struct node
{
	int a,b;
	friend bool operator < (const node n1,const node n2)
	{
		return n1.b>n2.b;
	}
}p[805];
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d",&p[i].a,&p[i].b);
		}
		memset(dp,0,sizeof(dp));
		sort(p+1,p+1+n);
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=i/2;j++)
			{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]+p[i].a);
			}
		}
		printf("%d\n",dp
[n/2]);
	}
	return 0;
} </span>


D Suika's Chain

E Two Ellipses

F Number Game

G Gene Cluster

H Market

I Prime Query

J Coins

K Bob wants to pour water

L Semantic Version
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: