Codeforces Round 614 div2 解題報告

2019.1.20 星期一
各位新年好啊,作爲一名留學生,每年不能回家真的太苦逼了,過年那幾天對於18歲之前的我們來說是輕鬆和喜悅的代名詞,18歲之後則成爲了不能提及的傷心之處,不過日子還得繼續。最近在糾結暑假是去實習還是留校做研究,實習的話,餓,一個手比腦子轉的快的非應屆生真的不好找,研究的話,一個是我校計算機並不那麼強勢,我不知道留在這裏究竟能給我的簡歷增加多少分,另一個是我擔心預支假期會把我的學習/比賽熱情消耗殆盡,畢竟去年還是遇到了一些包括情感在內的重大問題,如果沒有一個暑假的調節,和那次巧合,我真不知道去年後半學期該怎麼度過,還好老天還是眷顧我的,纔有後面的故事。算下來,我已經快20了,離出欄畢業成人 也沒幾天了,能夠無憂無慮幹自己想幹的事情不知道還能有多久,不想把有限的青春浪費在這個小地方上。還有個選項,是中科院的暑期研究,也是一個合理的選項,不過現在來說一切還是個未知數,但我想把後學生時代過得精彩一些,那麼多熱鬧沒趕上,好不容易趕上一回,不想這麼草草結束。

codeforces, 這次感覺A,B,C題不是很難(別說了,自己都睡過了), A題模板bfs(然而我居然忘了dfs不能回溯然後wa了一發),B題證明了一個道理,撐死膽大的,餓死膽小的,不過類似的結論以前高中微積分課堂上孫老師帶我們一起證過,所以沒能蒙到我,不過一個朋友就比我慘多了(不是無中生友!!),卡了半天沒敢交,最後一發過了,不過耽誤了好久, C題被羣友帶跑偏了,出題人描述不清晰,按照C題一定是思維含量低的模擬題的角度出發,他題目描述寫的是farthest can reach我理解成需要考慮時間和空間的同步性,一個羣友跟我說路徑會變化,我也沒多想模擬了半天,結果一直wa,後來才發現原來操作的時候一直是原地不動,好吧,思維不規範,rating兩行淚,ac代碼如下

#include <bits/stdc++.h>
using namespace std;
#define limit 1000000 + 5//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3ff
#define lowbit(i) i&(-i)//一步兩步
#define EPS 1e-6
#define Modulo 1000000
#define ff(a) printf("%d\n",a );
#define MOD 1000000000 + 7
#define midd l + (r - l ) / 2
#define mint(a,b,c) min(min(a,b), c)
#define FOPEN freopen("C:\\Users\\administrator01\\CLionProjects\\untitled19\\data.txt", "rt", stdin)
typedef long long ll;
void read(int &x){
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}//快讀
int read(){
    int x;
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
    return x;
}//快讀
int vis[limit];
int n ,s, k;
ll dfs(ll start, map<ll,int>c, map<ll, int>vis){
    queue<int>q;
    q.push(start);
    ll ans;
    while(q.size()){
        int at = q.front();
        q.pop();
        vis[at] = 1;
        if(!c[at]){
            ans = at;
            break;
        }
        if(at - 1 >= 1 && !vis[at - 1]){
            q.push(at - 1);
        }
        if(at + 1 <= n && !vis[at + 1]){
            q.push(at + 1);
        }
    }
    return abs(ans - start);
}
int main(){
#ifdef LOCAL
    FOPEN;
#endif
    int kase;
    kase = read();
    while(kase--){
        scanf("%d%d%d" , &n, &s, &k);
        map<ll, int>close,vis;
 
        for(int i = 1 ; i <= k ; ++i){
            ll pos;
            scanf("%lld", &pos);
            close[pos] = 1;
        }
        cout<<dfs(s,close,vis)<<endl;
    }
    return 0;
}

B題

#include <bits/stdc++.h>
using namespace std;
#define limit 1000000 + 5//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3ff
#define lowbit(i) i&(-i)//一步兩步
#define EPS 1e-6
#define Modulo 1000000
#define ff(a) printf("%d\n",a );
#define MOD 1000000000 + 7
#define midd l + (r - l ) / 2
#define mint(a,b,c) min(min(a,b), c)
#define FOPEN freopen("C:\\Users\\administrator01\\CLionProjects\\untitled19\\data.txt", "rt", stdin)
typedef long long ll;
void read(int &x){
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}//快讀
int read(){
    int x;
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
    return x;
}//快讀
int n;
int main(){
#ifdef LOCAL
    FOPEN;
#endif
    n = read();
    double ans;
    ans = 0;
    for(int i = 1 ; i <= n ; ++i){
        ans += 1.00000/ i;
    }
    printf("%.4lf" , ans);
    return 0;
}

C題

#include <bits/stdc++.h>
using namespace std;
#define limit 1000000 + 5//防止溢出
#define INF 0x3f3f3f3f
#define inf 0x3f3f3f3f3ff
#define lowbit(i) i&(-i)//一步兩步
#define EPS 1e-6
#define Modulo 1000000
#define ff(a) printf("%d\n",a );
#define MOD 1000000000 + 7
#define midd l + (r - l ) / 2
#define mint(a,b,c) min(min(a,b), c)
#define FOPEN freopen("C:\\Users\\administrator01\\CLionProjects\\untitled19\\data.txt", "rt", stdin)
typedef long long ll;
void read(int &x){
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
}//快讀
int read(){
    int x;
    char ch = getchar();x = 0;
    for (; ch < '0' || ch > '9'; ch = getchar());
    for (; ch >='0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - '0';
    return x;
}//快讀
int n, m;
map<int , int>v[2];
int judge(int x,int y){
    int ans = 0;
    if(v[x][y]) {
        if (v[x ^ 1][y])++ans;
        if (v[x ^ 1][y - 1])++ans;
        if (v[x ^ 1][y + 1])++ans;
    }else{
        if (v[x ^ 1][y])--ans;
        if (v[x ^ 1][y - 1])--ans;
        if (v[x ^ 1][y + 1])--ans;
    }
    return ans;
}
int main(){
#ifdef LOCAL
    FOPEN;
#endif
    cin>>n>>m;
    int cnt = 0;
    for(int i = 1; i <= m ; ++i){
        int x, y;
        cin>>x>>y;
        x--;
        int flagh = v[x][y];
        v[x][y] = !flagh;
        cnt += judge(x,y);
        puts(!cnt ? "YES" : "NO");
    }
    return 0;
}

D題dfs寫爆棧了,還在想呢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章