本文主要是介绍The Crime-solving Plan of Groundhog(大整数乘法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:
0~9每个数字都给你一些,要求配成两个没有前导0的数字,使得乘积最小。
思路:
第二个数字为一个的时候乘积最小,所以直接模拟乘法。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <vector>using namespace std;
typedef long long ll;
const int maxn = 2e6 + 7;
const int mod = 998244353;int vis[maxn];
struct Node {int id,x;
}a[maxn];int cmp(Node a,Node b) {if(a.x == b.x) return a.id < b.id;return a.x < b.x;
}int main() {int n,m;scanf("%d%d",&n,&m);int cnt = 0;for(int i = 1;i <= n;i++) {int amt;scanf("%d",&amt);for(int j = 1;j <= amt;j++) {int x;scanf("%d",&x);a[++cnt] = {i,x};}}sort(a + 1,a + 1 + cnt,cmp);int l = 1,now = 0;int ans = 1e9;for(int i = 1;i <= cnt;i++) {vis[a[i].id]++;if(vis[a[i].id] == 1) {now++;if(now >= m) {ans = min(ans,a[i].x - a[l].x);}}while(now >= m) {vis[a[l].id]--;if(vis[a[l].id] == 0) {now--;}l++;if(now >= m)ans = min(ans,a[i].x - a[l].x);}}printf("%d\n",ans);return 0;
}
这篇关于The Crime-solving Plan of Groundhog(大整数乘法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!