2019/11/8 CSP模拟
T1 药品实验
内网#4803
由概率定义,有$$a + b + c = 0$$
变形得到$$1 - b = a + c$$
根据题意有$$p_i = a p {i - 1} + b p_i + c p{i + 1}$$
\]
\]
\]
仔细观察一下发现这对于任何\(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\),由等比数列求和公式得到
\]
\]
\(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模拟的更多相关文章
- 2019/11/12 CSP模拟赛&&考前小总结
写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...
- 2019/11/1 CSP模拟
写在前面的反思 该拿的部分分还是得拿完啊,因为懒+动作慢没有写最后一道题的菊花图和链的情况,其实这两个点并不难.. 虽然只有\(10pts\),但是已经足够往上爬一截了啊,额外的\(10pts\)在今 ...
- 2019/10/17 CSP模拟 总结
T1 补票 Ticket 没什么好说的,不讲了 T2 删数字 Number 很后悔的是其实考场上不仅想出了正解的方程,甚至连优化都想到了,却因为码力不足只打了\(O(n^2)\)暴力,甚至还因为细节挂 ...
- 2019.11.9 csp-s 考前模拟
2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...
- 『2019/4/9 TGDay2模拟赛 反思与总结』
2019/4/9 TGDay2模拟赛 今天是\(TG\)模拟赛的第二天了,试题难度也是相应地增加了一些,老师也说过,这就是提高组的难度了.刚开始学难的内容,一道正解也没想出来,不过基本的思路也都是对了 ...
- 『2019/4/8 TGDay1模拟赛 反思与总结』
2019/4/8 TGDay1模拟赛 这次是和高一的学长学姐们一起参加的\(TG\)模拟考,虽然说是\(Day1\),但是难度还是很大的,感觉比\(18\)年的\(Day1\)难多了. 还是看一下试题 ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...
- 11/1 NOIP 模拟赛
11.1 NOIP 模拟赛 期望得分:50:实际得分:50: 思路:暴力枚举 + 快速幂 #include <algorithm> #include <cstring> #in ...
- 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( ...
随机推荐
- leetcood学习笔记-26-删除排序数组中的重复项
题目描述: 第一次提交: class Solution: def removeDuplicates(self, nums) -> int: for i in range(len(nums)-1, ...
- Delphi 实现简易语音发音(基于TTS方式)
uses Comobj; procedure TForm1.Button1Click(Sender: TObject); var voice: OLEVariant; begin voice := C ...
- python 模块-json
1.JSON(Javascript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Lan ...
- windows10安装sqlmap与简单配置
一.获取sqlmap压缩包: 注意:安装sqlmap之前,先确认已有python2.x环境 获取sqlmap压缩包并解压 下载地址:http://sqlmap.org/ 二.将解压缩的文件放在pyth ...
- 带头结点的双向循环链表----------C语言
/***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...
- Dynamic partition strict mode requires at least one static partition column.
https://blog.csdn.net/huobumingbai1234/article/details/81099856
- myeclipse 启动卡住的解决办法
myeclipse 启动卡住的解决办法 今天启动myeclipse突然卡住,CPU一直占用,启动任务管理器强制关闭.重启myeclipse,重启电脑都不能够解决. 上网查找,在工程路径(工作空间的路径 ...
- JAVA学习之数组
一.数组定义同一种类型数据的集合,其实数组就是一个容器数组定义格式:1.数据类型[] 变量名 = new 数据类型[数组长度] int[] arr = new int[5]; 2.数据类型[] 数组名 ...
- 关于Unity中文件读取
存储: 在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包中(*.unity3D),第二种就是把文件存放在一个特殊的目录如:StreamingAssets,这个目录的东西Unity不会打包 ...
- 剑指offer——74求1+2+3+n
题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 题解: 利用类的构造和析构 //利用类的构 ...