zoukankan      html  css  js  c++  java
  • [调试笔记] 晚测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;
    }
    
    
  • 相关阅读:
    idea常用快捷键
    Spring中<bean>标签之使用p标签配置bean的属性
    Mysql语句转义
    Idea使用(摘抄至java后端技术公众号-孤独烟)
    js中scroll滚动相关
    Flask-wtforms类似django中的form组件
    Flask中的数据连接池
    SQLAlchemy
    博客园美化阅读模式
    [NOIP2003] 提高组 洛谷P1039 侦探推理
  • 原文地址:https://www.cnblogs.com/wwcdcpyscc/p/13790062.html
Copyright © 2011-2022 走看看