传送门

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. moco响应中文乱码

    moco版本为:moco-runner-standalone-0.11.1.jar 在一次使用moco框架的时候,浏览器查看响应时,发现返回来的中文是乱码. 按照网上的操作,在响应结果中加上heade ...

  2. Uva1014:Remember the Word

    Neal is very curious about combinatorial problems, and now here comes a problem about words. Knowing ...

  3. Java服务端两个常见的并发错误

    理想情况来讲,开发在开始编写代码之前就应该讲并发情况考虑进去,但是大多数实际情况确是,开发压根不会考虑高并发情况下的业务问题.主要原因还是因为业务极难遇到高并发的情况. 下面列举两个比较常见的后端编码 ...

  4. selenium,xpath路径中引入变量

    比如,我需要获取每一条微博的阅读数,总不可能所有微博都找出xpath,然后获取阅读数 找规律 “//*[@id='Pl_Official_MyProfileFeed__20']/div/div[2]/ ...

  5. 富文本编辑器、全文检索和django发送邮件

    1.富文本编辑器 1.1快速了解 借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的.所见即所得的页面.此处以tinymce为例,其它富文本编辑器的使用也是类似的. 在虚拟环境中 ...

  6. 工具之sort

    转自:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参 ...

  7. 拓扑排序(基于dfs+基于队列)

    经典问题-Ordering Tasks dfs函数的返回值表示是否成环,若存在有向环,则不存在拓扑排序.不包含有向环的有向图称为有向无环图(DAG) 可以借助DFS完成拓扑排序,在访问完一个结点时把他 ...

  8. k8s基本命令

    kubernetes 常用命令 通过yaml文件创建: kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete) kubectl apply -f xxx.y ...

  9. python笔记15

    今日内容 模块知识 内置模块 time datetime json 其他 内容回顾 & 作业题 重要知识点 构造字典和函数对应关系,避免重复的if else a=1 b=2 ==> a, ...

  10. ROS和Gazebo进行机器人仿真(二)

    一.在Gazebo中使用ROS控制器 在本节中,我们将讨论如何在Gazebo中让机器人的每个关节运动. 为了让关节动起来,我们需要分配一个ROS控制器,尤其是,我们需要为每个关节连上一个与transm ...