AtCoder Regular Contest 077
来源:互联网 发布:txt电子书软件下载 编辑:程序博客网 时间:2024/05/16 08:26
题目:http://arc077.contest.atcoder.jp/assignments
C - pushpush:
题意:你有n个整数,每次向一个空的序列放入一个ai,每次将ai放到序列最后,然后将序列反转,求最后的序列。
思路:规律,列出前几项,规律很明显
(好像也可以用双端队列模拟i)
/*111 22 12 1 33 1 23 1 2 44 2 1 34 2 1 3 55 3 1 2 45 3 1 2 4 66 4 2 1 3 56 4 2 1 3 5 77 5 3 1 2 4 6*/
代码:
#include<bits/stdc++.h>using namespace std;const int N = 200005;int a[N];int main(){ int n; cin >> n; for(int i = 1;i <= n;i++) scanf("%d",&a[i]); if(n&1) { int num = n; while(num > 1) { printf("%d ",a[num]); num -= 2; } printf("%d ",a[1]); num = 2; while(num < n) { printf("%d ",a[num]); num += 2; } } else { int num = n; while(num > 1) { printf("%d ",a[num]); num -= 2; } printf("%d ",a[1]); num = 3; while(num < n) { printf("%d ",a[num]); num += 2; } } printf("\n"); return 0;}/*111 22 12 1 33 1 23 1 2 44 2 1 34 2 1 3 55 3 1 2 45 3 1 2 4 66 4 2 1 3 56 4 2 1 3 5 77 5 3 1 2 4 6*/
D - 11:1 2 3 4 5
题意:给你n+1个整数,这些整数出自1~n,每个数字至少出现一次(即有一个数字重复了一次)。让你求长度为k(为1……n+1)的不同子序列数。
思路:首先考虑不重复,那么结果就是C(n+1,k),但是有重复的啊,重复子序列的无非是由 不含重复数中间的序列 的子序列。设重复数位置为pos1、pos2,那么重复的个数就是C(n+1-(pos2-pos1+1),k-1)。
(我组合数打表炒的 yutaka1999的)
代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MOD = 1e9+7;const int N = 100005;int a[N],pos[N];ll fac[N],inv[N],finv[N];void make(){ fac[0] = fac[1] = 1; finv[0] = finv[1] = 1; inv[1] = 1; for(int i = 2;i < N;i++) { inv[i] = MOD - inv[MOD%i]*(MOD/i) % MOD; fac[i] = fac[i-1]*i%MOD; finv[i] = finv[i-1]*inv[i]%MOD; }}ll C(int a,int b)//C(a,b){ if(a < b) return 0; return fac[a]*(finv[b]*finv[a-b]%MOD)%MOD;}int main(){ make(); memset(pos,-1,sizeof(pos)); int n,pos1,pos2; cin >> n; for(int i = 1;i <= n+1;i++) { scanf("%d",&a[i]); if(pos[a[i]] == -1) pos[a[i]] = i; else { pos1 = pos[a[i]]; pos2 = i; } } int d = pos2 - pos1 + 1; ll ans; for(int k = 1;k <= n+1;k++) { ans = C(n+1,k) - C(n+1-d,k-1); if(ans < 0) ans += MOD; printf("%lld\n",ans); } return 0;}
E - guruguru
好难,暂时不会,待
阅读全文
0 0
- AtCoder Regular Contest 077
- AtCoder Regular Contest 077
- AtCoder Regular Contest 077-C
- AtCoder Regular Contest 077-D
- AtCoder Regular Contest 077 E
- AtCoder Regular Contest 077 E
- AtCoder Regular Contest 078
- AtCoder Regular Contest 079
- Atcoder Regular Contest 084
- AtCoder Regular Contest 086
- AtCoder Regular Contest 068
- AtCoder Regular Contest 088
- atcoder AtCoder Regular Contest 084 D
- AtCoder Regular Contest 063题解
- AtCoder Regular Contest 069 D
- AtCoder Regular Contest 071 F
- AtCoder Regular Contest 073 D
- AtCoder Regular Contest 076 F
- Linux系统编程——进程间通信:命名管道(FIFO)
- Linux eMMC子系统之主机控制器驱动(host conntroller driver)
- 关于Android6.0 百度定位权限问题
- Roguelike核心设计方法
- centos7.2(linux)+spark2.1.0安装
- AtCoder Regular Contest 077
- Python练习13----类似C语言的条件运算符?:
- PM-竞品分析逻辑
- BZOJ 4921: 互质序列 数学 枚举
- Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN
- Camera Model
- Java随笔(6):数据结构+算法(持续更新)
- 使用 Gparted进行虚拟机下ubuntu分区的调整
- html+css