蒟蒻只会ABC

A:深渊水妖

题目范围确实挺大的,一开始被吓到了。

但是仔细一看,虽然 TT 很大,但是 nn 一共只有 1e61e6

因此暴力就很容易做出来

#include<bits/stdc++.h>
//#pragma G++ optimize(2)
//#pragma G++ optimize(3)
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define ushort unsigned short
#define MAX(x,y) ((x>y)?x:y)
#define MIN(x,y) ((x<y)?x:y)
#define SWAP(x,y) x^=y;y^=x;x^=y
#define I using
#define AK namespace
#define IOI std
#define ByKonnyaku41377 return 0
const int MAXN=1e6;
const ll MOD=1e9+7;
I AK IOI;
ll Abs(ll a) {return a>=0?a:(~a)+1;}
ll gcd(ll a, ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a, ll b){return a/gcd(a,b)*b;}
double HAILUN(double a, double b, double c){int P=(a+b+c)/2; return sqrt(P*(P-a)*(P-b)*(P-c));}
ll Qpow(ll a, ll b)   {ll base=a, re=1;while(b){if(b&1)re=(re*base)%MOD;base=(base*base)%MOD;}return re;}
ll Qtimes(ll a, ll b) {ll base=a, re=0;while(b){if(b&1)re=(re+base)%MOD;base=(base+base)%MOD;}return re;}
ll read() {ll x=0; bool f=1; char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=0; c=getchar();}while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=getchar();return f?x:(~x)+1;}
void writ(ll x){if(x<0) {putchar('-');x=(~x)+1;}if(x>9)writ(x/10);putchar(x-x/10*10+48);}
/*void prepar(){}*/
int t, n, l, r;
int ans, sum;
struct {
	int l, r;
}q[100005];
int top;
int sz[100005];
int main(){
	t=read(); 
	while(t--) {
		n=read();
		ans=0;	top=0;
		l=1;
		for(int i=1; i<=n; ++i) sz[i]=read();
		sz[n+1]=-1;
		for(int i=1; i<=n+1; ++i) {
			if(sz[i]>=sz[i-1]) continue ;
			else {
				if(sz[i-1]-sz[l]>ans) {
					ans=sz[i-1]-sz[l];
					top=1;
					q[top].l=l; q[top].r=i-1;
				}
				else if(sz[i-1]-sz[l]==ans) {
					q[++top].l=l;
					q[top].r=i-1;
				}
				l=i;
			}
		}
		for(int i=1; i<=top; ++i) {
			printf("%d %d ",q[i].l, q[i].r);
		}puts("");
	}
	ByKonnyaku41377;
	/*ACdate:2022.1.21*/
}

B:顽皮恶魔

一个小小的模拟。

注意处理数组的顺序!!

因为可能会覆盖啊之类的bulabula……

然后就模拟一遍。

#include<bits/stdc++.h>
//#pragma G++ optimize(2)
//#pragma G++ optimize(3)
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define ushort unsigned short
#define MAX(x,y) ((x>y)?x:y)
#define MIN(x,y) ((x<y)?x:y)
#define SWAP(x,y) x^=y;y^=x;x^=y
#define I using
#define AK namespace
#define IOI std
#define ByKonnyaku41377 return 0
const int MAXN=1e6;
const ll MOD=1e9+7;
I AK IOI;
ll Abs(ll a) {return a>=0?a:(~a)+1;}
ll gcd(ll a, ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a, ll b){return a/gcd(a,b)*b;}
double HAILUN(double a, double b, double c){int P=(a+b+c)/2; return sqrt(P*(P-a)*(P-b)*(P-c));}
ll Qpow(ll a, ll b)   {ll base=a, re=1;while(b){if(b&1)re=(re*base)%MOD;base=(base*base)%MOD;}return re;}
ll Qtimes(ll a, ll b) {ll base=a, re=0;while(b){if(b&1)re=(re+base)%MOD;base=(base+base)%MOD;}return re;}
ll read() {ll x=0; bool f=1; char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=0; c=getchar();}while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=getchar();return f?x:(~x)+1;}
void writ(ll x){if(x<0) {putchar('-');x=(~x)+1;}if(x>9)writ(x/10);putchar(x-x/10*10+48);}
/*void prepar(){}*/
int t;
int n, m;
int mp[1003][1003];
char ch;
void change(int i, int j){//保护伞
    //判断不等于2是因为保护伞不能清空保护伞,不然另一个保护伞就没用了
	if(mp[i-1][j-1]!=2) mp[i-1][j-1]=0;
	if(mp[i-1][j]!=2) mp[i-1][j]=0;
	if(mp[i-1][j+1]!=2) mp[i-1][j+1]=0;
	if(mp[i][j-1]!=2) mp[i][j-1]=0;
	if(mp[i][j+1]!=2) mp[i][j+1]=0;
	if(mp[i+1][j-1]!=2) mp[i+1][j-1]=0;
	if(mp[i+1][j]!=2) mp[i+1][j]=0;
	if(mp[i+1][j+1]!=2) mp[i+1][j+1]=0;
	mp[i][j]=0;
}
int ans;
int main(){
	t=read();
	while(t--) {
		n=read(); m=read();
		for(int i=1; i<=n; ++i) {
			for(int j=1; j<=m; ++j) {
				cin>>ch;
				if(ch=='Z') mp[i][j]=0;
				if(ch=='*') mp[i][j]=2;
				if(ch=='P') mp[i][j]=1;
			}
		}
		for(int i=1; i<=n; ++i) {
			for(int j=1; j<=m; ++j) {
				if(mp[i][j]==2) {
					change(i, j);
				}
			}
		}ans=0;
		for(int i=1; i<=n; ++i) {
			for(int j=1; j<=m; ++j) {
				if(mp[i][j]==1) {
					++ans;
				}
			}
		}printf("%d\n", ans);
	}
	ByKonnyaku41377;
	/*ACdate:2022.1.21*/
}

C:绝命沙虫

没错又是个模拟,

不过卡了我好久。

记得尽量都要用double类型!!

我就因为这个罚了五次时。

#include<bits/stdc++.h>
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define ushort unsigned short
#define MAX(x,y) ((x>y)?x:y)
#define MIN(x,y) ((x<y)?x:y)
#define SWAP(x,y) x^=y;y^=x;x^=y
using namespace std;
const int MAXN=1e6;
const ll MOD=1e9+7;
using namespace std;
ll read() {
	ll x=0;
	bool f=1;
	char c=getchar();
	while(c>'9'||c<'0') {
		if(c=='-') f=0;
		c=getchar();
	}
	while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=getchar();
	return f?x:(~x)+1;
}
double m;
double cnt1, cnt2;
ll res = 0;
void PPP(int n, double m) {
	cnt1 = 0, cnt2 = 0, res = 0;
	if(n != 0) {
		cnt1 += 100LL*n, cnt2 += min(10000.0, (double) n * 100LL * (m - 1) );
		n=0;
	}
	while(n || cnt1 || cnt2) {
		if(cnt1) n += (cnt1 / 200LL), res += (cnt1 / 10LL), cnt1 = 0;
		if(cnt2) res += (cnt2 / 10LL), cnt2 = 0;
		if(n != 0) cnt1 += (100LL*n), cnt2 += min(10000.0, (double) n * 100LL * (m - 1) * 1.0), n=0;
	}
	printf("%lld\n", res);
}
int main() {
	int t=read();
	while(t--) {
		int n=read();
		cin>>m;
		PPP(n ,m);
	}
}

DEF就不会了,蒟蒻就是蒟蒻