洛谷11月月赛题解(A-C)
心路历程
辣鸡T3卡我1.5h题意,要不是最后nlh跟我解释了一下大样例估计这次是真凉透了。。
A P4994 终于结束的起点
打出暴力来发现跑的过最大数据??
保险起见还是去oeis了一波,然后被告知第一个满足条件的位置不会超过\(2n +2\)
赢了
#include<bits/stdc++.h>
#define Pair pair<int, int>
#define MP make_pair
#define fi first
#define se second
using namespace std;
const int MAXN = 1e7 + 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int f[MAXN] = {0, 1};
int main() {
int M = read();
for(int i = 2; i; i++) {
f[i] = (f[i - 1] + f[i - 2]) % M;
if(f[i - 1] == 0 && f[i] == 1) {printf("%d\n", i - 1); break;}
}
return 0;
}
B P4995 跳跳!
为啥\(n \leqslant 300\)啊。。出题人这么放烟雾弹真的好么。。。
直接排序之后每次在没跳过的最大的和没跳过的最小的之间跳
开始的时候跳的最大的
#include<bits/stdc++.h>
#define Pair pair<int, int>
#define MP make_pair
#define fi first
#define se second
#define LL long long
using namespace std;
const int MAXN = 1e6 + 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N;
LL a[MAXN];
int main() {
N = read();
for(int i = 1; i <= N; i++) a[i] = read();
sort(a + 1, a + N + 1, greater<int>());
LL ans = a[1] * a[1], l = 1, r = N, opt = 0;
for(int i = 1; i <= N - 1; i++, opt ^= 1) {
ans += abs((a[l] - a[r]) * (a[l] - a[r]));
if(!opt) l++;
else r--;
}
cout << ans;
return 0;
}
B P4996 咕咕咕
看不懂题其实也不能完全怪出题人吧。。还是自己太菜了。。
直接爆搜+记忆化就能骗到\(40\)分(莫名奇妙wa掉两个点)
交上去的时候已经\(11:47\)了。。吃饭的时候发现可以把\(1\)的个数相同的数一起算,他们的系数都是一样的。
然后就做完了。。
时间复杂度:\(O(2^n)\)
好像可以直接用组合数算系数?
#include<cstdio>
#include<map>
#include<iostream>
#define Pair pair<int, int>
#define MP make_pair
#define fi first
#define se second
#define LL long long
using namespace std;
const int MAXN = 3e6 + 10, mod = 998244353;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N, M, Lim, ans, ou[MAXN], in[MAXN];
int mp[1 << 22];
void add(int &x, int y) {
if(x + y < 0) x = x + y;
else x = (x + y >= mod ? x + y - mod : x + y);
}
int mul(int x, int y) {
return 1ll * x * y % mod;
}
int trans(string x) {
int ou = 0;
for(int k = 0; k < N; k++) if(x[k] == '1') ou |= 1 << k;
return ou;
}
int g(int x) {
return __builtin_popcount(x);
}
int dfs(int sta) {
if(ou[g(sta)]) return ou[g(sta)];
for(int i = sta + 1; i <= Lim; i++)
if((i & sta) == sta) add(ou[g(sta)], dfs(i));
return ou[g(sta)];
}
int dfs2(int sta) {
if(in[g(sta)]) return in[g(sta)];
for(int i = 0; i < sta; i++)
if((i & sta) == i) add(in[g(sta)], dfs2(i));
return in[g(sta)];
}
int main() {
N = read(); M = read(); Lim = (1 << N) - 1;
for(int i = 1; i <= M; i++) {
string s; int val;
cin >> s; val = read() % mod;
mp[trans(s)] = val;
}
in[0] = 1; ou[g(Lim)] = 1;
dfs(0); dfs2(Lim);
for(int i = 0; i <= Lim; i++) add(ans, mul(mp[i], mul(ou[g(i)], in[g(i)])));
cout << ans;
}
D
没时间写暴力了。
puts("-1 -1")骗了10分。。
洛谷11月月赛题解(A-C)的更多相关文章
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi,地面的高度是 h_0 = 0 ...
- 洛谷11月月赛(284pts rank85)
https://www.luogu.org/contestnew/show/12006 我是比赛完后在去写的 这是我第一次打洛谷月赛,之前一次是比赛完才去看而且写了第一题就没写后面的了 284分,太水 ...
- 洛谷 11 月月赛 I Div.2 A [Kubic] Addition 题解
Content 你有一个长度为 \(n\) 的序列 \(a\).你可以执行 \(n-1\) 次操作,每次操作中你可以选择一个位置 \(i\),并删除 \(a_i\) 和 \(a_{i+1}\),再在原 ...
- 洛谷11月月赛round.1
太感动了#2 thwfhk 240 (801ms) 100 100 40 又一张明信片,话说10月的怎么还没收到 P2246 SAC#1 - Hello World(升级版) 题目背景 一天, ...
- 洛谷11月月赛round.2
P3414 SAC#1 - 组合数 题目背景 本题由世界上最蒟蒻最辣鸡最撒比的SOL提供. 寂月城网站是完美信息教室的官网.地址:http://191.101.11.174/mgzd . 题目描述 辣 ...
- NOIP模拟赛(洛谷11月月赛)
T1 终于结束的起点 题解:枚举啊... 斐波那契数 第46个爆int,第92个爆long long.... 发现结果一般是m的几倍左右....不用担心T. #include<iostream ...
- 【LGR-065】洛谷11月月赛 III Div.2
临近$CSP$...... 下午打了一发月赛,感觉很爽. 非常菜的我只做了前两题......然而听说前两题人均过...... 写法不优秀被卡到$#1067$...... T1:基础字符串练习题: 前缀 ...
随机推荐
- mongo的持久化之Journaling
参考文章: http://database.51cto.com/art/201110/295772.htm http://blog.chinaunix.net/uid-15795819-id-3381 ...
- Vue项目 注释模板
此内容只适用于vscode 1.打开项目->按快捷键->ctrl+shift+p 2.选择红线选中的内容 ,如果是中文版看如下图片 如果是英文版看如下图 3.就开始进行配置 大家根据这张图 ...
- 干掉Vivado幺蛾子(2)-- 快速替换debug probes
目录 1. 什么是ECO 2. 操作步骤 参考文献: 我们做项目,进入找bug阶段时,需要用ILA捕获相关的信号.之前我做项目,每改动一次探针(debug probes),都要重新综合.实现,通常要花 ...
- abp部署端口和域名映射配置
前引 apb部署 后端服务9900端口,域名访问地址是:http://nihao-api.hellow.com: 前端4200端口,域名访问地址是:http://nihao.hellow.com: 前 ...
- Linux I2C驱动--用户态驱动简单示例
1. Linux内核支持I2C通用设备驱动(用户态驱动:由应用层实现对硬件的控制可以称之为用户态驱动),实现文件位于drivers/i2c/i2c-dev.c,设备文件为/dev/i2c-0 2. I ...
- Oracle之索引
简介 1.说明 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引.在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即可找到想要的信 ...
- (转)Systemd 入门教程:命令篇
Systemd 入门教程:命令篇 原文:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html Systemd 入门 ...
- 【Css】一个简单的图片库
今天做一个简单的图片库! 其实这个在w3school教程里介绍得很好了,不过看到什么,自己动手做一次,记得也深刻不是. 我们分几步来走: 第一步:先写一个坯子. <html> <he ...
- Windows下SVN回滚到旧版本(TortoiseSVN)
当发现新提交的代码有问题,然后想将某个旧的版本作为最新的版本时,可以使用回滚, 操作步骤如下: 1. 签出(CheckOut)最新版本的代码到电脑中(不能做任何修改) 2. 执行TortoiseSVN ...
- php的stristr()函数,查找字符
1.用法,要传2个参数 stristr(string,search):查找并返还匹配后,剩下的部分字符串 查找过程不区分大小写,要区分大小写用 strstr(string,search)少一个字母i ...