入口
感觉这套要比上套简单一些? QAQ
A - A?C
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
if(s[1]=='B') cout<<"ARC\n";
else cout<<"ABC\n";
return 0;
}
B - Trick or Treat
感觉题意都没太读懂 , 看着样例搞了一发
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+7;
int a[N];
int main()
{
int n,k,t;
cin>>n>>k;
while(k--){
cin>>t;
while(t--){
int kk;
cin>>kk;
a[kk]++;
}
}
int ans=0;
for(int i=1;i<=n;i++){
if(a[i]==0) ans++;
}
cout<<ans<<endl;
return 0;
}
C - Peaks
模拟就好了 (水~
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+7;
int w[N];
int h[N],e[N],ne[N],idx;
int in[N];
void add(int a,int b){
e[idx] = b,ne[idx] = h[a],h[a] = idx++;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&w[i]);
memset(h,-1,sizeof h);
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
add(a,b),add(b,a);
in[a]++,in[b]++;
}
int ans=0;
for(int i=1;i<=n;i++){
if(in[i]==0) ans++;
else {
int flag=1;
for(int k=h[i];~k;k=ne[k]){
int j = e[k];
if(w[j] >= w[i]) flag=0;
}
if(flag) ans++;
}
}
cout<<ans<<endl;
return 0;
}
D - I hate Factorization
hhh 随着AC测试点越来越多 ,不断修改区间, 然后第三发过了 ~
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x;
cin>>x;
for(int i=-10;i<1000;i++){
for(int j=-80;j<1000;j++){
if(pow(i,5)-pow(j,5)==x) {
cout<<i<<" "<<j<<endl;return 0;
}
}
}
return 0;
}
E - This Message Will Self-Destruct in 5s (思维)
直接根据题意列个等式 ,然后移项 , 然后map一下就好了 , 答案会爆 int ;
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
map<int,int> mp;
int main()
{
int n,k;
cin>>n;
LL ans=0;
for(int i=1;i<=n;i++){
cin>>k;
int t = k - i;
t = -t;
//cout<<t<<endl;
if(mp[t]!=0) ans+=(LL)mp[t]; //一开始忘了 += 调了半天
mp[k+i]++;
}
cout<<ans<<endl;
return 0;
}
F - Three Variables Game
这个爆搜真是妙 , 实际复杂度并不高. (治愈强迫症~
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+7;
string s[N];
char ans[N];
int n;
void DFS(int x,int a,int b,int c)
{
if(x>n){
puts("Yes");
for(int i=1;i<=n;i++) printf("%c\n",ans[i]);
exit(0);
}
if(s[x]=="AB"){
if(a) ans[x] = 'B', DFS(x+1,a-1,b+1,c);
if(b) ans[x] = 'A', DFS(x+1,a+1,b-1,c);
}
else if(s[x]=="AC"){
if(a) ans[x] = 'C', DFS(x+1,a-1,b,c+1);
if(c) ans[x] = 'A', DFS(x+1,a+1,b,c-1);
}
else {
if(b) ans[x] = 'C', DFS(x+1,a,b-1,c+1);
if(c) ans[x] = 'B', DFS(x+1,a,b+1,c-1);
}
}
int main()
{
int a,b,c;
cin>>n>>a>>b>>c;
for(int i=1;i<=n;i++) cin>>s[i];
DFS(1,a,b,c);
puts("No");
return 0;
}