CSP-J2019水记
chenpengda
2019-11-19 20:59:35
### 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)