链接:https://www.nowcoder.com/acm/contest/205#question

一场题面非常 有趣 但是题目非常 不友好的比赛

QAQ

L.数论之神   思维(?)

题意:求对给定的n,中有多少个不同的数,并且这些不同的数中第k大的是多少

思路:打表找了找规律(感觉自己天天都在找规律。。),对于不同的n,不同的结果中,≤sqrt(n)的一定都有,剩下的直接除就ok了

整数除法:https://blog.csdn.net/qq_39792342/article/details/82783100

艾玛说不明白话,还是适合直接找规律(哭

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
LL n, k, sq, cnt;
scanf("%lld%lld", &n, &k);
sq = (LL)sqrt(double(n));
if(n < sq*(sq+)) cnt = sq+sq-;
else cnt = sq+sq;
printf("%lld ", cnt);
if(k <= cnt-sq) printf("%lld\n", n/k);
else printf("%lld\n", cnt+-k);
}
}

G.贵族用户   暴力嘤嘤嘤

勾起了我一年前玩奇迹暖暖养女儿的回忆QAQ (女儿你还好吗~~

题意:花x元获得10x个钻石,ai个钻石可以使得原价为di的服装价格变为,要买ci件价格为di的衣服,问最少氪多少钱

思路:暴力枚举得到每一档的打折,求最少的钱数

注意1.可能不氪金反而更便宜

2.享受pi折扣的时候,要保证氪的钻石>=a[i],因此所需的钻石是max(钻石, a[i])

3.向上取整的时候可以,比如除以100然后向上取整 -> (x+99)/100

4.好坑啊好坑啊

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
int c[], d[], a[], p[];
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int m, k;
scanf("%d%d", &m, &k);
for(int i = ; i < m; i++)
scanf("%d%d", &a[i], &p[i]);
int sum = ;
for(int i = ; i < k; i++)
scanf("%d%d", &c[i], &d[i]), sum += c[i]*d[i];
int ans = , ans_novip = sum;
for(int i = ; i < m; i++)
{
int sum_vip = ;
for(int j = ; j < k; j++)
sum_vip += (d[j] * (-p[i]) + ) / * c[j];
sum_vip = min(max(sum_vip, a[i]), ans_novip);
ans = min(ans, sum_vip);
}
printf("%d\n", (ans+)/);
}
return ;
}

B.电音之王   快速乘操作666

题意:已知a0,a1,m0,m1,c,定义an=m0an-1+m1an-2+c (n≥ 2)

,(保证

思路:直接暴力是O(10^8)的,又有模运算,so 优化叭

太高级了。。。64位模,板子收下了orz

#include <iostream>
#include <cstdio>
#include <cassert>
#include <cmath>
using i64 = long long;
using u64 = unsigned long long;
using u128 = __uint128_t;
struct Mod64
{
Mod64() : n_() {}
Mod64(u64 n) : n_(init(n)) {}
static u64 modulus() { return mod; }
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 i64(y) < ? y + mod : y;
}
Mod64 &operator+=(Mod64 rhs)
{
n_ += rhs.n_ - mod;
if (i64(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; inline u64 mod128_64_small(u128 a, u64 b)
{
u64 q, r;
__asm__(
"divq\t%4"
: "=a"(q), "=d"(r)
: ""(u64(a)), ""(u64(a >> )), "rm"(b));
return r;
} u64 fact_mod_fast(int N, u64 mod)
{
Mod64::set_mod(mod);
Mod64 ret = Mod64(), one = ret, t = one;
for (int i = ; i <= N; ++i)
{
ret *= t;
t += one;
}
return ret.get();
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
u64 a0_, a1_, m0_, m1_, c_, M, k;
scanf("%llu%llu%llu%llu%llu%llu%llu", &a0_, &a1_, &m0_, &m1_, &c_, &M, &k);
Mod64 :: set_mod(M);
Mod64 a0 = Mod64(a0_);
Mod64 a1 = Mod64(a1_);
Mod64 m0 = Mod64(m0_);
Mod64 m1 = Mod64(m1_);
Mod64 c = Mod64(c_);
Mod64 ans = a0*a1;
Mod64 a2;
for(int i = ; i <= k; i++)
{
a2 = m0*a1+m1*a0+c;
ans = ans * a2;
a0 = a1;
a1 = a2;
}
printf("%llu\n", ans.get());
}
}

快速乘的模板↓

LL multi(LL x,LL y,LL mod)
{
LL tmp = (x * y - (LL)((long double) x / mod * y + 1.0e-8) * mod);
return tmp < ? tmp+mod : tmp;//x*y%mod
}

国庆集训 || Wannafly Day4的更多相关文章

  1. 牛客国庆集训派对Day4.B.异或求和(按位统计)

    题目链接 刷牛客一战到底做到的,感觉还挺有趣... \(Description\) 求给定\(n\)及序列\(A_i\),求\[\sum_{i\lt j\lt k}(A_i\oplus A_j)(A_ ...

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

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

  3. 牛客国庆集训派对Day4 J-寻找复读机

    链接:https://www.nowcoder.com/acm/contest/204/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  4. 牛客国庆集训派对Day4 I-连通块计数(思维,组合数学)

    链接:https://www.nowcoder.com/acm/contest/204/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...

  5. 牛客网国庆集训派对Day4题目 2018年

    链接:https://www.nowcoder.com/acm/contest/204/A来源:牛客网 深度学习 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他 ...

  6. 国庆集训 || Wannafly Day1

    网址:https://www.nowcoder.com/acm/contest/201#question A.签到 手速石头剪刀布 #include <cstdio> #include & ...

  7. 2018 牛客国庆集训派对Day4 - H 树链博弈

    链接:https://ac.nowcoder.com/acm/contest/204/H来源:牛客网 题目描述 给定一棵 n 个点的树,其中 1 号结点是根,每个结点要么是黑色要么是白色 现在小 Bo ...

  8. 线性基求交(2019牛客国庆集训派对day4)

    题意:https://ac.nowcoder.com/acm/contest/1109/C 问你有几个x满足A,B集合都能XOR出x. 思路: 就是线性基求交后,有几个基就是2^几次方. #defin ...

  9. 8.7 正睿暑期集训营 Day4

    目录 2018.8.7 正睿暑期集训营 Day4 A 世界杯(贪心) B 数组(线段树) C 淘汰赛 考试代码 A B C 2018.8.7 正睿暑期集训营 Day4 时间:5h(实际) 期望得分:. ...

随机推荐

  1. QRegExp解析

    正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征.比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ...

  2. POJ3020【二分匹配】

    思路: ---说给自己 一开始想的是从1-h*w标记整幅图,建图是星号和 {他,与他相连的星号} 建边,肯定要去匹配"*"啊,所以空格一定不会去造,然后就理解成了最小点覆盖,然而对 ...

  3. Mecanim动画系统 - 在角色上使用Mask 叠加动画层

    http://www.narkii.com/club/thread-305706-1.html 2013-10-9 01:15 上传 下载附件 (78.65 KB) 导读:五分钟了解Mecanim角色 ...

  4. Visual Studio 调试卡顿的解决方法

    将不用的断点删除 关闭调试时打开的"IntelliXXX的窗口" 上面的第2条测试有效! https://social.msdn.microsoft.com/Forums/zh-C ...

  5. 一文解析总结Java虚拟机内存区域模型

    最近抽空看了一点<深入理解Java虚拟机>,本篇文章主要来总结一下Java虚拟机内存的各个区域,以及这些区域的作用.服务对象以及其中可能产生的问题,作为大家的面试宝典. 首先我们来看一下J ...

  6. Window 10 Alt Tap 切换窗口,设置成Windows 7风格

    升级了Windows 10 以后,切换窗口非常的难受.新版的窗口切换的图标变成了窗口预览了,这总让我一瞬间找不到要去的窗口,所以我打算切换成Windows 7 的小图标风格. Windows + R ...

  7. SpiderMonkey 入门学习(一)

    spidermonkey 源码下载:http://ftp.mozilla.org/pub/mozilla.org/js/ 测试系统 Ubuntu 12.04, js 1.7.0, js 解压在/opt ...

  8. struts2与struts1的比较

    struts2相对于struts1来说简单了很多,并且功能强大了很多,我们可以从几个方面来看: 从体系结构来看:struts2大量使用拦截器来出来请求,从而允许与业务逻辑控制器 与 servlet-a ...

  9. Python-2-序列及通用序列操作

    序列包括字符串,列表,元祖,序列中的每个元素都有编号,其中只有元祖不能修改   通用序列操作包括索引. 切片. 相加. 相乘和成员资格检查   索引 >>> greeting = ' ...

  10. [題解](最短路)luogu_P2384最短路

    hack: 4 4 1 2 10000 2 3 10000 3 4 10000 1 4 10000 答案:13 不能邊最短路邊取模,因為取模后最大值不一定為原來最大值,所以利用log(m*n)=log ...