A. Hulk

题意是给你一个n 输出一个英文字符串,找下规律就发现

当(i!=n&&i%2==1) 输出的是 I hate that (注意大写)

当(i!=n&&i%2==0) 输出的是 I love that (注意大写)

当(i==n&&i%2==1) 输出的是 I love it (注意大写)

当(i==n&&i%2==0) 输出的是 I love it (注意大写)

注意有空格;

#include<bits/stdc++.h>
#define int long long
#define MAX(a,b,c) max(a,max(b,c))
#define MIN(a,b,c) min(a,min(b,c))
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef long long LL;
typedef unsigned long long ull;
typedef unsigned long long uLL;
using namespace std;
const int maxn=1e5+;
const int INF=0x3f3f3f3f;
int32_t main()
{
int n; cin>>n;
for(int i=;i<n;i++)
{
if(i%==) cout<<"I hate that"<<" ";
else cout<<"I love that"<<" ";
}
if(n%==) cout<<"I hate it"<<endl;
else cout<<"I love it"<<endl;
}

A.cpp

B. Spider Man

题意有点难,每次给你以一个数n  让你去操作 输出结果;

每次操作是找一个圈  长度为x>=2  分成1-p  p-两段

每个n  要去到 n-1 个点

n为偶数时 首次可以去掉 0  2 个点         第一个操作者可以操作最后一下,第一个操作者win

当n为奇数时候   首次每次只能去掉1个点    就变成了奇数+偶数  第一个操作者 lost

#include<bits/stdc++.h>
#define int long long
#define MAX(a,b,c) max(a,max(b,c))
#define MIN(a,b,c) min(a,min(b,c))
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef long long LL;
typedef unsigned long long ull;
typedef unsigned long long uLL;
using namespace std;
const int maxn=1e5+;
const int INF=0x3f3f3f3f;
int32_t main()
{
int n; cin>>n; int t=;
for(int i=;i<=n;i++)
{
int x; cin>>x;
if(x%==) cout<<t<<endl;
else
{
if(t==) t=;
else t=;
cout<<t<<endl;
}
}
}

B.cpp

C. Thor

题目意思就是n个程序发送手机通知 ,你去查看通知,问你每次剩下多少通知没看

有3种类型

type 1  应用 b 发送一个通知;

type 2   阅读 b 的所有通知;

type 3    阅读前t个通知(可以重复阅读)

直接暴力肯定过不了  n*p 复杂度过不去

我们注意 单独的type2   type3 都可以用o(n)的复杂度过去

我们就要把这两个联系在一起

执行type2操作时 我们要去重(type3操过的 (一前type2操作))

单独的type2时  每次type2时 总数减去 新加的amout[b] ;

新加的mount[b] 中可能有type3操作过的; 我们要在type中减去;

执行type3操作时候  遍历上一次 t1到这次的;

中间有type2读过的  所以要type2要标记位置,使type3遍历时候跳过这个数

#include<bits/stdc++.h>
#define int long long
#define MAX(a,b,c) max(a,max(b,c))
#define MIN(a,b,c) min(a,min(b,c))
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef long long LL;
typedef unsigned long long ull;
typedef unsigned long long uLL;
using namespace std;
const int maxn=3e5+;
const int INF=0x3f3f3f3f;
vector<int> vs[maxn];
pair<int,int> pa[maxn];
int amout[maxn];
int pos[maxn];
int32_t main()
{
int n,q; cin>>n>>q;
int cnt=,sum=;
int p=;
for(int i=;i<q;i++)
{
int a,b; cin>>a>>b;
if(a==)
{
vs[b].pb(cnt);
amout[b]++;
sum++;
pa[cnt].first=;
pa[cnt].second=b;
cnt++;
}
if(a==)
{
sum=sum-amout[b];
amout[b]=;
for(int j=pos[b];j<vs[b].size();j++)
{
pa[vs[b][j]].first=;
}
pos[b]=vs[b].size();
}
if(a==)
{
for(int j=p;j<b;j++)
{
if(!pa[j].first)
{
pa[j].first=;
sum--;
amout[pa[j].second]--;
}
}
p=max(p,b);
}
cout<<sum<<endl;
} }

C.cpp

05-07 15:32