首页 > 其他分享 >POI2007ODW-Weights

POI2007ODW-Weights

时间:2024-04-15 19:48:34浏览次数:22  
标签:cnt return int POI2007ODW rep tot Weights first

进制 #背包dp #贪心

注意到呈倍数的性质,考虑按照倍数转换进制,贪心的选择小的按顺序选择

// Author: xiaruize
const int INF = 0x3f3f3f3f3f3f3f3f;
const int MOD = 1000000007;
const int N = 2e5 + 10;

int n, m;
int a[N], b[N];
pii s[N];
int cnt[N];
vector<int> vec;
int tot;

bool dec(int x)
{
	if (x > tot)
		return false;
	if (cnt[x])
	{
		cnt[x]--;
		return true;
	}
	if (dec(x + 1))
	{
		cnt[x] += s[x + 1].first / s[x].first;
		cnt[x]--;
		return true;
	}
	return false;
}

void solve()
{
	cin >> n >> m;
	rep(i, 1, n) cin >> a[i];
	rep(i, 1, m) cin >> b[i];
	sort(b + 1, b + m + 1);
	rep(i, 1, m)
	{
		if (b[i] != s[tot].first)
			s[++tot].first = b[i];
		s[tot].second++;
	}
	per(i, tot, 1)
	{
		rep(j, 1, n)
		{
			cnt[i] += a[j] / s[i].first;
			a[j] %= s[i].first;
		}
	}
	int res = 0;
	rep(i, 1, tot)
	{
		rep(j, 1, s[i].second)
		{
			if (!dec(i))
			{
				cout << res << endl;
				return;
			}
			res++;
		}
	}
	cout << res << endl;
}

#ifndef ONLINE_JUDGE
bool end_of_memory_use;
#endif

signed main()
{
	// freopen(".in","r",stdin);
	// freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int testcase = 1;
	// cin >> testcase;
	while (testcase--)
		solve();
#ifndef ONLINE_JUDGE
	cerr << "Memory use:" << (&end_of_memory_use - &start_of_memory_use) / 1024.0 / 1024.0 << "MiB" << endl;
	cerr << "Time use:" << (double)clock() / CLOCKS_PER_SEC * 1000.0 << "ms" << endl;
#endif
	return 0;
}

标签:cnt,return,int,POI2007ODW,rep,tot,Weights,first
From: https://www.cnblogs.com/xiaruize/p/18136785

相关文章

  • 2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 we
    2024-02-03:用go语言,你有k个背包。给你一个下标从0开始的整数数组weights,其中weights[i]是第i个珠子的重量。同时给你整数k,请你按照如下规则将所有的珠子放进k个背包。没有背包是空的。如果第i个珠子和第j个珠子在同一个背包里,那么下标在i到j之间的所有珠......
  • AtCoder Regular Contest 144 E GCD of Path Weights
    洛谷传送门AtCoder传送门喵喵题。考虑若所有点权都已确定,如何求\(1\)到\(n\)所有路径权值和的\(\gcd\)。考虑如何check一个\(x\)是否合法。\(x\)合法的充要条件是,把不能从\(1\)到达的点和不能到达\(n\)的点扔掉后,存在一组\(\{f_n\}\),使得对于每条\(u\tov\)......
  • ARC144E GCD of Path Weights
    Description给定\(n\)个点,\(m\)条边的有向图,图中的任意一条有向边满足边起点的编号小于边终点的编号。每个点有点权,但其中有些点的点权未知。你需要找到一种给未知点权值的方案,使得所有\(1\ton\)的路径点权和的最大公因数最大,或者告知答案可以无限大。输出这个最大值。......
  • model.save() model. save_weights ()
     model.save_weights('./saved_models/8.h5') ===========================================================================model.save()保存了模型的图结构和模型的参数,保存模型的后缀是.hdf5。model.save_weights()只保存了模型的参数,并没有保存模型的图结构,保存模......
  • [CF1599A] Weights
    题目描述Youaregivenanarray$A$oflength$N$weightsofmasses$A_1$,$A_2$...$A_N$.Notwoweightshavethesamemass.Youcanputeveryweightononesideofthebalance(leftorright).Youdon'thavetoputweightsinorder$A_1$......
  • CF1844G Tree Weights
    题面传送门这个真的很容易想到吗?首先定\(1\)为根,设每个点的深度是\(d_i\),则两个点之间的距离是\(d_{i}+d_{i+1}-2d_{LCA(i,i+1)}\)。题目中相当于给出了\(n-1\)个方程和\(n-1\)个限制,要解出一个\(n-1\)元的方程。因为限制是从\(1\ton-1\)给出的,所以不可能包含,因此......
  • Experience Replay with Likelihood-free Importance Weights
    发表时间:2020文章要点:这篇文章提出LFIW算法用likelihood作为experience的采样权重(likelihood-freedensityratioestimator),reweightexperiencesbasedontheirlikelihoodunderthestationarydistributionofthecurrentpolicy,这种方式鼓励让经常访问的状态有更小的误差......
  • 关于深度学习中的两个概念weights和checkpoint
    WEIGHT和checkpoint都是深度学习中的概念,但它们的含义和作用有所不同。WEIGHT通常指的是神经网络中的参数。在训练过程中,神经网络的参数会不断更新以提高模型的准确性。这些参数通常被存储在称为“权重”的数组中。因此,当我们保存模型的权重时,我们实际上是将神经网络的参数保存到......
  • CF1599A. Weights
    题意给出n个物品,第i个重量a[i](互不相同)每次任意选一个物品放到秤的左右两边,使得放完之后左>右或左<右给出a[i]和大小关系s[i],构造方案题解必定有解把a排序,假设当前选了LRLRLR,发现在最后加L可以瞬间反转,在最前加R可以保持不变即,当前选了一段连续的a[i],放的顺序为...LRL......
  • 37. CF-Weights Distributing
    链接这是一个比较经典的题目。容易想到求出两段路径重合的部分,然后贪心的放权值。那么跑三次最短路,枚举重合部分的端点即可。正解没什么好说的。这题有趣的地方在于,如果......