大意:給你乙個[a,b]的區間(1<=aa, b, p, (1 ≤ a ≤ b ≤ 1e12, b ≤ a + 1e6, 2 ≤ p ≤ b)
思路:注意到b-a<=1e6,所以整個區間長度不超過1e6,則對於大於等於1e6的素數,它在集合中至多只有乙個倍數,不會產生合併操作,所以都可以忽略。所以可以篩選1e6內的素數,用1e6的並查集對映[a,b]區間,對於每乙個滿足條件的素數,它的倍數都應該在乙個集合中,直接做合併操作即可。
最後沒寫出來是因為不知道怎麼寫從a(1e12)開始的遍歷。。。。以後要記住,可以用now=a/p[i]得到第乙個小於等於a的p[i]的倍數,那麼如果小於,now++就可以得到第乙個大於a的倍數了。。。。。。。
#include #include #include #include #include #include #include using namespace std;
const int maxn=1e6+10;
typedef long long ll;
ll fa[maxn];
ll find_set(ll x)
vectorprime;
ll a,b,p;
int vis[maxn];
ll p[maxn],cnt;
void init()
}}int main()
int ks=0;
for(int i=0;i=p)
}for(int i=ks;i}
}ll ans=0;
for(ll i=a;i<=b;i++)
}printf("%lld\n",ans);
} return 0;
}
長安大學校賽 2017
a 水 include using namespace std int a 10 int main int ans 0 while x printf d n ans return 0 b 貪心,每遇到乙個字元,將其移動到合理的地方。include using namespace std typede...
湘潭大學校賽I
accepted 58 submit 349 time limit 5000 ms memory limit 65536 kb 作為一名即將畢業大學生,小明即將參加一系列的面試,每場面試都有乙個開始時間 si和乙個結束時間 ti。小明可以選擇參加面試或者放棄面試,但是遲到和早退是不允許的。每場面試對...
2012中南大學校賽F題 旋轉卡殼的思維
當時做計算機幾何的時候也沒練過旋轉卡殼.對於一類求最小滿足條件的區間問題.這種思維是很重要的.就如同本題.實際上就是要使得從a,b,c中取出的數盡量靠近.題目所給的a,b,c已經有序.用三個指標x,y,z來記錄當前所在a,b,c的位置.每次在計算完a x b y c z 後.將x,y,z都嘗試性的往...