AC日记——[HNOI2008]越狱 bzoj 1008

1008

思路:

  越狱情况=总情况-不越狱情况;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

#define ll long long

ll poww(ll x,ll e,ll k)
{
    ll res=1,pos=x;pos%=k;
    while(e)
    {
        if(e&1) res=(res*pos)%k;
        pos=(pos*pos)%k,e=e>>1;
    }
    return res;
}

int main()
{
    ll m,n;
    cin>>m>>n;
    ll ans=(poww(m,n,100003)%100003-poww(m-1,n-1,100003)%100003*m%100003)%100003;
    cout<<(ans<0?ans+100003:ans);
    return 0;
}
时间: 2024-10-09 06:11:23

AC日记——[HNOI2008]越狱 bzoj 1008的相关文章

AC日记——[HNOI2008]玩具装箱toy bzoj 1010

1010 思路: 斜率优化DP: 跪烂大佬 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #define ll long long ll que[maxn],sum[maxn],dp[maxn],n,l,ai[maxn],a; inline void in(ll &now) { char Cget=getchar();now=0; while(Cget>'9'||Cget<'0')C

AC日记——[HNOI2008]GT考试 bzoj 1009

1009 思路: KMP上走DP(矩阵加速): DP[i][j]表示当前在第i位,同是匹配到不吉利串的第j位的方案数: 代码: #include <bits/stdc++.h> using namespace std; int mod; struct MatrixType { int n,m,ai[40][40]; void mem(int n_,int m_) { n=n_,m=m_; for(int i=0;i<=n;i++) { for(int v=0;v<=m;v++) a

AC日记——[HNOI2008]水平可见直线 bzoj 1007

1007 思路: 维护一个下凸壳: 用单调栈来维护这玩意儿: 先将斜率排序: 然后判断栈顶元素和当前元素的交点x是否小于栈顶元素和栈顶上一个元素的交点x: 注意: 人神共愤的精度问题和输出空格问题: 来,上代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #d

AC日记——[ZJOI2012]网络 bzoj 2816

2816 思路: 多个LCT: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 10005 #define ll long long int val[maxn]; struct LinkCutTreeType { int f[maxn],Max[maxn],ch[maxn][2],rev[maxn],sta[maxn],top,cnt[maxn]; void updata(int now) { Max[now]=va

AC日记——[Hnoi2017]影魔 bzoj 4826

4826 思路: 主席树矩阵加减+单调栈预处理: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define ll long long #define maxtree maxn*30 class PTreeType { private: int ch[maxtree][2],root[maxn],tot,head[maxn],li[maxn<<1],ri[maxn<<1],E

AC日记——[SCOI2007]蜥蜴 bzoj 1066

1066 思路: 网络流最大流: 拆点,每个点拆成两个,流量为这个点的高度: 注意,文中说的距离是曼哈顿距离(劳资以为开根号wa了不知道多少次): 每两个距离不大于d的点连边,流量inf: 如果距离能够延伸到边界外,就将这个点连向t: 最后输出,蜥蜴个数减去最大流: 来,上代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <alg

AC日记——Rmq Problem bzoj 3339

3339 思路: 恶心: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 200005 struct TreeNodeType { int l,r,dis,mid,flag; bool if_; }; struct TreeNodeType tree[maxn<<2

AC日记——[Ahoi2013]作业 bzoj 3236

3236 思路: 莫队+树状数组维护: 代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 100005 struct QueryType { int l,r,a,b,id; }; struct QueryType qu[maxn*10

AC日记——NOI2016区间 bzoj 4653

4653 思路: 线段树,指针滑动: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1000005 #define maxm 200005 #define maxn_ maxn<<2 #define INF 0x7fffffff struct TreeNodeType { int l,r,dis,mid,flag; }; struct TreeNodeType tree[maxn_]; struct Q