栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

The 2021 ICPC Asia Jinan Regional Contest

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

The 2021 ICPC Asia Jinan Regional Contest

目录
    • C Optimal Strategy
    • D Arithmetic Sequence
    • J Determinant
    • K Search For Mafuyu

C Optimal Strategy
  • 详解在此
#include
#define ll long long
using namespace std;

ll n, f[1000050];
ll cnt[1000050];
ll sum[1000050];

//--组合数学--
const int Cmod = 998244353;
ll fac[1000100],inv[1000100];
int power(int a,int b)
{
    int ret;
    if (b==0) return 1;
    ret=power(a,b/2);
    ret=1ll*ret*ret%Cmod;
    if (b%2)ret=1ll*ret*a%Cmod;
    return ret;
}
void pre(){
    fac[0]=1;inv[0]=1;
    for(int i=1;i<=1000000;i++)
	{
        fac[i]=1ll*fac[i-1]*i%Cmod;
        inv[i]=power(fac[i],Cmod-2);
    }
}
int C(int n,int m)
{
    if (n>n;
	int x;
	for(int i=1;i<=n;i++) cin>>x, cnt[x]++;
	for(int i=1;i<=n;i++) sum[i] = sum[i-1] + cnt[i];
	bool flag = 0;
	for(int i=1;i<=n;i++)
	{
		if(!cnt[i])
		{
			f[i] = f[i-1];
			continue;
		}
		if(!flag)
		{
			flag = 1;
			f[i] = 1;
			for(int j=2;j<=cnt[i];j++) f[i] = (f[i] * j) %Cmod;
			continue;
		}
		f[i] = f[i-1] * C(sum[i-1]+cnt[i]/2, sum[i-1]) %Cmod;
		for(int j=2;j<=cnt[i];j++) f[i] = (f[i] * j) %Cmod;
	}
	cout< 
D Arithmetic Sequence 
#include
#define ll long long
using namespace std;
const int N = 2e5+100;

ll n, a[N], b[N], ans;

__int128 check(__int128 d) {
	d -= 1e13;
	for(ll i=1; i<=n; i++) b[i] = a[i] + d * (n-i);

	nth_element(b+1, b+(n/2+1), b+1+n);
	ll haf = b[n/2+1];

	__int128 sum = 0;
	for(int i=1; i<=n; i++) {
		if(b[i] > haf)
			sum += b[i] - haf;
		else
			sum += haf - b[i];
	}
	if(ans > sum) ans = sum;
	return sum;
}
int main() {
	scanf("%lld", &n);
	for(int i=1; i<=n; i++) scanf("%lld", &a[i]);

	if(n==1) {
		printf("0");
		return 0;
	}

	ans = 5e18;
	ll l = 0, r = 2e13;
	while(l < r) {
		ll mid1 = (l*2+r)/3;
		ll mid2 = (l+r*2+2)/3;
		if(check(mid1) < check(mid2)) {
			r = mid2 - 1;
		} else l = mid1 + 1;
	}
	printf("%lld", ans);
	return 0;
}
J Determinant
#include
#define ll long long
using namespace std;

const int mod = 1e9+7;
inline ll Qpow(ll a,ll b){ll s=1;while(b){if(b&1){s=(s*a)%mod;}a=a*a%mod;b>>=1;}return s;}
inline ll Qinv(ll a){return Qpow(a,mod-2);}

string det;
ll n, a[110][110];

ll gauss()
{
	ll ans = 1;
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)
		{
			if(a[j][i])
			{
				for(int k=i;k<=n;k++) swap(a[i][k], a[j][k]);
				if(i != j) ans = -ans;
				break;
			}
		}
		if(!a[i][i]) return 0;
		ll inv = Qinv(a[i][i]);
		for(int j=i+1;j<=n;j++)
		{
			int tmp = a[j][i] * inv %mod;
			for(int k=i;k<=n;k++) a[j][k] = (a[j][k] - tmp * a[i][k] %mod + mod) %mod;
		}
		ans = (ans * a[i][i] %mod + mod) %mod;
	}
	return ans;
}
void solve()
{
	cin>>n>>det;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	}
	ll ans = gauss();
	
	ll res = 0;
	int len = det.size();
	for(int i=0;i>t;
	while(t--) solve();
}
K Search For Mafuyu
#include
using namespace std;

vector eg[110];
int vis[110], tim, n;

void dfs(int x, int far)
{
	vis[x] = ++tim;
	for(auto y:eg[x])
	{
		if(y!=far && vis[y]==0)
			dfs(y, x);
	}
	tim++;
}
void solve()
{
	cin>>n;
	int a, b;
	for(int i=1;i<=n;i++) eg[i].clear();
	for(int i=2;i<=n;i++)
	{
		cin>>a>>b;
		eg[a].push_back(b);
		eg[b].push_back(a);
	}
	tim = 0;
	for(int i=1;i<=n;i++) vis[i] = 0;
	dfs(1, -1);
	double ans = -n;
	for(int i=1;i<=n;i++) ans += vis[i];
	ans /= (n-1);
	printf("%.10lfn", ans);
}
int main()
{
	int t; cin>>t;
	while(t--) solve();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510623.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号