【ContestHunter】【弱省胡策】【Round5】
反演+FFT+构造+DP
写了这么多tag,其实我一个也不会
A
第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30分的时候好像挂了,所以并没有拿到……20分滚粗了
最近打暴力搞部分分的时候,写各种情况的判断条件什么的总是出问题……sad……以后还是自己造下数据判一下能不能过吧,不能总是靠人品啊>_>
我还是放弃FFT吧,反正……出来这种题,我也想不到要用FFT & 不会推公式……呵呵哒
//Round5 A
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=,P=;
/*******************template********************/ LL n,b[N],a[N];
LL fac[N],inv[N];
LL Pow(LL a,int b){
LL r=;
for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
return r;
} LL C(int n,int m){
return fac[n]*inv[m]%P*inv[n-m]%P;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
n=getint();
if (n>){
F(i,,n) printf("1 "); puts(""); return ;
}
fac[]=fac[]=; F(i,,n) fac[i]=fac[i-]*i%P;
inv[n]=Pow(fac[n],P-); inv[]=;
D(i,n-,) inv[i]=inv[i+]*(i+)%P; F(i,,n) b[i]=getint();
bool sign=;
F(i,,n) if (b[i]!=C(n+,i+)){sign=; break;}
if (sign){F(i,,n) printf("1 "); puts(""); return ;}
D(i,n,){
F(j,i+,n) b[i]=((b[i]-C(j,i)*a[j]%P)+P)%P;
a[i]=b[i];
}
F(i,,n) printf("%lld ",b[i]); puts("");
return ;
}
B
qmqmqm神犇出的构造题,随便yy一下就可以联想到邻接矩阵,然后k次方后,a[i][j]就是从 i 开始走k步能否走到j。
然而我傻逼地没有特判k=1的情况
事实是:我在想到正解之前看到k=1的点发现这应该直接输出全1矩阵,再小一点的数据可以暴力枚举初始矩阵,然而……后来就没再像这种边界情况,真是作死。95分滚粗了
//Round5 B
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=;
/*******************template********************/ int n,k;
struct Matrix{
bool c[N][N];
bool* operator [] (int x){return c[x];}
Matrix(){memset(c,,sizeof c);}
void print(){
// F(i,1,n){F(j,1,n) printf("%d ",c[i][j]); puts("");}
F(i,,n){
F(j,,n) printf("%c",c[i][j]+'');
puts("");
}
puts("");
}
}f; Matrix operator * (Matrix a,Matrix b){
Matrix c;
F(i,,n) F(k,,n) F(j,,n)
c[i][j]+=a[i][k]*b[k][j];
return c;
}
Matrix Pow(Matrix a,int b){
Matrix c;
F(i,,n) c[i][i]=;
for(;b;b>>=,a=a*a) if (b&) c=c*a;
return c;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
#endif
n=getint(); k=getint();
if (k==){
F(i,,n){F(j,,n) printf("%c",''); puts("");}
return ;
}
F(i,,n) f[i][i]=; F(i,,k-) f[i][i+]=;
f[k][]=; F(i,k+,n) f[i][]=f[][i]=;
F(i,,n){
F(j,,n) printf("%c",f[i][j]+'');
puts("");
}
/* F(i,0,k){
printf("No. %d\n",i);
Pow(f,i).print();
}*/
return ;
}
C
对我来说神一样的DP,然而并不能找到一种合理的状态表示方式,所以也就搞不出来了……快速幂10分滚粗
//Round5 C
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline int getint(){
int r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=,P=1e9+;
/*******************template********************/ int n,m,k;
LL f[N][N],fac[N],inv[N];
LL Pow(LL a,int b){
LL r=;
for(;b;b>>=,a=a*a%P) if (b&) r=r*a%P;
return r;
}
LL C(int n,int m){return fac[n]*inv[m]*inv[n-m]%P;} int main(){
#ifndef ONLINE_JUDGE
freopen("C.in","r",stdin);
freopen("C.out","w",stdout);
#endif
n=getint(); m=getint(); k=getint();
fac[]=fac[]=;
F(i,,k) fac[i]=fac[i-]*i%P;
inv[k]=Pow(fac[k],P-); inv[]=;
D(i,k,) inv[i-]=inv[i]*i%P; if (n==){printf("%lld\n",Pow(k,m)); return ;}
else{
}
return ;
}
下午去考了信息会考,然后就回来改题……然而什么也不会,心情好糟糕,什么也不想做……整个人都不好了……
o(︶︿︶)o 唉还有35?还是34?天就要NOI了……我还是这么傻逼,没救了,是不是退OI保平安比较好……
【ContestHunter】【弱省胡策】【Round5】的更多相关文章
- 弱省胡策 Magic
弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...
- 【弱省胡策】Round #5 Count
[弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...
- luoguP3769 [CH弱省胡策R2]TATT
luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...
- 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)
DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...
- 【ContestHunter】【弱省胡策】【Round3】(C)
容斥原理+Fib Orz HE的神犇们 蒟蒻只能改出来第三题……实在太弱 官方题解:http://pan.baidu.com/s/1o6MdtQq fib的神奇性质……还有解密a[i]的过程……这里就 ...
- 【ContestHunter】【弱省胡策】【Round2】
官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Roun ...
- 【ContestHunter】【弱省胡策】【Round8】
平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...
- 【ContestHunter】【弱省胡策】【Round7】
Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...
- 【ContestHunter】【弱省胡策】【Round6】
KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...
随机推荐
- 易普优APS混流排序算法助力汽车整车厂的均衡生产
一.汽车整车厂生产排序的难点 “ 冲压-焊接-涂装-总装”是汽车整车生产的四大工艺类型,它们存在上下游关联关系,每个车间都有自己的优化排序目标,汽车混流生产模式使得生产过程更加复杂,从而生产管控的难度 ...
- JS图片滚动代码(无缝、平滑)
非常平滑的JS图片滚动特效代码,无缝循环,速度可自定义,鼠标悬停时停止.它的特点是JS和图片地址分离,这样做你就经易的从数据库动态调用每张图片的地址,方便控制,因此它非常的应用. <!DOCTY ...
- lnmp 一键安装包
系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统 需要5GB以上硬盘剩余空间 需要128MB以上内存(如果为128MB的小内存VPS,Xe ...
- 相等(==)、严格相等(===)、NaN、null、undefined、空和0
(===)如果两个引用值指向同一个对象.数组.或函数,则他们是相等的.如果指向不同的对象,则他们是不相等的,尽管两个对象具有完全一样的属性. (==)如果其中一个值是true,则将其转换为1再进行比较 ...
- win7 fiddler报“Creation of the root certificate was not successful”的问题
cd "C:\Program Files (x86)\Fiddler2" makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_Fiddl ...
- Python并发编程-IO模型-IO多路复用实现SocketServer
Server.py import select import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.setblockin ...
- JFinal 3.3 学习 -- JFinalConfig (配置web项目)
开篇 概述 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置. JFinalConfig子类需要实现六个抽象方法,如下所示: publ ...
- [leetcode sort]148. Sort List
Sort a linked list in O(n log n) time using constant space complexity. 以时间复杂度O(n log n)排序一个链表. 归并排序, ...
- Centos7 如何减少/home分区,扩大/root分区
把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home:tar cvf /tmp/home.tar /home #备份/home umount /hom ...
- 第一章--Go与web应用
Go语言构建web应用的特性 可扩展 可维护 模块化 高性能 HTTP简介 HTTP是一种无状态.由文本构成的请求-响应(request-response)协议,这种协议使用的是客户端-服务器(cli ...