NOIp2018集训test-10-17 (bike day3)
发现自己gradully get moodier and moodier了
负面情绪爆发地越来越频繁,根本out of control,莫名其妙地就像着了魔一样
为什么用英语大概是因为今天早上早自习因为英语考了全班倒数被hj抽上黑板去听写了,就很开心
B 君的第一题 (guangzhou)
虽然我完全不知道Bike在说些什么,但是ycl告诉我,因为任何高斯整数都可以这样表达出来,相当于是把高斯整数表示成一个p进制数,每一位是0或者1。然后手写复数类进制转换就好了。
看模p等不等于0可以不用重载模运算,直接看(a+b)%2是否等于0,llj说,因为(-i-1)^2=2i,所以(-i-1)^k一定可以表达成(2i)^k1或者(2i)^k1*(-i-1),这样大概就可以证这个了。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int ans[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct fs {
LL a,b;
fs(){}
fs(LL a,LL b):a(a),b(b){}
}bs,tp; fs operator *(const fs&A,const fs&B) { return fs(A.a*B.a-A.b*B.b,A.a*B.b+A.b*B.a); }
fs operator /(const fs&A,const LL&B) { return fs(A.a/B,A.b/B); }
fs operator /(const fs&A,const fs&B) { return A*fs(B.a,-B.b)/(B.a*B.a+B.b*B.b); } #define ANS
int main() {
#ifdef ANS
freopen("guangzhou.in","r",stdin);
freopen("guangzhou.out","w",stdout);
#endif
LL a,b;
read(a); read(b);
bs=fs(a,b);
tp=fs(-,-);
for(int i=;(bs.a!=||bs.b!=);i++) {
if((bs.a+bs.b)&) {
ans[++ans[]]=i;
bs.a=bs.a-;
}
bs=bs/tp;
}
printf("%d\n",ans[]);
For(i,,ans[]) printf("%d\n",ans[i]);
Formylove;
}
另外llj告诉了我如何证明任意整数都可以用若干不等的斐波那契数表示,
归纳证明,f[0]~f[i]可以表达1~f[i+1]的所有数,
i=1时成立,
于是f[0]~f[i+1]就可以表达1~f[i+2]所有数
找整数的表达的时候贪心地每次找到小于这个数的最大斐波那契数减去即可,
∵f[i]<=x<f[i+1],∴x-f[i]<f[i-1] 又∵f[0]~f[i-1]可以表达1~f[i]所有数,得证
B 君的第二题 (hangzhou)
条件有a<2333^2
a<2333时就是问长度大于等于2的单调不升子序列的个数,树状数组优化dp即可
n<2333时就是加上限制这个序列中相邻两项的组合数mod2333不等于0,也就是x!/(y!(x-y)!)mod 2333不等于0,∴x/2333=y/2333+(x-y)/2333
n^2dp就可以做75pt了。
x/p=y/p+(x-y)/p 转化成 y mod p + (x-y) mod p < p ∴y mod p <= x mod p
∵y<=x ∴y/p<=x/p
因为当时我太蠢没有想到所以绕了圈子,其实一个lucas定理就直接得出 y/p<=x/p&&y mod p <= x mod p了
然后二维树状数组维护即可。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=+,P=,mod=;
typedef long long LL;
typedef double db;
using namespace std;
int n,a[N];
LL f[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL mo(LL x,int p) { return x<?x+p:(x>=p?x-p:x); } LL sum[][];
void add(int x,int y,LL v) {
for(int i=x;i<=P;i+=(i&(-i)))
for(int j=y;j<=P;j+=(j&(-j)))
sum[i][j]=mo(sum[i][j]+v,mod);
} LL qry(int x,int y) {
LL rs=;
for(int i=x;i;i-=(i&(-i)))
for(int j=y;j;j-=(j&(-j)))
rs=mo(rs+sum[i][j],mod);
return rs;
} #define ANS
int main() {
#ifdef ANS
freopen("hangzhou.in","r",stdin);
freopen("hangzhou.out","w",stdout);
#endif
read(n); int mx=;
For(i,,n) {
read(a[i]);
mx=max(mx,a[i]);
}
LL ans=;
For(i,,n) {
int x=P-a[i]/P,y=P-a[i]%P;
f[i]=qry(x,y);
ans=mo(ans+f[i],mod);
f[i]=mo(f[i]+,mod);
add(x,y,f[i]);
}
printf("%lld\n",ans);
Formylove;
}
B 君的第三题 (nanjing)
这好像不是我第一次两个dp能解决的问题前一半用dp后一半写搜索然后TLE了。虽然这次好像后一半我确实也不会写。当然前一半也写得稀丑。
然而bike老爷就非常优秀了——当然像这三道题这种简单的题对于毕老爷都是套路签到水题十分钟就能切完,但对于我这种见识浅薄又愚钝的人来说十分否奥妙和优秀了——先预处理出c[s]表示原图中两端都在s集合里面的边数,用子集和变换就可以处理。
f[k][s]表示s集合形成k个联通块的方案数,先dp出f[1]。
s联通的方案就是总方案数减去不连通的方案,枚举定点所在的联通块来转移就可以了。(我都可以想象到llj说”这不是弱智套路题吗?“时看智障的表情了,真是菜得抠脚)
这里每个集合选择的定点是lowbit。
然后dp出f[2~k],方法类似,对每个集合固定最后一个联通块是lowbit所在的联通块来转移。
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=,p=;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,k,pr[N],f[][],c[],ans; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} LL mo(LL x) { return x<?x+p:(x>=p?x-p:x); } #define ANS
int main() {
#ifdef ANS
freopen("nanjing.in","r",stdin);
freopen("nanjing.out","w",stdout);
#endif
pr[]=;
For(i,,) pr[i]=(LL)pr[i-]*%p;
read(n); read(m); read(k);
For(i,,m) {
int x,y;
read(x); read(y);
c[pr[x-]+pr[y-]]++;
}
int up=pr[n]-;
For(i,,n) For(s,,up) if(s&pr[i-])
c[s]=mo((LL)c[s]+c[s^pr[i-]]);
For(s,,up) {
int S=((s-)&s);
LL t=;
for(int ss=S;ss;ss=((ss-)&S))
t=mo(t+(LL)f[][s^ss]*pr[c[ss]]%p);
f[][s]=mo(pr[c[s]]-t);
}
For(t,,k) For(s,,up) {
int S=((s-)&s);
for(int ss=S;ss;ss=((ss-)&S)) {
f[t][s]=mo((LL)f[t][s]+(LL)f[t-][ss]*f[][s^ss]%p);
}
}
printf("%d\n",f[k][up]);
Formylove;
}
NOIp2018集训test-10-17 (bike day3)的更多相关文章
- [NOIP2018模拟赛10.20A]挂分报告
闲扯 先看看了B组,T1 ZROI刚好讲过一个性质原根一般很小的,直接枚举;T2一眼二分然后似乎状压 T3没看 然后上来A组题,T1 flow这名字...网络流?! T1题面非常的社会主义核心价值观, ...
- 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)
[源码下载] 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果) 作者:webabcd 介绍背水一战 Windows 10 之 动画 ThemeTrans ...
- 发现struct proc_dir_entry内核3.10.17移到internal中去了,倒
struct proc_dir_entry 原:2.6.38.8 在#include <linux/proc_fs.h> 现:3.10.17 在fs/proc/internal.h:str ...
- Windows 8.1 正式版微软官方原版镜像下载(新增10/17新版下载)
中文版:中国区OEM预装版本,特定国家版,锁定语言,其它功能和核心版没有区别.简体中文单语言版:锁定语言,其它功能和核心版没有区别.专业版+核心版[零售版][推荐]:镜像内包含专业版(Professi ...
- Dell Technology Summit(2018.10.17)
时间:2018.10.17地点:北京国家会议中心
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- WIN8.1 PRO RTM VOL.Enterprise.2013.10.17
Windows 8.1 Pro VL (x64) - DVD (Chinese-Simplified)ISO|Chinese - Simplified|发布日期: 2013/10/17文件名: cn_ ...
- [NOIP2018模拟赛10.16]手残报告
[NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...
- 2020.10.17 JZOJ 提高B组T2 导弹拦截
2020.10.17 JZOJ 提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统. 敌国的导弹形成了立体打击,每个导弹可以抽象成一个三维空间中的 ...
随机推荐
- "活在未来" VS “活在当下”(通向财富自由学习笔记六)
之前读过一些灵修类的书籍,<遇见未知的自己>.<当下的力量>等都在告诉我们活在当下很重要,这里笑来老师提出了一个问题,是活在当下重要呢?还是活在未来?,笑来老师给出了很好的答案 ...
- BI测试
BI概念: 商业智能(Business Intelligence 简称BI),指数据仓库相关技术与应用的通称.指利用各种智能技术,来提升企业的商业竞争力.是帮助企业更好地利用数据提高决策质量的技术,包 ...
- jvm的字符串池
1 jvm中是有专门的字符串池的内存空间的,这块空间和栈和堆不同. 2 String s = "string constant"; 这个时候,如果string pool中没有&qu ...
- apache虚拟主机配置: 设置二级目录访问跳转
<VirtualHost *:> DocumentRoot "d:/www/abc" ServerName www.abc.com Alias /course &quo ...
- Python菜鸟之路:JQuery基础
前言 JQuery可以理解为是一个模块,里边封装了DOM以及JavaScript,可以方便的对JQuery对象进行操作. 版本 尽量选择1.X系统的Jquery版本,例如1.12.jquery.js. ...
- table表格用tbody新属性获取DOM元素
// alert(oTab.getElementsByTagName("tbody")[0] // .getElementsByTagName('tr')[1] // .getEl ...
- Adam 算法
简介 Adam 是一种可以替代传统随机梯度下降(SGD)过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重.Adam 最开始是由 OpenAI 的 Diederik Kingma 和多伦多大学 ...
- 查看当前.net版本 cmd
reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i ver ...
- vs+opencv
vs + opencv 配置见网页 https://blog.csdn.net/qq_17550379/article/details/78201442 统一所有工程配置见下图:
- html post
post请求对应的html页面 页面效果 html代码 <html> <body> <form method="post" > First na ...