CSP-J2019水记

chenpengda

2019-11-19 20:59:35

Personal

### day -1 进行模拟赛,老师说只要不粗心就能拿名次。 ### day 0 去杭州的路上 周五晚上的车,刚刚参加完一个数学比赛,[~~Doom_Deterrence~~紫陰花](https://www.luogu.org/user/232323) 得了一等奖,巨佬!我只有三等。 ### day 1 比赛 中午的时候看到一个[神佬](https://www.luogu.org/user/114080)过黑题,太强大! 首先看到T1。第一个想到的就是怎么这么水! [题解链接](https://www.luogu.org/blog/are/solution-p5660) ......这道题怎么做都有,5分钟搞定 这边推荐一个膜拜大佬算法: ```cpp #include<bits/stdc++.h> using namespace std; #define chen_zhe 9 int main() { int a; cin>>a; cout<<a%chen_zhe; return 0; } ``` ![](https://cdn.luogu.com.cn/upload/image_hosting/ngw4af0v.png) (比赛数据测民间 $100$) 看到没?膜拜chen_zhe,必定$AK$! 接着看T2。第一反应是模拟:把地铁票存到队列里,然后微妙的$head$指针打一打。 民间数据$AC$了。 ![](https://cdn.luogu.com.cn/upload/image_hosting/j8s2ej0d.png) 然后T3,刚开始打了个贪心,后来那个数据愣是没过,于是想到完全背包 这边也说一下分析:每一天的纪念品可以直接看成明天卖出(如果你想后天卖出,其实$\color{blue} \text{就等于是今天买入明天卖出再买入然后后天卖出}$ ~~有没有道理~~ 所以就是完全背包啦~把 $\color{blue} \text{今天的价格作为重量,明今价格差作为价值。}$ 重复天数-1次做完全背包就可以了。 所以民间数据又一次机智地$AC$了 ![](https://cdn.luogu.com.cn/upload/image_hosting/7oax407o.png) 最后是T4,看到这一道突然想到“[城市](https://www.luogu.org/problem/P1401)” 都是差不多的想法,其实工程很好写,唯一的问题就是工人太多,数组开不下啊! 于是下面是我的代码 ```cpp #include<bits/stdc++.h> using namespace std; bool have_lian [10000][10000],give_awnser,used_in_odd[10000],used_in_even[10000]; //even偶odd奇 void bfs(int a,long want_lin,int n) { if(a==0&&(want_lin%2==0)) { cout<<"Yes\n"; give_awnser=1; return; } if(want_lin==0)return; if((want_lin%2==0&&used_in_odd[a])||(want_lin%2==1&&used_in_even[a]))return; if(want_lin%2==0)used_in_odd[a]=1; else used_in_even[a]=1; for(int i=0;i<n;i++) { if(a==i)continue; if(have_lian[a][i]) { //cout<<"Maybe that should search worker "<<i+1<<" For "<<!want_lin<<endl; bfs(i,want_lin-1,n); } if(give_awnser==1)return; } } int main() { freopen("work.in","r",stdin); freopen("work.out","w",stdout); int n,m,q; memset(have_lian,0,sizeof(have_lian)); scanf("%d%d%d",&n,&m,&q); for(int i=0;i<m;++i) { int a,b; scanf("%d%d",&a,&b); have_lian[a-1][b-1]=have_lian[b-1][a-1]=1; } for(int i=0;i<q;++i) { int number; long want_lin; give_awnser=0; scanf("%d%ld",&number,&want_lin); memset(used_in_even,0,sizeof(used_in_even)); memset(used_in_odd,0,sizeof(used_in_odd)); bfs(number-1,want_lin,n); if(give_awnser==0)cout<<"No\n"; } return 0; } ``` 一提交民间真是五彩斑斓啊! ~~“绿的,红的,紫的,黑的,像眼睛,像星星,还眨呀眨的”~~ ![](https://cdn.luogu.com.cn/upload/image_hosting/3shdjia5.png) ![](https://cdn.luogu.com.cn/upload/image_hosting/f2pe1q2e.png)