洛谷 8 月月赛 & 「PMOI」Round · 04
T1 T166167 「PMOI-4」人赢
题目大意
给一个数列的前两项分别为\(n\)和\(m\)
当\(i\geq3\)时\(a_i = a_{i-1}*a_{i-2}\)的个位
给定\(n\),\(m\),\(k\), 求以\(n\)和\(m\)为前两项的数列的第\(k\)项
(数据范围 $0 \leq n,m \leq 9 $ \(1 \leq k \leq 1e12\)
思路
通过观察样例可以发发现 \(n,m\)很小 \(k\)很大 因此这道题肯定是有规律的
通过打表我们可以发现 这个数列从第三项开始 每 六项 重复一次
因此我们可以通过找到数列的前六项来找到第\(k\)个数字是多少
AC_CODE
#include <bits/stdc++.h>
#define x first
#define y second
//#define int long long
#define endl '\n'
using namespace std;
typedef pair<int, int> PII ;
typedef long long LL;
template < typename T >
inline void read(T &x)
{
x = 0; bool f = 0; char ch = getchar();
while(!isdigit(ch)){f ^= !(ch ^ 45);ch=getchar();}
while(isdigit(ch)) x= (x<<1)+(x<<3)+(ch&15),ch=getchar();
x = f ? -x : x;
}
const int N = 2e5 + 10;
int a[N];
void solve() {
int n, k;
read(n), read(k);
LL ans = 0;
for(int i = 1; i <= n; i ++ ) {
read(a[i]);
ans += a[i];
}
sort(a + 1, a + 1 + n);
int res = n - k;
if(res >= 2)
cout << a[(res + 1) / 2] << endl;
else {
if(res == 0) cout << 0 << endl;
else if(res == 1) cout << ans << endl;
}
}
signed main()
{
int T = 1; scanf("%d",&T);
while(T -- ) {
solve();
}
return 0;
}
T2 「PMOI-4」生成树
题意
给定一个数组
a[]
我们每次取出这个数列中的一个数字放入新数组中
当这个数字在新数组中的下标为i
这个数字原本为k
时 其他的数字
加上\(-1^{i+k+1}k\) 求新数组中所有的数字最大的和
思路
我们需要求所有的数字最大的和,基于贪心的思想,我们要让每个数字尽可能的大
当某个数字先选的时候 他会对后面的造成影响,因此我们要让这个影响尽可能的大
可以使后面的数字尽可能的大
由此add
受到下标i
和k
的 奇偶性问题 我们做出以下分析
- 当我们填到第奇数个数字时 我们需要让它对后面的影响为正
-i+k+1
是奇数 且k
是负数
-i+k+1
是偶数 且k
是正数
- \(|k|\) 尽可能的大(对后面的影响更大
- 如果上述两种情况不存在,我们优先去放0
(0对后面无影响
- 如果以上都不存在,我们只能放对后面造成负影响的数字,因此我们让它绝对值尽可能小 - 偶数同上
AC_CODE
#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
#define mk make_pair
#define debug(x) cout<<#x" ----> "<<x<<endl
#define rep(i, b, s) for(int i = (b); i <= (s); ++i)
#define pre(i, b, s) for(int i = (b); i >= (s); --i)
//#define int long long
#define endl '\n'
#define ios ios::sync_with_stdio(false); cin.tie(0), cout.tie(0)
#define all(v) (v).begin(),(v).end()
using namespace std;
typedef unsigned long long ULL;
typedef pair<int, int> PII ;
typedef pair<double, double> PDD ;
typedef long long LL;
const int N = 1e5 + 10;
int n;
PII a[N];
int b[N];
bool cmp(PII p, PII q) {
return abs(p.x) < abs(q.x);
}
void solve() {
scanf("%d", &n);
vector<PII> l, r;
int cnt = 0;
for(int i = 0; i < n; i ++ ) {
int x;
scanf("%d", &x);
b[i] = x;
if(!x) cnt ++;
else if(x < 0 && x & 1 || x > 0 && !(x & 1)) l.pb({x, i});
else r.pb({x, i});
}
sort(all(l), cmp);
sort(all(r), cmp);
int len1 = l.size(), len2 = r.size();
int t1 = len1 - 1, t2 = len2 - 1, e1 = 0, e2 = 0;
for(int i = 0; i < n; i ++ ) {
if((i + 1) & 1) {
if(t1 >= e1) {
a[i] = l[t1 --];
}
else if(cnt) {
a[i] = {0, 0};
cnt --;
}
else a[i] = r[e2 ++];
}
else {
if(t2 >= e2) a[i] = r[t2 -- ];
else if(cnt) {
a[i] = {0, 0};
cnt --;
}
else a[i] = l[e1 ++];
}
}
// for(int i = 0; i < n; i ++ )
// printf("%d %d\n", a[i].x, a[i].y);
LL res = 0, ans = 0;
int t = 1;
for(int i = 0; i < n; i ++, t ^= 1 ) {
if(a[i].x == 0) {
ans += res;
continue;
}
ans += (res + a[i].x);
int p = b[a[i].y];
if((t + 1 + p) % 2 == 0) res += p;
else res -= p;
}
printf("%lld", ans);
}
signed main()
{
int T = 1; //scanf("%d",&T);
while(T -- ) {
solve();
}
return 0;
}
洛谷 8 月月赛 & 「PMOI」Round · 04的更多相关文章
- 「LGR-049」洛谷7月月赛 D.Beautiful Pair
「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 洛谷4月月赛R2
洛谷4月月赛R2 打酱油... A.koishi的数学题 线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
- 【洛谷5月月赛】玩游戏(NTT,生成函数)
[洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 【LGR-051】洛谷9月月赛
[LGR-051]洛谷9月月赛 luogu 签到题 description 给出\(K\)和质数\(m\),求最小的\(N\)使得\(111....1\)(\(N\)个\(1\))\(\equiv k ...
随机推荐
- 【LeetCode】814. Binary Tree Pruning 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 后序遍历 日期 题目地址:https://leetc ...
- Redis的各种实现(Jedis、Redisson、Lettuce)
1.1.Jedis 是Redis的Java实现的客户端.支持基本的数据类型如:String.Hash.List.Set.Sorted Set. 特点:使用阻塞的I/O,方法调用同步,程序流需要等到so ...
- Adversarially Robust Generalization Requires More Data
目录 概 主要内容 高斯模型 upper bound lower bound 伯努利模型 upper bound lower bound Schmidt L, Santurkar S, Tsipras ...
- Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks
目录 概 主要内容 算法 一些有趣的指标 鲁棒性定义 合格的抗干扰机制 Nicolas Papernot, Patrick McDaniel, Xi Wu, Somesh Jha, Ananthram ...
- <学习opencv>过滤器和卷积
/*=========================================================================*/ // 过滤器和卷积 /*========== ...
- <数据结构>XDOJ326.网络延时
问题与解答 问题描述 有N个网络节点,标记为1到N. 给定一个二维数组times[M][3],表示信号经过有向边的传递时间.times[i][3] = {u, v, w}, 其中u是源节点,v是目标节 ...
- Java初学者作业——简单程序根据用户输入的会员类型以及购物金额,判断是否能够享受活动优惠
返回本章节 返回作业目录 需求说明: 超市周年庆举行购物满减活动,编写Java程序,根据用户输入的会员类型以及购物金额,判断是否能够享受活动优惠,会员类型的输入不限制大小写.具体获取规则:若为VIP会 ...
- HTML网页设计基础笔记 • 【第6章 背景和阴影】
全部章节 >>>> 本章目录 6.1 背景属性 6.1.1 背景颜色 6.1.2 背景图片 6.1.3 背景图片的重复方式 6.2 背景图片的定位 6.2.1 backg ...
- Typescript 字符串字面量类型
字符串字面类型定义的类型是固定的,在其使用时必须是其定义的其中一个字符串,否则会报错 当传入一个定义之外的字符串时,会报错字符串字面量类型.ts(13,20): error TS2345: Argum ...
- spring-Ioc学习笔记
spring 是面向Bean的编程 Ioc (Inversion of Control) 控制反转/依赖注入(DI:Dependency Injection) Aop(Aspect Oriented ...