CF476D-Dreamoon and Sets【结论】
生活随笔
收集整理的這篇文章主要介紹了
CF476D-Dreamoon and Sets【结论】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目鏈接:https://www.luogu.com.cn/problem/CF476D
題目大意
求nnn個四元組使得
- 所有四元組內沒有重復的數。
- 四元組內的數字兩兩之間gcdgcdgcd都為kkk。
要求使得最大的數字最小
1≤n≤10000,1≤k≤1001\leq n\leq 10000,1\leq k\leq 1001≤n≤10000,1≤k≤100
解題思路
首先kkk是沒有用的因為可以視為互質,然后再乘kkk,然后考慮如何構造。
考慮每次在原來n?1n-1n?1個四元組的基礎上加入四個數然后重新排列使得合法,首先對于任意xxx都有x,x+1,x+2x,x+1,x+2x,x+1,x+2肯定是互質的,所以一種比較可能正確的方法是把這三個排到一個二元組,然后再考慮剩下那個排啥,顯然x+4x+4x+4不行,那就只能排x+5x+5x+5了。
這樣一次占用了六個數字,可以證明是最優的做法但是我不會證/kk。
時間復雜度:O(n)O(n)O(n)
code
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ll n,k; signed main() {scanf("%lld%lld",&n,&k);printf("%lld\n",(6ll*n-1)*k);for(ll i=1;i<=n;i++)printf("%lld %lld %lld %lld\n",(6ll*i-5ll)*k,(6ll*i-4ll)*k,(6ll*i-3ll)*k,(6ll*i-1ll)*k);return 0; }總結
以上是生活随笔為你收集整理的CF476D-Dreamoon and Sets【结论】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏测试电脑配置要求(游戏测试电脑配置)
- 下一篇: Comet OJ(Contest #14