FWT代码-BZOJ 4589 Hard Nim

题目:给n个不超过m的素数,求xor和=0的方案数,FWT变换裸题。
题目

2关于F逆元的公式: $inv(2)=(F+1)>>1$
证:$ [(F+1)>>1]*2 \pmod F=F+1 \pmod F =1$

代码:


#include<bits/stdc++.h> 
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
                        For(j,m-1) cout<<a[i][j]<<' ';\
                        cout<<a[i][m]<<endl; \
                        } 
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll F=1000000007LL;
ll iv2=F+1>>1; //Õâ¸ö¼ÆËã˼·ºÃÆÀ 
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
inline int read()
{
    int x=0,f=1; char ch=getchar();
    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
    return x*f;
} 
void fwt(int*a,int n){
    int i,j,k,x;
    for(k=2;k<=n;k<<=1){
        for(i=0;i<n;i+=k){
            for(j=i;j<i+(k>>1);j++){
                x=a[j]+a[j+(k>>1)];if(x>=F) x-=F;
                a[j]=a[j]-a[j+(k>>1)];if(a[j]<0) a[j]+=F;
                a[j+(k>>1)]=x;
            }
        }
    }
}
void twf(int*a,int n){
    int i,j,k,x;
    for(k=n;k>=2;k>>=1){
        for(i=0;i<n;i+=k){
            for(j=i;j<i+(k>>1);j++){
                x=a[j]+a[j+(k>>1)];
                a[j+(k>>1)]=(int)(1LL*(a[j+(k>>1)]-a[j]+F)*iv2%F);
                a[j]=(int)(1LL*x*iv2%F);
            }
        }
    }
}
ll pow2(ll a,ll b){
    if (!b) return 1%F;
    ll p=pow2(a,b/2);
    p=mul(p,p);
    if (b&1) p=mul(p,a);
    return p;
}
#define MAXN (50000<<3)
int b[MAXN],a[MAXN];
ll n,m;
int main()
{
//  freopen("bzoj4589.in","r",stdin);
//  freopen(".out","w",stdout);

    n=50000;
    MEM(b) b[1]=b[0]=1;
    Fork(i,2,n) if (!b[i]) {
        for(int j=2;i*j<=n;j++)
            b[i*j]=1;
    }   
    while(cin>>n>>m) {
        int len=1;
        while(len<=m) len<<=1;
        Rep(i,len) a[i]=(!b[i])&&(i<=m);
        fwt(a,len);
        Rep(i,len) a[i]=pow2(a[i],n);
        twf(a,len);
        printf("%d\n",a[0]);
    }

    return 0;
}
Posted in FWT

BZOJ 水题50乱做

[TOC] 1051: [HAOI2006]受欢迎的牛
显然受欢迎的牛一定在一个强连通分量里,缩点后看看有没有出度为0的点,如果有多个那么无解
4690: Never Wait for Weights
加权并查集
1269: [AHOI2006]文本编辑器editor
rope的使用方法http://blog.csdn.net/iamzky/article/details/38348653
1031: [JSOI2007]字符加密Cipher
后缀数组裸题
3238: [Ahoi2013]差异
后缀数组裸题
1041: [HAOI2008]圆上的整点
数学题,求\(a^2+b^2=c^2\)(c已知),a,b的正整数解个数
http://blog.csdn.net/csyzcyj/article/details/10044629
1014: [JSOI2008]火星人prefix
splay+hash+二分
1069: [SCOI2007]最大土地面积
平面土地上有N个点,选择其中的四个点,求围成的多边形最大面积。
n<=2000
求凸包,O(n^2)枚举对角线,两侧的点有决策单调性,用一个指针O(1)求
1090: [SCOI2003]字符串折叠
区间dp
3998: [TJOI2015]弦论
SAM


1066: [SCOI2007]蜥蜴
网络流,拆点
1015: [JSOI2008]星球大战starwar
倒着并查集
4443: [Scoi2015]小凸玩矩阵
网络流,动态加边/二分都行
1067: [SCOI2007]降雨量
线段树/RMQ都行,要分类讨论
1042: [HAOI2008]硬币购物
我们先算出不考虑限制时的方案数\(f_s\),如果一个硬币超出限制,那么至少要使用\(d_i+1\)次,此时答案为\(f_{s-c_i*(d_i+1)}\),我们可以用容斥定理解决问题
2298: [HAOI2011]problem a
考虑一个人的话:“有ai个人分数比我高,bi个人分数比我低”等价于“我的排名在\([L,R]\)区间中,这个区间中人的成绩相同“,然后就可以变成线段覆盖问题,贪心即可。
4653: [Noi2016]区间
将区间按长度排序,枚举最长区间长度,显然最短区间长度满足单调性,只需要确认“m个区间共同包含至少一个位置”,用线段树维护最大值即可。
1192: [HNOI2006]鬼谷子的钱袋
k个钱袋最多能凑出\(2^k-1\)的所有钱数
1800: [Ahoi2009]fly 飞行棋
暴力。
1856: [Scoi2010]字符串
回顾卡特兰数的推导过程,发现\(ans=C(n+m,n)-C(n+m,n+1)\)


1801: [Ahoi2009]chess 中国象棋
炮的攻击范围为,横行竖行,跳过一个棋子打一个,距离不限
故原题为求\(n*m\)的矩阵中同行同列只能放至多2个炮的方案数
\(f_{i,j,k}\)表示到第i行,j列放了一个,k列放了2个的方案数
4641: 基因改造
在允许置换的情况下kmp是可以的,hash应该也行
我觉得我应该改改KMP的模板了。。
4602: [Sdoi2016]齿轮
dfs走一遍
3926: [Zjoi2015]诸神眷顾的幻想乡
由于叶子节点不超过20个,所以可以用SAM。
注意拷贝叶子节点时只拷贝c个节点不然会TLE.
4627: [BeiJing2016]回转寿司
线段树裸题
4619: [Wf2016]Swap Space
贪心,证明看得不是很懂
http://www.cnblogs.com/gangding/p/5705400.html
1016: [JSOI2008]最小生成树计数
回忆Kruskal的建立方法,显然每个长度后图的连通性是一定的,具有相同权值的边不会超过10条,dfs就行。
1061: [Noi2008]志愿者招募
经典的问题
https://www.byvoid.com/blog/noi-2008-employee/
3295: [Cqoi2011]动态逆序对
cdq,三维偏序(白书原题)
3996: [TJOI2015]线性代数
经过一堆变形我们发现\(ans=\sum_{i=1}^{n}\sum_{j=1}^{n} B_{i,j}a_i a_j-\sum_{i=1}^nC_ia_i\)
我们把这转化为最大权闭合子图最小割
答案=所有点正权值之和-最小割
3875: [Ahoi2014]骑士游戏
令f_i为杀死i的最小代价,那么有\(f_i=min(K_i,\sum_v{f_{v_i}})\)
状态之前的转移有环,我们考虑《SPFA算法的优化及应用》中提到的算法


3997: [TJOI2015]组合数学
安利Dilworth定理:http://blog.csdn.net/popoqqq/article/details/45171469
4448: [Scoi2015]情报传递
询问离线,树链剖分
1070: [SCOI2007]修车
费用流经典模型
http://www.cnblogs.com/Sky-Grey/p/3862019.html
4418: [Shoi2013]扇形面积并
扫描线,用树状数组+二分判断
1406: [AHOI2007]密码箱
\(x^2=1 \mod n\)等价于\(n|(x-1)(x+1)\)然后暴力枚举因子就行
1038: [ZJOI2008]瞭望塔
半平面交,把分段点(包括边界)取出来
2618: [Cqoi2006]凸多边形
拆成一堆直线半平面交
4517: [Sdoi2016]排列计数
错排公式\(D(0)=1,D(1)=0,D(i)=(i-1)(D(i-1)+D(i-2))\)
有个求一段阶乘的逆元的小技巧

for(inv[n]=pow2(fact[n],F-2,F),i=n-1;i;i--)
        inv[i]=mul(inv[i+1],i+1);

4516: [Sdoi2016]生成魔咒
1.裸sam+map
2.求出反序后字符串的SA,每次添加一个字符串,考虑其对height前后字符串的影响
4514: [Sdoi2016]数字配对
我们发现两个数能配对,则它们分解质因子后的数的个数奇偶性不同,我们可以建出二分图,费用流乱搞


2243: [SDOI2011]染色
树链刨分,把情况转成子节点到父节点的两条链会比较好讨论
3531: [Sdoi2014]旅行
树链剖分,拆成n棵树。记得动态开点减少结点数
3631: [JLOI2014]松鼠的新家
对于加法操作差分,将对链的操作转换为点始末节点的操作,避免后效性,在子节点\(s_i\)+1表示从它开始到根节点均+1,最后统计一遍就行
4034: [HAOI2015]T2
树链剖分时,可用dfs序剖分

void dfs(int x,int fa,int tp){
        top[x]=tp; id[x]=++cnt;
        if (son[x]) dfs(son[x],x,tp);
        Forp(x)
        {
            int v=edge[p];
            if (v==fa||v==son[x]) continue;
            dfs(v,x,v);
        }   
        mx[x]=cnt;
    }

3626: [LNOI2014]LCA
操作离线,然后

后加每个点的时候是把从这个点到根的路径的点权全部+1
然后查询就是查询某个点到根的路径的点权和

1191: [HNOI2006]超级英雄Hero
二分图匹配
1143: [CTSC2008]祭祀river
用floyd求传递闭包,建图,原题求最长反链=最小链覆盖
证明:http://www.bubuko.com/infodetail-664202.html
路径不能相交的最小路径覆盖可以用二分图做
路径可以相交的最小路径覆盖(也就是最小链覆盖)可以用floyd求传递闭包建图,转成前面那个用二分图做
2227: [Zjoi2011]看电影(movie)
公式题:ans=(k+1)^(n-1)*(k-n+1)/k^n
神一般的证明:http://www.cnblogs.com/devilpi/articles/3817691.html
1179: [Apio2009]Atm
tarjen缩点+跑一遍dij
4419: [Shoi2013]发微博
用户没有传递性(SB读错题),只有直接关系能看到信息
差分后得到,\(ans_i=t2-t1+t3-t4+...+t_n-t_{n-1}\)暴力维护

埃及卢克索wf游记

Day -1:

托渡渡鸟的福,成功获得了取luxor旅游的机会。本来应该去年就能去了,结果遇到了战争又又又推迟了,多灾多难的一天。。。。

做动车来到了广东省,看到ddd它们还在泡澡。。最后直到机场才会和。

在广州火车站到机场的路上做的ingress mission

到埃及开罗转Luxor的时候发现自己机票不是连买的,来不及取托运行李了。。结果行李·就落在开罗到Luxor的时候就剩包了。。我就不应该托运行李。。。

到了Luxor以后和xjtu的人聊天,还有2个人没到。。老师不来了。。。还在想我行李的事。之后和jc,jiangly,等等人聚会。。。午餐是华为请的。。

晚上去华为那里研究如何拿回行李。。

晚上睡过了差点没赶上晚餐。。

这里酒店晚餐很丰盛 差点错过

晚上和dls等人进行了热烈友好的交流 就icpc发展,和算法竞赛培训交换了意见。着重讨论了如何帮助选手进步,如何减小弱校强校之前的差距之类的问题。

Day 0:

今天去报到。,。。上午又来一个·人取拍照。。下午估计还要再来一个人。。

下午

运动会集训

最近--开始了运动会的集训--(有生之年最后一次高中运动会………………の集训)

好吧,这不是重点。。。

说一下这2天的题目:

Day 1:

Relation:

CoderCup 2015 游记

:-O 我果然还是没忍住写了这篇游记

以下内容均为黑历史,大家忘掉即可。

话说2015年暑假,在经历过延后1月放假,和提早一周开学集训(请允许我做个悲伤の表情)后,突然从王冠教练那里得到了这份邀请函。

本着不去白不去的念头(喂!!),我给Prime队报上了名(Flag起)

然后出发前一周突然得知王伟戌缓考马哲没法来!!(事后才知道它没参加考试老师却给了73的事

反正最后把神犇mg拉过来了,一行人浩浩荡荡地杀向北京。

Day -1:

明明和hobo说好提前准备行李,收拾的,可是那天晚上他没把箱子拿来(出发前只打算拿一个箱子登机),结果不得不明天早起拿箱子。

Day 1:

6:00 AM 我做什么虐大早上起来收拾行李各种吵醒同学伤不起。

到了临时据点(hobo的土豪思远社)之后,又被拉回去叫请假条(我真的不想吵醒同学),回来以后简单的吃了M记

艰难的从西安一路辗转北京然后是地铁,到旅馆后发现mg走错地方了,只好在旅馆等他。

然而hobo去人大泡妹子去了,于是我顺便跟去见最强德语系Acmer CCR, 估计是我认识的Oier中专业最猎奇的。。然而人赢

去了以后看到CCR在外语系招生处搭台顺带 和妹子聊天,聊到了xjtu, 之后回去放东西,一边参观人大,一边看到了妹子i,j,k,l,n 这个人赢

之后去食堂吃饭,据说人大20多处食堂,CCR一年未能尝遍一半,想象xjtu满打满算才2个(康桥,梧桐)不禁以泪洗面..

CCR请客,带我去新专修的食堂,他点了份咖喱鸡,我要了份鱼丸(说这个绝对不是tucaoXJTU) ,看来他在人大混得不错。。。和2妹子组队+CF红名(红名改革后失去该成就)人赢

晚上遇见mg,大家一起刷BZOJ水题。。

Day 2:

今天只是去看场地,反正最后只有景琦去。。

我和mg一觉睡到中午,午餐外卖日料,之后水题一下午。。

晚上的时候让景琦带插板回来*(最后他忘了),得知他这一天主要在泡妹子(换了一个)

Day 3:

一大早去了场地,mg拿出了他心爱的HKB神级键盘,由于我不懂VIM只能觉得这个键盘小巧又漂亮。。

开始练习赛,反正未能抢到一血。。

然后我看场地它们出去上厕所成功遇到岛娘(我错过了),之后我也被赶出去了。。

 正赛开始。,。

mg开A题抢一血,中间我们过了水题H,G,然后mg线段树 1小时左右轻松过A

mg发现I题是模板高斯消元开始手速场,然而由于用了景琦提供的错误的sjtu模板不幸被坑,,后来终于AC  2小时

中间我试图过C ,然而看错题, 试图过B 然而OutputLimit exceed

于是我们在接下来卡题模式开启,,我和mg轮流做C,反正最后dp没过。。

没过。。。 

没过。。

(柏拉图说:重要的事情说3遍)

由于在2:30以后基本是我在敲代码,,,我获得【 1个黑锅】

于是就这么结束了,

Cu牌。。

下午,它们领我们去颁奖时都不好意思去,,,(后来才知道不去取消奖项,详见北大,这样就没有路费了的说)

最后mg回宾馆,jq又去报妹子(怎么我身边全是人赢)

我悲伤的在颁奖现场画圈圈。。一个两个。。三个四个。。

值得一提的是当时现场抽了10+次奖,奖品从iwatch到奇奇怪怪手机不等,,考虑到实际到场人数,不得不说获奖概率极高。。

(我旁边有人抽到奖,有人被抽到多次(生日攻击) ) 。。。然而好像还是没我什么事的样子。。

最后啃完了现场送的M记以后拍照走人。。我站在后面应该不会被拍进去??

晚上回到宿舍和mg它们聊天。。

mg和hobo 就 高端烧耳机 》》高端烧键盘?? hobo高端烧外语游戏(我觉得这个还是有希望的。。)mg高端烧各种音游。。(经过尝试得出自己好像没希望)。。

大家都是人赢啊。。人赢啊。。人赢啊。。

我的Ipad的充电线不见了666666

由于第二天mg要去四川成都看女友(都说凡是认识我的都人赢的反向Flag啊。。)

大晚上晕晕昏昏沉沉的睡着了(真”没心没肺)

Day 4:

一大早去了欢乐谷决定放松心情,,决定拍几张照片放微博以试签到)

(然而由于种种原因手机没电了。。我wtf连个照都拍不了装逼失败,,

为了惩罚自己做了2次过山车。。。(要排很长的队) 话说为什么我一点都不害怕(都说没心没肺。。)

Day 5:

今天因为要打长春的·区域赛~网络赛 所以呆在房间。。

然而由于各种原因 景琦跑出去看妹子了(据说没换。。存疑。。)

最后只有我留在房间打,做了1T以后 不得不下去退房。,。。12:00在宾馆门口提着行李箱风中凌乱。。。

都 是 景琦 害得拉。。 (最后那场区域赛网络赛我xjtu一个名额都没有。。这锅他得背)

于是索性去五棵松会见高中时的同桌+死党 王永鑫。。

他高考后跑到HK刷了一堆经验点以后,成功混入中财大。。现在大一。。

我告诉了大二的悲伤生活。。他默默地莞尔一笑。。

中午我们在五棵松附近不知名快餐店见面,,他请了我一份鸡腿饭+豆浆(说好的全聚德呢),我们在五棵松拍照留念发微信。。如果景琦的VPN给力的话我就发到FB上。。

然后我们去钟楼玩耍,,因为搞错地点被Taxi撂在了离钟楼1km Manhattan距离的:钟楼地铁站

话说这钟楼风格的M记怎么和福州三坊七巷那家那么像。。。怎么又是M记

本来想去不过因为门票太贵没去

最后去逛了逛钟楼附近有名的电玩一条街。。

之后王永鑫和他另外2个同学走了

我一边啃冰棍,一边看路上车追尾的时候

被jq一个电话叫去机场,,,让我歇会儿会死你个人赢。。

最后到机场搞到很晚才走。。

本来想拿行程单结果硬是要用寄的,,不知道寄了多久。。

到学校8,9点了发现自己居然来得及去洗洗澡。。

真是充(dao)实(mei)的1 week

全篇完

Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] 题解

A.

There is a polyline going through points (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – ....

We know that the polyline passes through the point (a, b). Find minimum positive value x such that it is true or determine that there is no such x.

题解:所有线的斜率均为\(k=\pm1\)

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define For(i,n) for(int i=1;i< =n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x< <1) #define Rson ((x<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define eps (1e-10) #define F (100000007) typedef long long ll; typedef double ld; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} ld a,b; int main() { // freopen("A.in","r",stdin); // freopen(".out","w",stdout); cin>>a>>b;
if (a

B."Or" Game

已知n个数,执行k次操作:将任意一个数乘x,求最大or和

(1 ≤ n ≤ 200 000, 1 ≤ k ≤ 10, 2 ≤ x ≤ 8).

解法:由于 \(x\geqslant2\) 我们应该将位数最大的那个1挪到尽可能高位,因此,应反复乘同一个数

用线段树预处理区间or和,然后枚举执行操作的数即可

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define For(i,n) for(int i=1;i< =n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x< <1) #define Rson ((x<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define MAXN (200000+10) typedef long long ll; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} ll a[MAXN],x; int n,k; class SegmentTree { ll minv[MAXN*4]; int n; public: SegmentTree(){MEM(minv) } SegmentTree(int _n):n(_n){ MEM(minv) } void mem(int _n) { n=_n; MEM(minv) } void build(int x,int L,int R) { int M=(L+R)>>1;
if (L==R) {minv[x]=a[L];return;}
else
{
if (L< =M) build(Lson,L,M); if (Mql=ql,this->qr=qr;
if (ql>qr) return 0;
return _query_min(1,1,n);
}

ll _query_min(int x,int L,int R)
{
if (ql< =L&&R<=qr) return minv[x]; ll ans=0,M=(L+R)>>1;
if (ql< =M) ans|=_query_min(Lson,L,M); if (M< qr) ans|=_query_min(Rson,M+1,R); return ans; } }S; int main() { // freopen("B.in","r",stdin); // freopen(".out","w",stdout); cin>>n>>k>>x;
For(i,n) scanf("%I64d",&a[i]);
sort(a+1,a+1+n);

S.mem(n);
S.build(1,1,n);

ll e=0;
For(i,n)
{
ll ans=0;
ans|=S.query_min(1,i-1);
ans|=S.query_min(i+1,n);

ll t=a[i];
For(i,k) t*=x;
ans|=t;
e=max(e,ans);
}
cout<

 C .已知序列a1, a2, ..., an (|ai| ≤ 10 000,1 ≤ n ≤ 200 000). 求x,

使序列a1 - x, a2 - x, ..., an - 的子段和的绝对值最小.

解法:二分x,如果最大子段和与最小子段和平均值\(\geqslant 0\),则说明x太大.

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define For(i,n) for(int i=1;i< =n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x< <1) #define Rson ((x<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define eps (1e-8) #define MAXN (200000+10) typedef long long ll; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return (a-b+llabs(a-b)/F*F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} int n; double a[MAXN]; double ans; bool check(double x) { double mins=a[1]-x,maxs=a[1]-x; double t1=0,t2=0; For(i,n) { t1=max(t1+a[i]-x,a[i]-x); maxs=max(maxs,t1); t2=min(t2+a[i]-x,a[i]-x); mins=min(mins,t2); } ans=maxs; return (mins+maxs)/2 <0; } int main() { // freopen("c.in","r",stdin); // freopen(".out","w",stdout); cin>>n;
For(i,n) scanf("%lf",&a[i]);

double l=-2000000000,r=2000000000;
int k=150;
while (k--)
{
double m=(l+r)/2;
if (check(m)) r=m;
else l=m;
}
check((l+r)/2);
printf("%.7lf\n",ans);
return 0;
}

有关PhpMyAdmin,MySQL的学习记录

SELECT * FROM `wp_options` WHERE 1

SELECT `option_id`, `option_name`, `option_value`, `autoload` FROM `wp_options` WHERE 1
INSERT INTO `wp_options`( `option_name`, `option_value`, `autoload`) VALUES (1,2,3)
UPDATE `wp_options` SET `option_id`=[value-1],`option_name`=[value-2],`option_value`=[value-3],`autoload`=[value-4] WHERE 1
UPDATE `wp_options` SET `option_value`=[value-3],`autoload`=[value-4] WHERE 1
WHERE 后为条件
SELECT * FROM `wp_options` WHERE 1
MySQL 关系型数据库
Office Access 管理数据库

主键:
用户 [主:用户ID]
邮箱 [主:邮箱ID]
无主键的表 [用户ID,邮箱ID]

用户 [主:用户ID] ->无主键的表 [用户ID]
邮箱 [主:邮箱ID] ->无主键的表 [邮箱ID]
M方法 :直接把数据库实例化成对象
D方法 :特殊的函数,特殊时间调用
Php : Mysqli

马克飞象 in maxiang.info 语法简要

#x     ##x        ###x        1-3级标题

1.(空格)a

2.(空格)b   有序列表

* a

* b 无序列表

[link](www.baidu.com)   link

``` php

echo 'a';

```    

代码

hellp ` echo 'a' `   单行代码

马克飞象扩展:

1.数学表达式

块:

$$ a+b =1 $$   

行内:

$ a+b = \alpha \beta \delta $

$ \sigma {a^b} ^c _d $

$ \frac{a}{b} \int{adx} $

表格

|aaaa|bbbbb|ccccc|

|:-|:-:|---:|                    左对齐 居中 右对齐 PS这行必须加

|a|b|c|

|a|b|c|

**粗体**

*斜体*

脚注[^demo] 

 

 

部分关于如何在php中使用正则表达式的研究

php:

preg_match ($preg ,$str,$match); 是否匹配到

preg_match_all ($preg ,$str,$match); 匹配数量 $match可以不加

var_dump ( $match );

$preg='\a\'; a为正则表达式

\w 一个字符 \d 一个数字 \s空格回车

\W \D \S 前面取补集

[A-Z] 区间

[^A-Z] 区间取补集

\w|\d |或运算

^x 强制匹配行首

x$ 强制匹配行尾 (最多匹配1次)

\d{4} 匹配连续出现4次 (‘1234’,‘2222’)

\d(i,j) 匹配连续出现i到j次

\d? 0<=k<=1 <-匹配次数 \d+ k>=1

\d* k>=0

\\1 表示本次匹配中第一个出现的()中的内容

*? 匹配尽可能短