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受到下标ik的 奇偶性问题 我们做出以下分析

  • 当我们填到第奇数个数字时 我们需要让它对后面的影响为正

    - 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的更多相关文章

  1. 「LGR-049」洛谷7月月赛 D.Beautiful Pair

    「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...

  2. 「P4994」「洛谷11月月赛」 终于结束的起点(枚举

    题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...

  3. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  4. 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心

    题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi​,地面的高度是 h_0 = 0 ...

  5. 洛谷4月月赛R2

    洛谷4月月赛R2 打酱油... A.koishi的数学题  线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...

  6. 洛谷3月月赛 R1 Step! ZERO to ONE

    洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...

  7. 【洛谷5月月赛】玩游戏(NTT,生成函数)

    [洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...

  8. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  9. 【LGR-051】洛谷9月月赛

    [LGR-051]洛谷9月月赛 luogu 签到题 description 给出\(K\)和质数\(m\),求最小的\(N\)使得\(111....1\)(\(N\)个\(1\))\(\equiv k ...

随机推荐

  1. Flink 实践教程-进阶(5):排序(乱序调整)

    作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接.亚 ...

  2. 『动善时』JMeter基础 — 59、进行JMeter分布式测试遇到的坑

    目录 1.控制机端 (1)执行机没有关闭防火墙 (2)内存溢出 2.执行机端 (1)启动jmeter-server服务情况一 (2)启动jmeter-server服务情况二 (3)启动jmeter-s ...

  3. Kronecker Products and Stack Operator

    目录 定义 Stack Operator Kronecker Product 性质 Stack Operator Kronecker Product 半线性 Whitcomb L. Notes on ...

  4. node.js安装及环境配置超详细教程【Windows系统安装包方式】

    文章目录 Step1:下载安装包 Step2:安装程序 Step3:查看 Step4:环境配置 最后补充: Step1:下载安装包 https://nodejs.org/zh-cn/download/ ...

  5. html 基础 audio和video的基础使用

    基础标签 文本格式化标签: 标签 说明 <b></b>/<strong></strong> 加粗 <u></u>/<ins ...

  6. Chrome升级到91版本以上后Cookies SameSite问题,IdentityServer4登录不上问题?

    还原下问题: 跨站Cookie安全级别限制,如过是https不用担心这个问题,但是IP访问,本地测试等就会出现登录不上 针对这个问题,记得早在之前80版本的chrome就会存在的问题,可能大家会用:c ...

  7. vue中把一个事件绑定到子组件上

    官网上是这样描述的 你可能有很多次想要在一个组件的根元素上直接监听一个原生事件.这时,你可以使用 v-on的 .native 修饰符 父组件App.vue <template> <d ...

  8. 第10组 Alpha冲刺 (6/6)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14008187.html ·作业博客:https://edu.cnblogs.co ...

  9. Word2010制作简单个人简历

    原文链接:https://www.toutiao.com/i6489366535050625550/ 以学习使用按钮属性为主,具体样式可以根据个人设置 选择"页面布局"选项卡,&q ...

  10. 修正了Model1模式,进入如今盛行的的Model2模式,也就是MVC模式

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513668601843548675/ 1.<JSP页面实际上就是Servlet> 2.<JSP页 ...