[调试笔记] 晚测5 T1 容易题

众所周知,sbwzx在考试一结束就嚷嚷T1是个sb题。那他为什么调了2小时才调出来呢?快和小编一起看看吧。

Sb题:指除了sbwzx别人都能做出来的题

1.CE:震惊!sbwzx竟然连map都不会用,我们sbwzx实在是太sb了!

2.震惊!这题根本不需要用map,sbwzx仍然在用,还用错了!第二天才想到可以结构体排序

3.震惊!短短十几行代码就有两个明显错误!

void Solve(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
	sort(a+1,a+k+1,cmp);
	ll tool=1ll*n*(n+1)%mod;//没除2
	ll res=1;
	for(int i=1;i<=k;++i){
		if(a[i].x==a[i-1].x&&a[i].x==a[i-1].x) continue;//这第二个条件比较了个寂寞
		if(a[i].x!=a[i-1].x){
			ans=ans*res%mod;
			res=(tool-a[i].y+mod)%mod;
			cnt++;
		}else res=(res-a[i].y+mod)%mod;
	}
	ans=ans*qpow(tool,m-cnt)%mod;
	printf("%lld
",ans);
}

另外,如果这么写,最后一个特殊点是没法乘到的。
为了乘到,要人为加一个限制。

void Solve(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
	sort(a+1,a+k+1,cmp);
	ll tool=1ll*n*(n+1)/2%mod;
	ll res=1;
	a[k+1].x=a[k+1].y=0;
	for(int i=1;i<=k+1;++i){
		if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y) continue;
		if(a[i].x!=a[i-1].x){
			ans=ans*res%mod;
			res=tool;
			cnt++;
		}
		res=(res-a[i].y+mod)%mod;
	}
	cnt--;
	ans=ans*qpow(tool,m-cnt)%mod;
	printf("%lld
",ans);
}

然后就拿到了80分的好成绩。
这是为什么呢?
原来,当(k==0)时,cnt是不需要减减的,特判一下,就过了!

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100000+10,mod=1e9+7;
struct node{
	int x,y;
}a[maxn];
int n,m,k,cnt;
ll ans=1;
bool cmp(node A,node B){
	return A.x!=B.x ? A.x<B.x : A.y<B.y ;
}
ll qpow(ll x,int b){
	ll res=1;
	ll base=x;
	while(b){
		if(b&1) res=res*base%mod;
		base=base*base%mod;
		b>>=1;
	}
	return res;
}
void Solve(){
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=k;++i) scanf("%d%d",&a[i].x,&a[i].y);
	sort(a+1,a+k+1,cmp);
	ll tool=1ll*n*(n+1)/2%mod;
	ll res=1;
	a[k+1].x=a[k+1].y=0;
	for(int i=1;i<=k+1;++i){
		if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y) continue;
		if(a[i].x!=a[i-1].x){
			ans=ans*res%mod;
			res=tool;
			cnt++;
		}
		res=(res-a[i].y+mod)%mod;
	}
	if(k!=0) cnt--;
	ans=ans*qpow(tool,m-cnt)%mod;
	printf("%lld
",ans);
}
int main(){
	freopen("easy.in","r",stdin);
	freopen("easy.out","w",stdout);
	Solve();
	return 0;
}

原文地址:https://www.cnblogs.com/wwcdcpyscc/p/13790062.html