【loli的胡策】NOIP训练10.2(快速幂+树形期望dp)
来源:互联网 发布:淘宝卖家回复差评用语 编辑:程序博客网 时间:2024/05/16 00:36
T1:
题解:
我们发现在放字母的时候,第一位可以放m种,第二位只能放m-1种,第三位只能放m-2种,被前两位所限制,后面的也只能放m-2种,快速幂不解释
考试的时候不知道怎么想的觉得n是10^18会卡快速幂,然后就不想要最后10pts
其实把ksm的k设成longlong就A了。。。。。
代码:
#include <cstdio>#include <iostream>#include <cstring>#define LL long longusing namespace std;const int Mod=1e9+7;LL ksm(LL a,LL k){ LL ans=1;a%=Mod; for (;k;k>>=1,a=a*a%Mod) if (k&1) ans=ans*a%Mod; return ans%Mod;}int main(){ freopen("anti.in","r",stdin); freopen("anti.out","w",stdout); int T,i,j,k;LL n,m; scanf("%d",&T); while (T--) { scanf("%lld%lld",&n,&m); m%=Mod; if (n==1){printf("%lld\n",m);continue;} LL lj=m*(m-1)%Mod; printf("%lld\n",ksm(m-2,n-2)*lj%Mod); }}
T2:
题解:
其实就是树形dp,当时确实想的要dp,但是打了50pts就放那里了,后来也没细想
qu[i]表示儿子i的期望值;sum[i]表示所有儿子的期望和;g[i]表示i节点当根节点的时候的值
代码:
#include <cstdio>#include <iostream>#include <cstring>#define INF 1e9#define N 1000005using namespace std;int tot,nxt[N*2],point[N],v[N*2],a[N],out[N],father[N];double qu[N],sum[N],g[N];void addline(int x,int y){ ++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; out[x]++; ++tot; nxt[tot]=point[y]; point[y]=tot; v[tot]=x; out[y]++;}void dfs(int x,int fa){ father[x]=fa; qu[x]=a[x]; if (out[x]==1 && x!=1) return; for (int i=point[x];i;i=nxt[i]) if (v[i]!=fa) { dfs(v[i],x); sum[x]+=qu[v[i]];//儿子的期望和 } if (x!=1) qu[x]+=sum[x]/(double)(out[x]-1); else qu[x]+=sum[x]/(double)out[x];}void work(int x,double up){ for (int i=point[x];i;i=nxt[i]) if (v[i]!=father[x]) { double zoom; if (out[x]>1) zoom=(sum[x]-qu[v[i]]+up)/(double)(out[x]-1)+a[x];else zoom=a[x]; g[v[i]]=(sum[v[i]]+zoom)/out[v[i]]+a[v[i]]; work(v[i],zoom); }}int main(){ freopen("walking.in","r",stdin); freopen("walking.out","w",stdout); int n,i,j; scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d",&a[i]); for (i=1;i<n;i++) { int x,y; scanf("%d%d",&x,&y); addline(x,y); } dfs(1,0); g[1]=qu[1]; work(1,0); int k=1; for (i=2;i<=n;i++) if (g[k]>g[i]) k=i; printf("%d",k);}
阅读全文
1 0
- 【loli的胡策】NOIP训练10.2(快速幂+树形期望dp)
- 【loli的胡策】NOIP训练8.10(数论+树形dp+贪心)
- 【loli的胡策】NOIP训练8.12(二分?+dp?)
- 【loli的胡策】联校10.26(抖动dp+树形dp*期望)
- 【loli的胡策】NOIP训练7.15(签到+dp+线段树)
- 【loli的胡策】NOIP训练7.18(乱搞+背包dp+并查集分治)
- 【loli的胡策】联校11.2(dp+乱搞+期望dp)
- 【loli的胡策】NOIP训练7.17(模拟+乱搞二进制+乱搞BFS)
- 【loli的胡策】NOIP训练7.20(二分+主席树)
- 【loli的胡策】NOIP训练8.15(找规律+暴力)
- 【loli的胡策】NOIP训练10.5(组合数学+catalan数讲解)
- 【loli的胡策】高一信心场11.2(bitset+dp+二分+树形背包)
- 【loli的胡策】联校10.27(数学期望)
- Tyvj4620:一方的loli量产计画 (快速幂)
- 蚊子 (树形期望dp)
- NOIP 2016 换教室 (期望DP)
- 【平安夜的胡策】训练12.24(复数预处理+矩阵快速幂+dp)
- 11.2 T3.tree(树形dp+期望)
- 平衡二叉树实现
- 阿里短信服务使用心得
- Android学习-常见的UI控件 TextView、EditText和ImageView
- 隐藏在概率背后的冷常识(1)——赌徒输光定理
- task1 T3 fortress
- 【loli的胡策】NOIP训练10.2(快速幂+树形期望dp)
- 图像语义分割之FCN和CRF
- java-文件下载技术
- Linux中的源文件、目标文件、库文件
- List集合排序
- DML-数据操作(增删改)
- C/C++面试题(一)
- Android TV RecyclerView焦点移动飞框的实现
- JS匿名函数理解