T1 药品实验

内网#4803

由概率定义,有$$a + b + c = 0$$

变形得到$$1 - b = a + c$$

根据题意有$$p_i = a p {i - 1} + b p_i + c p{i + 1}$$

\[\therefore (1 - b) p_i = a p_{i - 1} + c p_{i + 1}
\]

\[\therefore (a + c) p_i = a p_{i - 1} + c p_{i + 1}
\]

\[a(p_i - p_{i - 1}) = c(p_{i + 1} - p_i)
\]

仔细观察一下发现这对于任何\(i\)都适用,也就是说\(p\)序列的差分序列有一些优秀的性质

设\(d\)为\(p\)的差分序列,\(k\)为\(d\)的公比即\(\frac{a}{c}\),那么有$$a* d_i = c * d_{i + 1}$$

即$$\frac{d_{i + 1}}{d_i} = \frac{a}{c}$$

\(d\)是一个等比数列,求\(p_n\)即求\(\sum\limits_{i = 1}^n d_i\),由等比数列求和公式得到

\[p_{2n} = d_1 * \frac{(k^n - 1)(k^n + 1)}{k - 1} = 1
\]

\[p_n = d_1 * \frac{1}{k^n + 1} = p_{2n} * \frac{1}{k^n + 1} = \frac{1}{k^n + 1}
\]

\(O(log(n))\)求快速幂即可

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod = (int)1e9 + 7;
ll n, alpha, beta, a, c, ans;
ll qpow(ll a, ll b) {ll ans = 1; for (; b; b >>= 1) {if (b&1) ans = (a * ans) % mod; a = (a * a) % mod;} return ans % mod;}
int main() {
cin >> n >> alpha >> beta;
a = ((1 - alpha) * beta) % mod, c = alpha * (1 - beta) % mod;
ans = qpow(c, mod - 2) * a % mod; ans = qpow(ans, n) % mod + 1; ans = qpow(ans, mod - 2) % mod;
printf("%lld", ans);
return 0;
}

T2 小猫钓鱼

内网#4804

被自己sb到了,\(s\)没跟着离散化 \(100pts -> 10pts\)

#include<bits/stdc++.h>
#define N (100000 + 10)
using namespace std;
inline int read(){
int cnt = 0, f = 1; char c = getchar();
while (!isdigit(c)) {if (c == '-') f = -f; c = getchar();}
while (isdigit(c)) {cnt = (cnt << 3) + (cnt << 1) + (c ^ 48); c = getchar();}
return cnt * f;
}
int T, n, m, s, l, a[N], b[N], cnt, tot, inq[N], kil[N], r;
deque <int> q[205], q2, t;
void pre_work() {
sort (b + 1, b + cnt + 1);
int q = unique(b + 1, b + cnt + 1) - b - 1;
for (register int i = 1; i <= cnt; ++i) a[i] = lower_bound(b + 1, b + q + 1, a[i]) - b;
s = lower_bound(b + 1, b + q + 1, s) - b;
}
int main() {
// freopen("fishing.in", "r", stdin);
// freopen("fishing.out", "w", stdout);
while (1) {
n = read(), m = read(), l = read(), s = read(), T = read();
tot = n; cnt = 0; r = 0;
if (n == -1) break;
memset(inq, 0, sizeof inq);
for (register int i = 1; i <= n; ++i) while (q[i].size()) q[i].pop_back();
while (q2.size()) q2.pop_back();
while (t.size()) t.pop_back();
for (register int i = 1; i <= n; ++i)
for (register int j = 1; j <= l; ++j) a[++cnt] = b[cnt] = read();
a[++cnt] = b[cnt] = s;
pre_work();
for (register int i = 1; i <= n; ++i)
for (register int j = 1; j <= l; ++j) q[i].push_back(a[(i - 1) * l + j]);
while (T-- && tot > 1) { //every round
++r;
for (register int i = 1; i <= n; ++i) { // every person
if (q[i].empty()) continue;
int cur = q[i].front(); q[i].pop_front();
q2.push_back(cur); ++inq[cur];
if (cur == s && q2.size() > 1) { // if cur is J
while (!q2.empty()) t.push_back(q2.back()), --inq[q2.back()], q2.pop_back();
while (!t.empty()) q[i].push_back(t.back()), t.pop_back();
}
if (inq[cur] > 1 && cur != s && q2.size() > 1) {
while (inq[cur] && q2.size()) //pop from back
t.push_back(q2.back()), --inq[q2.back()], q2.pop_back();
while (!t.empty()) q[i].push_back(t.back()), t.pop_back();
}
if (q[i].empty()) --tot, kil[i] = r;
}
}
for (register int i = 1; i <= n; ++i) printf("%d ", q[i].size() ? q[i].size() : -kil[i]);
puts("");
for (register int i = 1; i <= n; ++i) {
while (q[i].size()) {printf("%d ", b[q[i].front()]); q[i].pop_front();}
puts("");
}
}
return 0;
}

T3

太毒瘤了所以咕了

2019/11/8 CSP模拟的更多相关文章

  1. 2019/11/12 CSP模拟赛&&考前小总结

    写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...

  2. 2019/11/1 CSP模拟

    写在前面的反思 该拿的部分分还是得拿完啊,因为懒+动作慢没有写最后一道题的菊花图和链的情况,其实这两个点并不难.. 虽然只有\(10pts\),但是已经足够往上爬一截了啊,额外的\(10pts\)在今 ...

  3. 2019/10/17 CSP模拟 总结

    T1 补票 Ticket 没什么好说的,不讲了 T2 删数字 Number 很后悔的是其实考场上不仅想出了正解的方程,甚至连优化都想到了,却因为码力不足只打了\(O(n^2)\)暴力,甚至还因为细节挂 ...

  4. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

  5. 『2019/4/9 TGDay2模拟赛 反思与总结』

    2019/4/9 TGDay2模拟赛 今天是\(TG\)模拟赛的第二天了,试题难度也是相应地增加了一些,老师也说过,这就是提高组的难度了.刚开始学难的内容,一道正解也没想出来,不过基本的思路也都是对了 ...

  6. 『2019/4/8 TGDay1模拟赛 反思与总结』

    2019/4/8 TGDay1模拟赛 这次是和高一的学长学姐们一起参加的\(TG\)模拟考,虽然说是\(Day1\),但是难度还是很大的,感觉比\(18\)年的\(Day1\)难多了. 还是看一下试题 ...

  7. 11.7 NOIP模拟赛

    目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...

  8. 11/1 NOIP 模拟赛

    11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...

  9. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

随机推荐

  1. Anaconda配置

    0x00 下载 为了更快的下载,可以到清华开源软件镜像站下载 地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 在此以Anaconda ...

  2. Delphi动态添加控件

    {动态添加导航} var Panl:Tpanel; MainPage,Subpage:TPageControl; TabSheet1: TTabSheet; ToolBar2: TToolBar; S ...

  3. flink详细介绍

    Flink是什么 Flink是一个分布式计算引擎 MapReduce Spark Storm 同时支持流计算和批处理 和Spark不同, Flink是使用流的思想做批, Spark是采用做批的思想做流 ...

  4. 自己写Linux module来收集buddy info

    1 编写代码pslist.c 1: #include<linux/init.h> 2: #include<linux/module.h> 3: #include<linu ...

  5. jQuery中html()再探究(转载)

    我们先来看段代码,很简单,如下: /*html部分*/ <div id="div1"> <span>111</span> <span> ...

  6. JUC源码分析-集合篇(七)PriorityBlockingQueue

    JUC源码分析-集合篇(七)PriorityBlockingQueue PriorityBlockingQueue 是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现. P ...

  7. D题 Robots 【期望】

    Robots Given a directed graph with no loops which starts at node 11 and ends at node nn.There is a r ...

  8. hdu6393 /// 树链剖分

    题目大意: 给定n q 在n个点n条边的图中 进行q次操作 0 k x 为修改第k条边的值为x 1 x y 为查询x到y的最短路 https://blog.csdn.net/nka_kun/artic ...

  9. extend java vm memory parameter in pom.xml

    <project> [...] <build> [...] <plugins> <plugin> <groupId>org.apache.m ...

  10. vue中ref的使用(this.$refs获取为undefined)

    如果你获取到的总是空的,你注意一下: 1.你在哪里调用,和你调用的对象 试试在mounted()里面调用有效果没有 调用的对象是本来就存在的,还是需要数据渲染之后才会出现的,同理,在mounted() ...