G.做题
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=5e5+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
ll a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
ll n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
ll ans=0;
for(int i=1;i<=n;i++){
if(k>=a[i])ans++,k-=a[i];
if(k<=0)break;
}
cout<<ans;
return 0;
}
F.斗兽棋
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=5e5+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
map<string,int> m;
int g[4][4]={
1,1,1,0,
0,1,1,1,
1,0,1,1,
1,1,0,1
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
m["elephant"]=1,m["tiger"]=2,m["cat"]=3,m["mouse"]=4;
string s1,s2;
cin>>s1>>s2;
if(g[m[s1]-1][m[s2]-1])cout<<"tiangou yiwusuoyou"<<endl;
else cout<<"tiangou txdy"<<endl;
return 0;
}
B.组队
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=5e5+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
ll a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
int ans=0;
for(int i=1;i<=n;i++){
int p=upper_bound(a+1,a+1+n,k+a[i])-a-1;
ans=max(ans,p-i+1);
}
cout<<ans<<endl;
}
return 0;
}
J.建设道路
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
ll a[maxn];
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;
scanf("%d",&n);
ll sum=0;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]),sum+=a[i]%mod;
ll ans=0;
for(int i=1;i<=n;i++){
sum=(sum-a[i]+mod)%mod;
ans=(ans+(n-1)*a[i]%mod*a[i]%mod)%mod;
ans=(ans-2*a[i]%mod*sum%mod+mod)%mod;
}
printf("%lld",ans);
return 0;
}
I.求和
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int l[maxn],r[maxn],cnt,a[maxn];
ll c[maxn];
//树状数组
int lowbit(int x)//返还x的最低位
{
return x&(-x);
}
ll query(int x)
{
ll s=0;
while(x>0)
{
s+=c[x];
x-=lowbit(x);
}
return s;
}
void add(int x,ll v)
{
while(x<maxn)
{
c[x]+=v;
x+=lowbit(x);
}
}
vector<int> g[maxn];
void dfs(int u,int fa){
l[u]=++cnt;
for(auto v:g[u]){
if(v==fa)continue;
dfs(v,u);
}
r[u]=cnt;
}
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
g[u].pb(v);
g[v].pb(u);
}
dfs(k,0);
for(int i=1;i<=n;i++)
add(l[i],a[i]);
while(m--){
int op;
scanf("%d",&op);
if(op==1){
int a,x;
scanf("%d%d",&a,&x);
add(l[a],x);
}
else{
int a;
scanf("%d",&a);
printf("%d\n",query(r[a])-query(l[a]-1));
}
}
return 0;
}
H.认认都是好朋友
题意:
题解:
AC代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=2e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
int a[maxn],b[maxn],c[maxn];
int d[maxn<<1],fa[maxn<<1];
int find(int x){
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t;
t=read();
while(t--){
int n;
n=read();
for(int i=1;i<=n;i++){
a[i]=read(),b[i]=read(),c[i]=read();
d[2*i-1]=a[i],d[2*i]=b[i];
fa[2*i-1]=2*i-1,fa[2*i]=2*i;
}
sort(d+1,d+1+2*n);
int len=unique(d+1,d+1+2*n)-d-1;
bool f=0;
for(int i=1;i<=n;i++){
int x=lower_bound(d+1,d+1+len,a[i])-d;
int y=lower_bound(d+1,d+1+len,b[i])-d;
int p=find(x),q=find(y);
if(c[i])
fa[q]=p;
}
for(int i=1;i<=n;i++){
int x=lower_bound(d+1,d+1+len,a[i])-d;
int y=lower_bound(d+1,d+1+len,b[i])-d;
int p=find(x),q=find(y);
if(!c[i]&&p==q)f=1;
}
if(!f)printf("YES\n");
else printf("NO\n");
}
return 0;
}