NOIP普及组
2019
P5660 数字游戏
#include<bits/stdc++.h>
using namespace std;
int ans;
char dd;
int main()
{
for(int i=1;i<=8;i++)
{
dd=getchar();
if(dd=='1') ans++;
}
printf("%d",ans);
}
P5681 [CSPJX2019]面积【民间数据】
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a,b,c;
signed main()
{
cin>>a>>b>>c;
if(a*a>b*c) cout<<"Alice";
else cout<<"Bob";
}
P5682 [CSPJX2019]次大值
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,a[N];
signed main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
a[0]=unique(a+1,a+n+1)-a-1;
if(a[0]==1) printf("-1");
else if(a[0]==2) printf("%d",a[2]%a[1]);
else printf("%d",max(a[a[0]]%a[a[0]-1],a[a[0]-2]));
}
P5663 加工零件
因为每次都会向所有相连的点索取,所以如果1和2相连,1要生产一个5的零件,2就要生产一个4,1就得生产3,2就得生产2,1就得生产1,2就得生产原材料,会发现1要生产1、3、5时往后递2都会生产原材料。
那么奇数阶段,就是两个点之间最短的奇数路的长度小于等于给出的阶段,1就得给原材料。偶数阶段同理。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,M=2e5+5;
int n,m,q;
int te,v[M],pre[M],tail[N],dis[N][2];
inline void add(int x,int y)
{
++te;
v[te]=y;
pre[te]=tail[x];
tail[x]=te;
}
void bfs()
{
vector<pair<int,int> >q;
memset(dis,-1,sizeof(dis));
dis[1][0]=0;
q.push_back({1,0});
int l=0;
while(l<q.size())
{
int x=q[l].first,y=q[l].second;l++;
for(int i=tail[x];i;i=pre[i])
if(dis[v[i]][y^1]==-1)
{
dis[v[i]][y^1]=dis[x][y]+1;
q.push_back({v[i],y^1});
}
}
}
int main()
{
scanf("%d %d %d",&n,&m,&q);
for(int i=1,x,y;i<=m;++i) scanf("%d %d",&x,&y),add(x,y),add(y,x);
bfs();
for(int i=1,x,y;i<=q;++i)
{
scanf("%d %d",&x,&y);
if(dis[x][y&1]!=-1&&dis[x][y&1]<=y) printf("Yes\n");
else printf("No\n");
}
}

浙公网安备 33010602011771号