NOIP普及組
阿新 • • 發佈:2020-10-25
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"); } }