给你N个Snuke ,问你有哪一间Snuke是没有小吃的。
#include
#define For(i,x,y) for(register int i=(x); i<=(y); i++)
using namespace std;
const int maxn=1e3+10;
int a[maxn];
int main()
{
int n,k,d,s;
cin>>n>>k;
For(i,1,k)
{
cin>>d;
For(j,1,d)
{
cin>>s;
a[s]++;
}
}
int ans=0;
For(i,1,n)if(a[i]==0)ans++;
cout<<ans<<endl;
return 0;
}
给你一个图,并且每个点有权值,good点是,它是一个极大值。(连通块里只有一个点的话,它本身就是极大值)
直接模拟。(我是先设所有点都满足,如果一个点有一次是下位点,那么就ans–,且标记一下,还要考虑高度相等的情况)
#include
#define For(i,x,y) for(register int i=(x); i<=(y); i++)
using namespace std;
const int maxn=1e5+10;
int h[maxn],vis[maxn];
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m;
cin>>n>>m;
For(i,1,n)cin>>h[i];
int ans=n;
For(i,1,m)
{
int a,b;
cin>>a>>b;
if(h[a]==h[b])
{
if(!vis[a])ans--,vis[a]=1;
if(!vis[b])ans--,vis[b]=1;
continue;
}
if(h[a]>h[b])a=b;
if(!vis[a])
{
vis[a]=1;
ans--;
}
}
cout<<ans<<endl;
return 0;
}
#include
#define For(i,x,y) for(register int i=(x); i<=(y); i++)
using namespace std;
const int maxn=1e5+10;
int h[maxn];
int ma[maxn];
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m;
cin>>n>>m;
For(i,1,n)cin>>h[i];
For(i,1,m)
{
int a,b;
cin>>a>>b;
ma[a]=max(ma[a],h[b]);
ma[b]=max(ma[b],h[a]);
}
int ans=0;
For(i,1,n)ans+=h[i]>ma[i];
cout<<ans<<endl;
return 0;
}
很明显。
枚举(1000e5也就1e15很大了,超过x了是可以接受的)
#include
#define For(i,x,y) for(register int i=(x); i<=(y); i++)
using namespace std;
typedef long long ll;
ll pow(ll a)
{
return a*a*a*a*a;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
ll x,a,b;
int flag=0;
cin>>x;
For(i,-200,200)
{
For(j,-200,200)
{
if(pow((ll)i)-pow((ll)j)==x)
{
flag=1;
cout<<i<<' '<<j<<endl;
}
}
if(flag)break;
}
return 0;
}