传送门

A - Beginner

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
//freopen("in.txt","r",stdin);
int n,r;
scanf("%d%d",&n,&r);
if(n>=) printf("%d\n",r);
else printf("%d\n",r+*(-n));
return ;
}

A.cpp

B - Digits

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
//freopen("in.txt","r",stdin);
int n,k,ans=;
scanf("%d%d",&n,&k);
while(n) {
n/=k;
ans++;
}
printf("%d\n",ans);
return ;
}

B.cpp

C - Rally

题意:在一条直线上,有N个人,分别在Xi位置上,要求找一点使得N个人到该点的距离平方和最小,并输出距离平方和。

数据范围:$1 \leq N,Xi \leq 100$

题解:暴力枚举每一个1~100每个位置即可。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=;
int a[N];
int main() {
//freopen("in.txt","r",stdin);
int n,ans=1e9;
scanf("%d",&n);
for(int i=,x;i<n;i++) {
scanf("%d",&a[i]);
}
for(int i=;i<=;i++) {
int s=;
for(int j=;j<n;j++) {
s+=(a[j]-i)*(a[j]-i);
}
ans=min(ans,s);
}
printf("%d\n",ans);
return ;
}

C.cpp

D - Bouquet

题意:有n种不同的花,每种一朵,要求至少取1朵但,不能取a朵或b朵花,求能取得方案数(mod 1e9+7)。

数据范围:$2 \leq n \leq 10^{9},1 \leq a < b \leq min(n,2\times 10^{5})$

题解:总方案数-取a朵-取b朵-不取。即为 $2^{n}-C_{n}^{a}-C_{n}^{b}-1$。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int MD=1e9+;
int quick_pow(int x,int y) {
int ans=;
while(y) {
if(y&) ans=1LL*ans*x%MD;
y>>=;
x=1LL*x*x%MD;
}
return ans;
}
void add(int &x,int y) {
x+=y;
if(x>=MD) x-=MD;
if(x<) x+=MD;
}
int main() {
//freopen("in.txt","r",stdin);
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
int ans=quick_pow(,n),s=;
add(ans,-);
for(int i=;i<=b;i++) {
s=1LL*s*(n-i+)%MD,s=1LL*s*quick_pow(i,MD-)%MD;
if(i==a) add(ans,-s);
if(i==b) add(ans,-s);
}
printf("%d\n",ans);
return ;
}

D.cpp

E - Roaming

题意:有n个房间,每个房间初始有一个人,每次移动可将一个人移到另一个房间,求k次移动后n个房间的状态数。

数据范围:$3 \leq n \leq 2\times 10^{5},2 \leq k \leq 10^{9}$

题解:考虑房间人数为0的数量。

1.没有房间的人数为0的移法:把1移到2,然后2~3来回移动k-2次,最后在移回1。

2.有且只有一个房间的人数为0的移法:把1移到其它房间,然后在其它房间任意移动。

3.超过一个房间的人数为0的移法:结合上面两种移法即可。

枚举0的个数i,然后就是将i个人分到n-i的房间的子问题。

即为:$\sum_{0}^{min(k,n-1)}C_{n}^{i}*C_{n-1}^{i}$

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=4e5+;
const int MD=1e9+;
int f[N],inv[N];
int quick_pow(int x,int y) {
int ans=;
while(y) {
if(y&) ans=1LL*ans*x%MD;
y>>=;
x=1LL*x*x%MD;
}
return ans;
}
int C(int n,int m) {
return 1LL*f[n]*inv[m]%MD*inv[n-m]%MD;
}
void add(int &x,int y) {
x+=y;
if(x>=MD) x-=MD;
}
void init() {
f[]=;
for(int i=;i<N;i++) f[i]=1LL*f[i-]*i%MD;
inv[N-]=quick_pow(f[N-],MD-);
for(int i=N-;i>=;i--) inv[i]=1LL*inv[i+]*(i+)%MD;
}
int main() {
//freopen("in.txt","r",stdin);
init();
int n,k,ans=;
scanf("%d%d",&n,&k);
k=min(k,n-);
for(int i=;i<=k;i++) {
add(ans,1LL*C(n,i)*C(n-,i)%MD);
}
printf("%d\n",ans);
return ;
}

E.cpp

F - Modularness

题意:有k个非负整数di,q个查询,每次查询给三个整数n,x,m,构造出一个长度为n的序列,其中:

$a_{0}=x,a_{i}=a_{i-1}+d_{(i-1) \bmod k}$,输出存在多少个下标i(0<=i<n-1)满足$a_{i} \bmod m <a_{i+1}\bmod m$。

数据范围:$1 \leq k,q \leq 5000,0 \leq di,xi \leq 10^{9},2 \leq ni,mi \leq 10^{9}$

题解:总数 - $a_{i} \bmod m =a_{i+1}\bmod m$的数目 - $a_{i} \bmod m >a_{i+1}\bmod m$的数目。

可以先将di对m取模,这样di是一个小于m的数。

1.$a_{i} \bmod m =a_{i+1}\bmod m:di=0$

2.$a_{i} \bmod m >a_{i+1}\bmod m:\left \lfloor \frac{a_{i}}{m} \right \rfloor=\left \lfloor \frac{a_{i+1}}{m} \right \rfloor-1$

1可以很轻易的算出,2等价于$\left \lfloor \frac{a_{n-1}}{m} \right \rfloor - \left \lfloor \frac{a_{0}}{m} \right \rfloor$。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=5e3+;
int d[N],t[N],k,q;
ll cal(int n,int x,int m) {
ll s=;
for(int i=;i<k;i++) {
t[i]=d[i]%m;
if(t[i]==) t[i]=m;
s+=t[i];
}
ll ans=x+s*((n-)/k);
for(int i=;i<(n-)%k;i++) {
ans+=t[i];
}
return n--(ans/m-x/m);
}
int main() {
//freopen("in.txt","r",stdin);
scanf("%d%d",&k,&q);
for(int i=;i<k;i++) {
scanf("%d",&d[i]);
}
for(int i=,n,x,m;i<q;i++) {
scanf("%d%d%d",&n,&x,&m);
printf("%lld\n",cal(n,x,m));
}
return ;
}

F.cpp

AtCoder Beginner Contest 156的更多相关文章

  1. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  2. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  3. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  7. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  8. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  9. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

随机推荐

  1. 【LC_Lesson2】---整数反转练习

    题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 1 ...

  2. 详细解析Redis中的布隆过滤器及其应用

    欢迎关注微信公众号:万猫学社,每周一分享Java技术干货. 什么是布隆过滤器 布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它可以告 ...

  3. Dijkstra求解单源最短路径

    Dijkstra(迪杰斯特拉)单源最短路径算法 Dijkstra思想 Dijkstra是一种求单源最短路径的算法. Dijkstra仅仅适用于非负权图,但是时间复杂度十分优秀. Dijkstra算法主 ...

  4. [bzoj4447] [loj#2010] [Scoi2015] 小凸解密码

    Description 小凸得到了一个密码盘,密码盘被等分成 \(N\) 个扇形,每个扇形上有一个数字(0-9),和一个符号("+"或"*") 密码盘解密的方法 ...

  5. Error:Cannot build artifact 'XXX:war exploded' because it is included into a circular dependency (artifact 'XXXX:war exploded', artifact 'XXX:war exploded') Idea启动项目报错解决方案

    在Idea中使用Maven创建父子工程,第一个Model的那个项目可以很好的运行,在创建一个Model运行时报这个错.原因是tomcat部署了多个Web项目,可能最开始是两个项目的配置文件混用用,最后 ...

  6. 创建dynamics CRM client-side (十四) - Web API

    Xrm.WebApi 是我们做前端开发不可不缺少的内容. Xrm.WebApi 分为online和offline online: 可以实现和服务器的CRUD交互 offline: 多用于mobile ...

  7. GCC编译Win图形程序不显示控制台方法

    用VS编译openCV这些有控制台又有图形显示的程序,如果想隐藏控制台,只需要使用一行代码: #pragma comment( linker, "/subsystem:/"wind ...

  8. lua 中 . 和 : 的区别

    lua 中 . 和 : 的区别 首先在lua中使用":"定义的函数会自动传入一个名为self的变量,这个变量是隐含的,self同c++中的this一样,表示当前对象的指针:而&qu ...

  9. Nginx code 状态码说明

    最近了解下Nginx的Code状态码,在此简单总结下. 先来再回顾一下一个http请求处理流程: 一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B ...

  10. go--->beego框架安装

    beego 安装 1.新建gopath 工程目录 2.在新建的工程目录中执行go get github.com/astaxie/beego 命令 3.再执行go get github.com/beeg ...