A    璀璨光滑

留坑。

B    电音之王

蒙特马利大数乘模运算

 #include <bits/stdc++.h>
using namespace std; typedef long long ll;
typedef unsigned long long u64;
typedef __int128_t i128;
typedef __uint128_t u128; struct Mod64 {
Mod64() :n_() {}
Mod64(u64 n) :n_(init(n)) {}
static u64 init(u64 w) { return reduce(u128(w) * r2); }
static void set_mod(u64 m) {
mod = m; assert(mod & );
inv = m; for (int i = ; i < ; ++i) inv *= - inv * m;
r2 = -u128(m) % m;
}
static u64 reduce(u128 x) {
u64 y = u64(x >> ) - u64((u128(u64(x)*inv)*mod) >> );
return ll(y)< ? y + mod : y;
}
Mod64& operator += (Mod64 rhs) { n_ += rhs.n_ - mod; if (ll(n_)<) n_ += mod; return *this; }
Mod64 operator + (Mod64 rhs) const { return Mod64(*this) += rhs; }
Mod64& operator -= (Mod64 rhs) { n_ -= rhs.n_; if (ll(n_)<) n_ += mod; return *this; }
Mod64 operator - (Mod64 rhs) const { return Mod64(*this) -= rhs; }
Mod64& operator *= (Mod64 rhs) { n_ = reduce(u128(n_)*rhs.n_); return *this; }
Mod64 operator * (Mod64 rhs) const { return Mod64(*this) *= rhs; }
u64 get() const { return reduce(n_); }
static u64 mod, inv, r2;
u64 n_;
}; u64 Mod64::mod, Mod64::inv, Mod64::r2; int t, k;
u64 A0, A1, M0, M1, C, M; void Run()
{
scanf("%d", &t);
while (t--)
{
scanf("%llu%llu%llu%llu%llu%llu%d", &A0, &A1, &M0, &M1, &C, &M, &k);
Mod64::set_mod(M);
Mod64 a0(A0), a1(A1), m0(M0), m1(M1), c(C), ans(), a2();
ans *= a0; ans *= a1;
for (int i = ; i <= k; ++i)
{
a2 = a1;
a1 = m0 * a1 + m1 * a0 + c;
a0 = a2;
ans *= a1;
}
printf("%llu\n", ans.get());
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}

C    萌新拆塔

留坑。

D    奇迹暖婊

留坑。

E    风花雪月

留坑。

F    双倍掉率

留坑。

G    贵族用户

枚举VIP等级,注意精度问题 不要用(1-p * 0.01) 用 (100 - p) * 1.0 / 100

 #include<bits/stdc++.h>

 using namespace std;

 const int maxn = 1e2 + ;

 int m, k;
int a[maxn], p[maxn], c[maxn], d[maxn]; int main()
{
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d %d", &m, &k);
for(int i = ; i <= m; ++i) scanf("%d %d", a + i, p + i);
for(int i = ; i <= k; ++i) scanf("%d %d", c + i, d + i);
int ans = 0x3f3f3f3f;
//for(int i = 1; i <= k; ++i) ans += c[i] * d[i];
for(int i = ; i <= m; ++i)
{
int res = ;
for(int j = ; j <= k; ++j)
{
int tmp = (int)ceil(d[j] * (100.0 - p[i]) / 100.0);
res += tmp * c[j];
}
if(res < a[i]) res = a[i];
ans = min(ans, res);
}
ans = (int)ceil(ans * 0.1);
printf("%d\n", ans);
}
return ;
}

H    我不爱她

留坑。

I    人渣本愿

留坑。

J    友谊巨轮

用线段树维护每个人对其他人的聊天记录,然后取max上去,但是开1e5棵线段树肯定空间爆炸,考虑动态开点,每次最多开logn个结点

 #include <bits/stdc++.h>
using namespace std; #define N 100010
#define ll long long int t, n, m, k;
int root[N], res; struct SEG
{
#define M N * 35
int cnt, lson[M], rson[M];
struct node
{
int tm, pos;
ll Max;
bool operator < (const node &r) const
{
return Max == r.Max ? tm < r.tm : Max < r.Max;
}
}a[M]; void pushup(int id)
{
a[id] = max(a[lson[id]], a[rson[id]]);
} void update(int &root, int l, int r, ll val, int tm, int pos)
{
if (!root)
{
root = ++cnt;
lson[root] = rson[root] = ;
a[root].Max = a[root].tm = a[root].pos = ;
}
if (l == r)
{
a[root].Max += val;
a[root].tm = max(a[root].tm, tm);
a[root].pos = pos;
return;
}
int mid = (l + r) >> ;
if (pos <= mid) update(lson[root], l, mid, val, tm, pos);
else update(rson[root], mid + , r, val, tm, pos);
pushup(root);
}
}segtree; void Init()
{
segtree.cnt = ;
memset(root, , sizeof root);
res = ;
} struct OP
{
int a, b, c, tm;
void scan(int tm)
{
this->tm = tm;
scanf("%d%d%d", &a, &b, &c);
}
}op[N]; void update(int a, int b, int c, int tm)
{
int bef = segtree.a[root[a]].pos;
segtree.update(root[a], , n, c, tm, b);
int now = segtree.a[root[a]].pos;
if (bef == now) return;
if (bef)
{
if (segtree.a[root[bef]].pos == a) ++res;
else --res;
}
if (now)
{
if (segtree.a[root[now]].pos == a) --res;
else ++res;
} } void Run()
{
segtree.a[].tm = ; // 防止取max操作时误把空节点pushup上去
scanf("%d", &t);
while (t--)
{
Init();
scanf("%d%d%d", &n, &k, &m);
for (int i = ; i <= k; ++i)
{
op[i].scan(i);
update(op[i].a, op[i].b, op[i].c, i);
update(op[i].b, op[i].a, op[i].c, i);
if (i > m)
{
update(op[i - m].a, op[i - m].b, -op[i - m].c, i - m);
update(op[i - m].b, op[i - m].a, -op[i - m].c, i - m);
}
printf("%d\n", res);
}
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run();
return ;
}

K    最后战役

留坑。

L    数论之神

两个规律,在代码中。

 #include <bits/stdc++.h>
using namespace std; #define ll long long int T;
ll n, k; int main()
{
scanf("%d", &T);
while (T--)
{
scanf("%lld%lld", &n, &k);
ll t = (ll)sqrt(n);
// cout << t << endl;
ll num = t * (t + ) <= n ? * t : * t - ;
k = num - k + ;
ll K = k <= t ? k : n / (num - k + );
printf("%lld %lld\n", num, K);
}
return ;
}

牛客国庆集训派对Day5 Solution的更多相关文章

  1. 2019牛客国庆集训派对day5

    2019牛客国庆集训派对day5 I.Strange Prime 题意 \(P=1e10+19\),求\(\sum x[i] mod P = 0\)的方案数,其中\(0 \leq x[i] < ...

  2. 牛客国庆集训派对Day2 Solution

    A    矩阵乘法 思路: 1° 牛客机器太快了,暴力能过. #include <bits/stdc++.h> using namespace std; #define N 5000 in ...

  3. 牛客国庆集训派对Day4 Solution

    A    深度学习 puts(n) #include <bits/stdc++.h> using namespace std; int main() { double n; while ( ...

  4. 牛客国庆集训派对Day5 数论之神

    题目描述 终于活成了自己讨厌的样子. 这是她们都还没长大的时候发生的故事.那个时候,栗子米也不需要为了所谓的爱情苦恼. 她们可以在夏日的午后,花大把的时间去研究生活中一些琐碎而有趣的事情,比如数论. ...

  5. 牛客国庆集训派对Day1 Solution

    A    Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...

  6. 牛客国庆集训派对Day3 Solution

    A    Knight 留坑. B    Tree 思路:两次树形DP,但是要考虑0没有逆元 可以用前缀后缀做 #include <bits/stdc++.h> using namespa ...

  7. 牛客国庆集训派对Day6 Solution

    A    Birthday 思路:设置一个源点,一个汇点,每次对$源点对a_i, b_i , a_i 对 b_i 连一条流为1,费用为0的边$ 每个点都再连一条 1, 3, 5, 7, ....的边到 ...

  8. 牛客国庆集训派对Day7 Solution

    A    Relic Discovery 水. #include <bits/stdc++.h> using namespace std; int t, n; int main() { s ...

  9. 牛客国庆集训派对Day5 A.璀璨光滑

    首先我们可以确认 1的值一定是0 题目要求的是 有边的两个点所代表的值二进制有一位不同(即有边相连的两个值二进制所包含的1的个数相差为1) 所以我们通过他给你的图进行BFS 把原图分为一圈一圈的 并且 ...

随机推荐

  1. UIScrollView的用法,属性

    iOS开发学习笔记-UIScrollView的用法 转载地址:http://www.jianshu.com/p/bcaf5cdfaa7e# UIScrollView是用来在屏幕上显示那些在有限区域内放 ...

  2. 在properties.xml中定义变量,在application.xml中取值问题

    如果为application.xml中的变量赋默认值,同时又在properties.xml中变量赋值,而加载后是取不到properties.xml中的值的问题. 解决这个问题需要加上黑体部分配置: & ...

  3. 在map中一个key中存多个值

    一说到map都想到key-value键值队存在.key可以为最多一个null的key. 今天开发中一个业务需求,在map中一个key中存多个对象. 我首先想到Map<String,List> ...

  4. Python 转义字符

    转义字符 说明    \    用在一行的末尾,表示续行符    \r    回车    \n    换行符    \\    打印反斜杠    \'    打印单引号    \"    打 ...

  5. 也谈谈Unity的transform使用

    一.Transform和transform 我们来详谈Unity的transform使用,这里所说的tansform不是类UnityEngine命名空间下的Transform,而是transform. ...

  6. unix:/tmp/php-cgi.sock

    为什么要用unix:/tmp/php-cgi.sock,最主要的特征就是unix socket比tcp快,当网站流量大的时候,服务器的优化是分毫必争的. 当我们用php-fpm来管理我们的php启动时 ...

  7. Mybatis头文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  8. zookeeper-端口说明

    一.zookeeper有三个端口(可以修改) 1.2181 2.3888 3.2888 二.3个端口的作用 1.2181:对cline端提供服务 2.3888:选举leader使用 3.2888:集群 ...

  9. fping命令测试主机存活

    author:headsen  chen date: 2018-10-09 20:11:22 1,测试一个范围内的主机: fping  -a  -g 192.168.1.1 192.168.1.255 ...

  10. CentOS配置bond

    Bonding的模式一共有7种: #defineBOND_MODE_ROUNDROBIN       0   (balance-rr模式)网卡的负载均衡模式 #defineBOND_MODE_ACTI ...