2020牛客国庆集训派对day8
生活随笔
收集整理的這篇文章主要介紹了
2020牛客国庆集训派对day8
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
牛客網鏈接
文章目錄
- Easy Chess
- 題意:
- 題解:
- Easy Problemset
- 題意
- 題解:
- Shuffle Cards
- 題解:
- Diff-prime Pairs
- 題意
- 題解:
- 代碼:
Easy Chess
題意:
通過n步從左下角走到右上角,每次移動都是直線,每個格子只能停留一下,輸出停留過的格子
題解:
隊友做的
#include<bits/stdc++.h> using namespace std; int n; bool vis[10][10]; int main(){scanf("%d",&n);printf("a1 ");vis[1][1]=vis[8][8]=1;int x=1;int y=1;n--;while(n--){if(n<=2&&x!=8&&y!=8){y=8;}else{int f=0;for(int i=8;i>=1;i--){if(vis[i][y]==0){f=i;break;}}if(f==0){y++;}else{x=f;}}vis[x][y]=1;printf("%c%d ",(x-1)+'a',y);}printf("h8");return 0; }Easy Problemset
題意
n個人輪流說數,如果說的數>=之前記錄的數的和,就記錄下來并加和,問m個滿足條件的數的和是多少?如果不滿m個就用50補充到m
題解:
簽到題
按照題意模擬操作就可以
Shuffle Cards
n個數(起始順序為1~n),m個操作,操作x y意思為將第x位的數以及往后y個,一共y個數,移動到最前面,
問全部操作完后,最終結果是什么
題解:
STL的rope求解
Rope其主要是結合了鏈表和數組各自的優點,鏈表中的節點指向每個數據塊,即數組,并且記錄數據的個數,然后分塊查找和插入。在g++頭文件中,< ext / rope >中有成型的塊狀鏈表,在using namespace__gnu_cxx;空間中,其操作十分方便。
Diff-prime Pairs
題意
求序對(x,y),
x和y都小于等于N,且x/gcd(x,y)和y/gcd(x,y)都是質數
問有多少這樣的序對?
題解:
多列幾個例子就不難發現,當x和y為質數的倍數時就是滿足條件的
比如n=6,就有
2 3
3 2
2 5
5 2
3 5
5 3
同時還有4 6,
4 6為2 3 的倍數,其實用n/3就可以得到
所以就是n/prme * i,其中prime為質數從3開始
代碼:
#include <iostream> #include <vector> #include <cstdio> using namespace std; long long ans=0; int n; void get_prime(vector<int> & prime,int upper_bound){ // 傳引用if(upper_bound < 2)return;vector<bool> Is_prime(upper_bound+1,true);for(int i = 2; i <= upper_bound; i++){if(Is_prime[i]){prime.push_back(i);} for(int j = 0; j < prime.size() and i * prime[j] <= upper_bound; j++){Is_prime[ i*prime[j] ] = false;if(i % prime[j] == 0)break;// 保證了一個數只被篩一次。}} } int main(){scanf("%d",&n);vector<int> prime;get_prime(prime,n);for(int i=1;i<prime.size()&&prime[i]<=n;i++){ans=ans+(long long)(n/prime[i])*i;}cout<<ans*2; // for(vector<int> :: iterator it = prime.begin(); it not_eq prime.end(); it++) // cout<<*it<<" ";return 0; }總結
以上是生活随笔為你收集整理的2020牛客国庆集训派对day8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P2852 [USACO06DEC]Mi
- 下一篇: STL的可持久化数组