博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.30 考试修改+总结
阅读量:4573 次
发布时间:2019-06-08

本文共 2170 字,大约阅读时间需要 7 分钟。

悲桑辣么大,总算可以AK一天啦,结果被卡了个unsigned long long QAQ

 

第一题,我在cojs上放的 简单的求和问题 原题

题解在blog里,我做的数据每个元素不超过10^5

这里不超过10^9,两次求和之后是10^19,刚好爆了long long

所以要用unsigned long long 然后就这样被坑掉了20分

 

第二题,SDOI 2013 方程原题

题解也在blog里QAQ

容斥一下做组合数取模,写写模板就A了

 

第三题,thusc的两道题的结合版?

首先题目显然是个FWT的式子,然后做一发FWT之后问题转化成求每个点的A+A^2+A^4+……的值

然后模数很小,不难想到去年thusc的第二题也是平方,也是模数很小

做法是暴力出每个循环节用线段树维护

然后这个题我们先暴力出所有的循环节之后发现求和的时候在环上分成了若干段,每段的和在模意义下都是相等的

这个模数的循环节也特别的有意思,因为除了0和1之外他只有一个大环QAQ

而且每个点最多走一步就会进入环内

我们拆环之后处理一下前缀和,模拟一下跑环可以在O(1)的时间内算出每个点的和

之后FWT还原即可

UPD:std的做法是将i到i^2%mod连边,我们考虑设f(i,j)表示从i这个点出发向后走2^j步的和

然后倍增一下就可以了,之后统计A+A^2+A^4+……就可以直接利用倍增数组统计了

#include
#include
#include
#include
#include
#include
using namespace std; const int maxn=300010;const int mod=10007;int n,m,u,v,inv=5004;bool vis[maxn];int pos[maxn],sum[maxn],tot;int a[maxn],L[maxn],check[maxn];int ans[maxn];bool C[maxn];int A[maxn],B[maxn]; void read(int &num){ num=0;char ch=getchar(); while(ch<'!')ch=getchar(); while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();}void DFS(int u){ vis[u]=true;pos[u]=++tot; sum[tot]=sum[tot-1]+u; if(sum[tot]>=mod)sum[tot]-=mod; int v=u*u%mod; if(!vis[v])DFS(v);}void Get_DP(int u){ vis[u]=true; int v=u*u%mod; if(!vis[v])Get_DP(v); check[u]=check[v]; L[u]=L[v]+1;a[u]=a[v]+u; if(a[u]>=mod)a[u]-=mod;}void FWT(int *A,int n,int flag){ for(int k=2;k<=n;k<<=1){ int mk=(k>>1); for(int i=0;i
>=1; }return tmp;} int main(){ vis[0]=true;vis[1]=true;DFS(2); check[1]=1; for(int i=2;i
=mod)B[i]-=mod; A[i]=A[i]*A[i]%mod; } }else{ B[i]=B[i]+a[now]; if(B[i]>=mod)B[i]-=mod; c-=L[now]; int tmp=check[now]; if(tmp>1){ int P=c/tot; B[i]=B[i]+sum[tot]*P%mod; if(B[i]>=mod)B[i]-=mod; int cur=pos[tmp];c=c-tot*P; int R=cur+c-1; if(R<=tot){ B[i]=B[i]+sum[R]-sum[cur-1]; B[i]=(B[i]%mod+mod)%mod; }else{ B[i]=B[i]+sum[tot]-sum[cur-1]; B[i]=(B[i]%mod+mod)%mod; c=c-(tot-cur+1); B[i]=B[i]+sum[c]; B[i]=(B[i]%mod+mod)%mod; } }else if(tmp==1){ B[i]=B[i]+c; B[i]%=mod; } } C[now]=true;ans[now]=B[i]; } FWT(B,m,inv); printf("%d\n",B[v]); return 0;}

QAQ 今天考试是原题大赛

并没有什么好总结的 QAQ

转载于:https://www.cnblogs.com/joyouth/p/5542501.html

你可能感兴趣的文章
uva 12003 Array Transformer (大规模阵列)
查看>>
mysql5.7二进制包安装方式
查看>>
SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
查看>>
装饰者模式——Java设计模式
查看>>
39.递推练习: 菲波那契数列(2)
查看>>
排序精讲
查看>>
【bzoj3172】 Tjoi2013—单词
查看>>
【uoj2】 NOI2014—起床困难综合症
查看>>
js return的用法
查看>>
子节点填充父元素除去一固定高度后的剩余高度
查看>>
[原]IOS 后台发送邮件
查看>>
(转)JAVA Calendar详解
查看>>
转: 编码,charset,乱码,unicode,utf-8与net简单释义
查看>>
C#--正则匹配
查看>>
5.30 考试修改+总结
查看>>
BA-设计施工调试流程
查看>>
C#-CLR各版本特点
查看>>
css3背景透明文字不透明
查看>>
实验四
查看>>
mssql sqlserver 取消数值四舍五入的方法分享
查看>>