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寫爆棧了,還在想呢。