这次太丢人了只搞出来了A到D,那就将就写一写A到D。。。

脑筋急转弯题,不难发现每一次两个人只能染白奇数个格子,所以数数有奇数还是偶数个白格子就行了。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
typedef long long ll;
const int maxn=110;
int n,m;
void solve() {
n=read();m=read();int is=0;
rep(i,1,n) rep(j,1,m) is+=read();
puts((is&1)?"yadang":"xiawa");
}
int main() {
dwn(T,read(),1) solve();
return 0;
}

B 约数和

不难发现b=1*a,c=1*b,即c=1*1*a,这里都是数论卷积。

预处理1*1,然后对于每个修改暴力更改影响的ci,期望每次修改是O(logn)的。

但是这道题卡常数。但是这道题卡常数。但是这道题卡常数。

最后上uoj拿来一份高级IO优化才过2333。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
typedef long long ll;
const int BufferSize=1<<16;
char buffer[BufferSize],*head,*tail;
inline char Getchar() {
if(head==tail) {
int l=fread(buffer,1,BufferSize,stdin);
tail=(head=buffer)+l;
}
return *head++;
}
inline int read() {
int x=0,f=1;char c=Getchar();
for(;!isdigit(c);c=Getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=Getchar()) x=x*10+c-'0';
return x*f;
}
#define S 1200000
char pf[S],*o1=pf,*o2=pf+S;
#define ot(x) (o1==o2?fwrite(pf,1,S,stdout),*(o1=pf)++=x:*o1++=x)
inline void print(ll x){static char s[20],*b;b=s;if(!x)*b++=48;for(;x;*b++=x%10+48,x/=10);for(;b--!=s;ot(*b));}
const int maxn=1000010;
int n,q;
ll B[maxn],ans[maxn];
int main() {
n=read();q=read();
rep(i,1,n) for(int j=i;j<=n;j+=i) B[j]++;
while(q--) {
int t=read(),x=read();
if(t==2) print(ans[x]),ot('\n');
else {
int v=read();
for(int i=x;i<=n;i+=x) ans[i]+=v*B[i/x];
}
}
fwrite(pf,1,o1-pf,stdout);
return 0;
}

C 平均数

明显的01分数规划,二分一下答案然后问题就转化成计算有多少连续子序列和>0,离散一下树状数组算一下就行了。

注意精度问题。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
inline int read() {
int x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
typedef long long ll;
const int maxn=100010;
const double eps=1e-12;
ll k;
int n,A[maxn],C[maxn];
int sumv[maxn];
void add(int x) {for(;x<=n+1;x+=x&-x) sumv[x]++;}
int sum(int x) {int res=0;for(;x;x-=x&-x) res+=sumv[x];return res;}
double B[maxn],tmp[maxn];
ll check(double x) {
memset(sumv,0,sizeof(sumv));
rep(i,1,n) B[i]=(A[i]-x)*1e10;
rep(i,1,n) B[i]+=B[i-1];
rep(i,1,n) tmp[i]=B[i];tmp[n+1]=0.0;
sort(tmp+1,tmp+n+2);
rep(i,1,n+1) if(fabs(tmp[i]-tmp[i-1])<eps) tmp[i]=tmp[i-1];
rep(i,0,n) C[i]=lower_bound(tmp+1,tmp+n+2,B[i])-tmp;
ll ans=0;
rep(i,1,n) {
add(C[i-1]);
ans+=sum(C[i]);
}
return ans;
}
int main() {
n=read();scanf("%lld",&k);
double l=0.0,r=0.0;
rep(i,1,n) r=max(r,(double)(A[i]=read()));
while(r-l>1e-10) {
double mid=(l+r)*0.5;
if(check(mid)>=k) l=mid;
else r=mid;
}
printf("%.6lf\n",l);
return 0;
}

D 小Q的家庭作业

手(da)推(biao)公(da)式(fa)得g(n)=n*d(n),其中d(n)表示n的约数个数。

设n=∏(pi^ci),则d(n)=∏(ci+1)。

然后这个问题就简单了,因为数的范围是[1,10^7],暴力搞搞循环节,线性筛一下最小质因子就行了。

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
using namespace std;
typedef long long ll;
inline ll read() {
ll x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
const int maxn=10000010;
const int mod=1000000007;
int pow(ll n,ll m) {
ll ans=1;
for(;m;m>>=1,(n*=n)%=mod) if(m&1) (ans*=n)%=mod;
return ans;
}
int pri[maxn/10],d[maxn],cnt;
bool vis[maxn];
void init(int n) {
d[1]=1;
rep(i,2,n) {
if(!vis[i]) pri[++cnt]=i,d[i]=i;
rep(j,1,cnt) {
if(i*pri[j]>n) break;
vis[i*pri[j]]=1;
if(i%pri[j]==0) {d[i*pri[j]]=d[i];break;}
d[i*pri[j]]=pri[j];
}
}
}
int x1,a,b,c,k,A[maxn];
ll m;
int main() {
m=read();x1=read();a=read();b=read();c=read();
init(c);A[x1]=1;int x=x1;
ll ans=1;(ans*=x1)%=mod;
do {
k++;
x=((ll)x*a+b)%c+1;A[x]++;(ans*=x)%=mod;
}while(A[x]==1&&k<m-1);
if(k<m-1) {
A[x]--;(ans*=pow(x,mod-2))%=mod;
while(x1!=x) k--,m--,x1=((ll)x1*a+b)%c+1;
ll t=m/k,ct=1;m-=t*k;t--;
do {
(A[x]+=t%mod)%=mod;if(m) A[x]++,m--,(ans*=x)%=mod;
(ct*=x)%=mod;
x=((ll)x*a+b)%c+1;
}while(x!=x1);
(ans*=pow(ct,t))%=mod;
}
dwn(i,c,2) {
if(d[i]==i) (ans*=A[i]+1)%=mod;
else (A[i/d[i]]+=A[i])%=mod,(A[d[i]]+=A[i])%=mod;
}
printf("%lld\n",ans);
return 0;
}

  

51nod算法马拉松14的更多相关文章

  1. 51NOD 算法马拉松8

    题目戳这里:51NOD算法马拉松8 某天晚上kpm在玩OSU!之余让我看一下B题...然后我就被坑进了51Nod... A.还是01串 水题..怎么乱写应该都可以.记个前缀和然后枚举就行了.时间复杂度 ...

  2. 51nod 算法马拉松 34 Problem D 区间求和2 (FFT加速卷积)

    题目链接  51nod 算法马拉松 34  Problem D 在这个题中$2$这个质数比较特殊,所以我们先特判$2$的情况,然后仅考虑大于等于$3$的奇数即可. 首先考虑任意一个点对$(i, j)$ ...

  3. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

  4. 51Nod 算法马拉松21(迎新年)

    这次打算法马拉松是在星期五的晚上,发挥还算正常(废话,剩下的题都不会= =). 讲讲比赛经过吧. 8:00准时发题,拿到之后第一时间开始读. A配对,看上去像是二分图最大权匹配,一看范围吓傻了,先跳过 ...

  5. 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛

    OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了 神奇的故事就开始了: 晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就 ...

  6. 51Nod 算法马拉松23 开黑记

    惨啊……虽然开了半天黑,但是还是被dalao们踩了…… 第二次开黑,还是被卡在rank20了,我好菜啊……= = 写一写比赛经过吧…… 看到题之后习惯性都打开,A~D看上去似乎并没有什么思路,F应该是 ...

  7. 51Nod 算法马拉松22 开黑记

    这是一场惨烈的开黑大战,始于全机房开黑指望刷进rank前十拿钱的壮志,终于被各路神犇怒踩成rank20,差点200点头盾不保的落魄,想起将近一年前ad和zcg等学长挤进rank10的壮举,不由得唏嘘, ...

  8. 51nod算法马拉松 contest7

    A题 链接:http://www.51nod.com/contest/problem.html#!problemId=1417 推荐链接:http://blog.csdn.net/a837199685 ...

  9. 51nod 平均数(马拉松14)

    平均数 alpq654321 (命题人)   基准时间限制:4 秒 空间限制:131072 KB 分值: 80 LYK有一个长度为n的序列a. 他最近在研究平均数. 他甚至想知道所有区间的平均数,但是 ...

随机推荐

  1. GitHub 中国区前 100 名到底是什么样的人?

    本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品<技术人员 ...

  2. 扩展LV

    LVM最大的特性就是可以弹性调整磁盘容量下面扩展一个已经存在的LV [root@ol6--rac1 mnt]# lvdisplay --- Logical volume --- LV Path /de ...

  3. [Spring] 事务级别定义

    记录下来,以后备用 //事务传播属性 @Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个 @Transac ...

  4. World of Warcraft

    一大堆快捷键 鼠标中键:致盲 上滚:闪避 下滚:疾跑 通用:~伺机待发 Q加速 E斗篷 R徽章 T消失 alt+Q脚踢,alt+W毒刃 alt+E亡灵意志 alt+D烟幕弹 alt+F死亡标记 Z天降 ...

  5. scrollTo , scrollBy区别

    View视图中scrollTo 与scrollBy这两个函数的区别 . 首先 ,我们必须明白在Android View视图是没有边界的,Canvas是没有边界的,只不过我们通过绘制特定的View时对 ...

  6. 【MongoDB --番外】错误集合

    1.在第一次安装成功之后,就瞬间发现了如下问题 mongodb无法启动,由于目标计算机积极拒绝,无法连接 解决方法: 这不是mongodb无法启动,是你还没有启动mongodb就来连接使用它了,肯定是 ...

  7. 简单记录在Visual Studio 2013中创建ASP.NET Web API 2

    在很多跨平台的应用中就需要Web API ,比如android与数据库的交互. Create a Web API Project 选择新建项目下的模板下的Visual C#节点下的Web节点,在模板列 ...

  8. 2016.9.13 JavaScript入门之六基础函数

    1.Math.random()函数: 2.math.floor(x)返回小于参数x的最大整数,即对浮点数向下取整. 例如:random本身只产生(0~1)之间的小数,random()*10 意思是产生 ...

  9. POJ 3349 HASH

    题目链接:http://poj.org/problem?id=3349 题意:你可能听说话世界上没有两片相同的雪花,我们定义一个雪花有6个瓣,如果存在有2个雪花相同[雪花是环形的,所以相同可以是旋转过 ...

  10. I Hate It(线段树基础)

    Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...