悲……(纯闲聊)

P11362 [NOIP2024] 遗失的赋值

lishunjie @ 2024-12-02 20:06:39

本人考场被T1搞崩了,以至于没有时间思考T2了,唉。当时瞟了一眼似乎很难就没想了,没想到居然这么简单。


by Luxe877 @ 2024-12-02 20:58:00

俺也一样qwq


by lishunjie @ 2024-12-02 21:01:16

话说为什么按题解一的式子抄的会超时,求大佬解答一下

//杉月
#include<bits/stdc++.h>
#define N 100005
//#define double   long double
#define int  long long
using namespace std;
typedef long long LL;
const int mod=1e9+7;
int t;
int m;
LL n,v; 
struct node{
    int c,d;
    bool operator<(const node&aa)const{
        if(c!=aa.c) return c<aa.c;
        else return d<aa.d;
    }
}a[N];
bool pd(){
    for(int i=1;i<=m;i++){
        if(a[i-1].c==a[i].c&&a[i-1].d!=a[i].d) return false;
    }
    return true;

}
LL ksm(int x,int p){
    LL res=1;
    while(p){
        if(p&1){
            res*=x;
            res%=mod;
        }
        x=x*x%mod;
        p>>=1;
    }
    return res;
}

signed main(){
    //freopen("detect2.in","r",stdin);
    //freopen("detect.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n>>m>>v;
        for(int i=1;i<=m;i++){
            cin>>a[i].c>>a[i].d;
        }
        if(m==1){
            cout<<ksm(v,2*(n-1))<<endl;continue;
        }

        sort(a+1,a+m+1);
        if(!pd()) {cout<<0<<endl;continue;}
        LL ans=1;

        for(int i=2;i<=m;i++){
            ans*=(ksm(v,2*(a[i].c-a[i-1].c))+mod-ksm(v,a[i].c-a[i-1].c-1)*(v-1)%mod)%mod;
            ans%=mod;
        }
        ans*=ksm(v,a[1].c+n-1-a[m].c);
        ans%=mod;
        cout<<ans<<endl;
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

by CarlosProvo @ 2024-12-03 11:35:07

俺也一样(悲)


by CarlosProvo @ 2024-12-03 11:36:15

T1因为写错了一个数组名调了近一个小时,当场破防


by HKW0202 @ 2024-12-03 22:27:59

我想出正解但是输入到不合法情况就break导致答案有0就挂分,破大防


|