首页 > 其他分享 >CodeForces 986F Oppa Funcan Style Remastered

CodeForces 986F Oppa Funcan Style Remastered

时间:2024-01-18 10:36:24浏览次数:30  
标签:Remastered Style le int typedef long Funcan maxn define

洛谷传送门

CF 传送门

有意思的。

对 \(k\) 分解质因数,题目实际上是想让我们解一个 \(\sum\limits_{i = 1}^m a_i x_i = n\) 的方程。

考虑 \(m = 1\) 特判,\(m = 2\) exgcd。\(m = 3\) 时发现 \(\min\limits_{i = 1}^m a_i \le k^{\frac{1}{3}} \le 10^5\),所以可以跑同余最短路。设 \(f_i\) 为能组成的 \(\bmod a_1 = i\) 的最小数。那么就直接判 \(f_{n \bmod a_i} \le n\) 即可。

同余最短路还在写最短路?感觉不如转圈!

code
// Problem: F. Oppa Funcan Style Remastered
// Contest: Codeforces - Codeforces Round 485 (Div. 1)
// URL: https://codeforces.com/problemset/problem/986/F
// Memory Limit: 256 MB
// Time Limit: 5000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef __int128 lll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 10050;
const int N = 32000000;

ll n, ans[maxn], m, f[maxn * 10];
int pr[N / 10], tot;
bool vis[N + 5];
struct node {
	ll n, k, i;
} qq[maxn];

inline void init() {
	for (int i = 2; i <= N; ++i) {
		if (!vis[i]) {
			pr[++tot] = i;
		}
		for (int j = 1; j <= tot && i * pr[j] <= N; ++j) {
			vis[i * pr[j]] = 1;
			if (i % pr[j] == 0) {
				break;
			}
		}
	}
}

ll exgcd(ll a, ll b, ll &x, ll &y) {
	if (!b) {
		x = 1;
		y = 0;
		return a;
	}
	ll d = exgcd(b, a % b, y, x);
	y -= a / b * x;
	return d;
}

void solve() {
	scanf("%lld", &n);
	for (int i = 1; i <= n; ++i) {
		scanf("%lld%lld", &qq[i].n, &qq[i].k);
		qq[i].i = i;
	}
	sort(qq + 1, qq + n + 1, [&](const node &a, const node &b) {
		return a.k < b.k;
	});
	for (int i = 1, j = 1; i <= n; i = (++j)) {
		while (j < n && qq[j + 1].k == qq[i].k) {
			++j;
		}
		m = qq[i].k;
		if (m == 1) {
			for (int k = i; k <= j; ++k) {
				ans[qq[k].i] = 0;
			}
			continue;
		}
		vector<ll> P;
		for (int k = 1; k <= tot && 1LL * pr[k] * pr[k] <= m; ++k) {
			if (m % pr[k] == 0) {
				P.pb(pr[k]);
				while (m % pr[k] == 0) {
					m /= pr[k];
				}
			}
		}
		if (m > 1) {
			P.pb(m);
		}
		if ((int)P.size() == 1) {
			for (int k = i; k <= j; ++k) {
				ans[qq[k].i] = (qq[k].n % P[0] == 0);
			}
			continue;
		}
		if ((int)P.size() == 2) {
			ll p, q;
			ll d = exgcd(P[0], P[1], p, q);
			for (int k = i; k <= j; ++k) {
				lll x = p, y = q;
				if (qq[k].n % d) {
					ans[qq[k].i] = 0;
					continue;
				}
				x *= (qq[k].n / d);
				y *= (qq[k].n / d);
				lll pp = P[1] / d, qq = P[0] / d;
				if (x < 0) {
					lll t = (-x + pp - 1) / pp;
					x += t * pp;
					y -= t * qq;
				}
				if (x > 0) {
					lll t = x / pp;
					x -= t * pp;
					y += t * qq;
				}
				ans[::qq[k].i] = (x >= 0 && y >= 0);
			}
			continue;
		}
		for (int i = 1; i <= P[0]; ++i) {
			f[i] = 8e18;
		}
		f[0] = 0;
		ll t = P[0];
		for (int i = 1; i < (int)P.size(); ++i) {
			for (ll j = 0, lim = __gcd(P[i], t); j < lim; ++j) {
				for (ll k = j, c = 0; c < 2; c += (k == j)) {
					ll p = (k + P[i]) % t;
					f[p] = min(f[p], f[k] + P[i]);
					k = p;
				}
			}
		}
		for (int k = i; k <= j; ++k) {
			ans[qq[k].i] = (f[qq[k].n % t] <= qq[k].n);
		}
	}
	for (int i = 1; i <= n; ++i) {
		puts(ans[i] ? "YES" : "NO");
	}
}

int main() {
	init();
	int T = 1;
	// scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

标签:Remastered,Style,le,int,typedef,long,Funcan,maxn,define
From: https://www.cnblogs.com/zltzlt-blog/p/17971963

相关文章

  • delphi firemonkey使用 TListbox 自定义列表数据(二StyleBook方式实现)
    上一篇用设计好界面后用代码添加稍微有些麻烦,所以改为用StyleBook设计好后添加Item界面上添加ListBox后改Item高度为100右键添加一条空白记录,观察高度,并且方便自定义编辑style样式默认添加一条ListBoxItem1Style1的样式,添加Layout布局到这个样式下,并且添加需要的控件进去la......
  • 图像生成模型微调:StyleGAN与BigGAN的实践
    1.背景介绍图像生成模型是深度学习领域中一个热门的研究方向,它旨在生成高质量的图像,以模拟现实世界中的图像或创造出新的虚构图像。在过去的几年里,我们已经看到了许多有趣的图像生成模型,如GAN(GenerativeAdversarialNetworks)、VAE(VariationalAutoencoders)等。然而,在这篇文章中,我......
  • geoserver中styles引用外部图片
    使用geoserver发布图层,需要显示指定的图标从geoserver用户手册——PointSymbolizer中可以了解到只需在PointSymbolizer时候使用ExternalGraphic标签,其使用说明如下:<PointSymbolizer><Graphic><ExternalGraphic><OnlineResourcexlink:type="simple"......
  • Qt在ui界面设置组件样式,styleSheet属性
    QGroupBox{border:3pxsolidred;border-radius:15px;} QGroupBox#groupBoxBtns{border:3pxsolidgreen;border-radius:5px;} QPushButton{border:3pxsolidblack;border-radius:7px;} QPushButton:hover{border:3pxsolidblue;border-radiu......
  • CSS(层叠样式表,Cascading Style Sheets)
    CSS(层叠样式表,CascadingStyleSheets)是一种用于描述文档样式和布局的样式表语言。它可以与HTML结合使用,用于控制网页的外观和格式。以下是CSS的主要特点和一些基本概念:基本概念:选择器(Selectors):选择器是CSS规则的一部分,用于选择要应用样式的HTML元素。例如,p选择器选择所有......
  • Conv2Former: A Simple Transformer-Style ConvNet for Visual Recognition:使用大核卷
    Conv2Former:ASimpleTransformer-StyleConvNetforVisualRecognition*Authors:[[QibinHou]],[[Cheng-ZeLu]],[[Ming-MingCheng]],[[JiashiFeng]]Locallibrary初读印象comment::研究一种更有效的利用卷积编码空间特征的方法,利用卷积调制来简化自注意力操作......
  • style中通过import引入样式时,scoped不生效
    通过import引入的外部css文件,这种引入方式是全局的,也会影响其他组件的页面样式<stylelang="scss"scoped>@importurl(../style.scss);</style>此时虽然用了scoped,但是样式还是全局的。造成样式污染的案例:(1)、父页面中引入css文件<stylescoped>@import"~@/assets/sty......
  • 六、多态样式@stateStyles
    @Styles和Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。@stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同,ArkUI提供以下四种状态:focused:获焦态normal:正常态pressed:按压态disabled:不可用态impo......
  • php 去除图片以及DIV的width、height、style
    1.去掉图片的宽高,去掉DIV的style样式$str='<divstyle="margin:0pxauto;width:740px;"><p><imgwidth="748"height="444"alt=""src="/images/upload/Image/manmiao_0001.jpg"/></p></div......
  • StyleSync 开源部分总结
    https://github.com/guanjz20/StyleSync_PyTorch这个是号称最强的模型.说百分之99拟合真人.我们赶紧来学习.首先权重和训练是不开源的.我也只能尽可能的根据发布的代码来看能学到什么.先说结论:整体跟wav2lip百分之90相似.都是视频--->图片--->抽取人脸landmark->每个图片......