AtCoder ABC 247
A Move Right(水)
void solve()
{string s;cin >> s;s = '0' + s;s.erase(s.end() - 1);cout << s;
}
B Unique Nicknames(读题)
每个人有两个备选名字 然后要给每个人从这两个里选一个命名
map存一下每个名字出现的次数 如果说一个人的两个名字都是出现了两次以上的 那就不行
如果说一个人的备选名字相同的话 只用存一次(自行编写数据hack可得)
map<string, int> mp;
vector<pair<string, string> > q;void solve()
{int n;cin >> n;string a, b;rep(i, 0, n){cin >> a >> b;q.pb({a, b});if(a == b) mp[a] ++;else mp[a] ++; mp[b] ++;}bool ok = true;rep(i, 0, n)if(mp[q[i].fi] >= 2 && mp[q[i].se] >= 2) ok = false;if(ok) puts("Yes");else puts("No");
}
C 1 2 1 3 1 2 1(递归)
当n == 1 输出1 当n == 2 输出 1 2 1
void f(int x)
{if(x == 1) {cout << 1 << ' '; return;}f(x - 1);cout << x << ' ';f(x - 1);
}void solve()
{int n;cin >> n;f(n);
}
D Cylinder(模拟)
op1 在右端放入价值为x 数量为c的球 op2 从左端取出数量为c的球 并输出其价值和
先进先出 队列模拟即可 (队列里的元素是可以更改的 我sb了
queue<PII> q;
void solve()
{int Q;scanf("%d", &Q);int op, x, c;while(Q--){scanf("%d", &op);if(op == 1){scanf("%d%d", &x, &c); //fi: sum se: valq.push({c, x});}else {scanf("%d", &c);LL res = 0;while(c){LL d = c - q.front().fi < 0 ? c : q.front().fi; //特判一下就好q.front().fi -= d;c -= d;res += d * 1LL * q.front().se;if(q.front().fi == 0) q.pop();}printf("%lld\n", res);}}
}
E Max Min(状压DP)
要求寻找区间[l, r]的个数 区间要满足区间内所有元素小于等于x 大于等于y 且区间中必须存在x和y
首先定义一个dp数组 dp[i] [2] [2] 表示当前的右端点是i 然后区间内是否含有x 区间内是否含有y
转移的时候呢 i可以向i+1转移 并i+1继承i中满足题意的状态 也就是区间上的连续的意思
rep(j, 0, 2)rep(k, 0, 2)dp[i][fx | j][fy | k] += dp[i - 1][j][k];
const int N = 200010;
int n, x, y, q[N], dp[N][2][2]; //以i为右端点的状态 1 1表示满足题意
LL res; void solve()
{scanf("%d%d%d", &n, &x, &y);rep(i, 1, n + 1)scanf("%d", &q[i]);dp[0][0][0] = 0;rep(i, 1, n + 1){if(q[i] < y || q[i] > x) continue; //dp[i][1][1] = 0;区间无法连续了int fx = q[i] == x, fy = q[i] == y; //满足存在x或ydp[i][fs][ft] += 1;rep(j, 0, 2)rep(k, 0, 2)dp[i][j | fx][k | fy] += dp[i - 1][j][k]; //对于上一个状态而言 如果可以转移的话就相加res += dp[i][1][1]; //满足题意的情况}cout << res << endl;
}
AtCoder ABC 247相关推荐
- AtCoder ABC 250 总结
AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都 ...
- Atcoder abc 233 题解
Atcoder abc 233 题解 A 10yen Stamp 答案就是两个数字的差/10之后上取整 记得判断res=0的情况就可以了 c++代码 #include<iostream> ...
- AtCoder ABC 127F Absolute Minima
题目链接:https://atcoder.jp/contests/abc127/tasks/abc127_f 题目大意 初始状态下$f(x) = 0$,现在有 2 种模式的询问,第一种以"1 ...
- Atcoder abc A~E
ABC 265 A~E A 题意:你要买 n 个苹果,买 1 个要 x 元,买 3 个要 y 元,问最少要花多少钱 解法:判断 3*x 是否小于 y,然后输出 Code : # include < ...
- AtCoder - ABC 167 - E(数学推理+组合数)
E - Colorful Blocks 题意: 有 m 种颜色,给 n 个方块染色,可以不使用所有颜色,要求最多有 k 对相邻方块同色.问染色的总情况,最终结果模 998244353. 数据范围: ...
- AtCoder ABC 249
A Jogging 没看清楚题 a不是移速 所以卡了十分钟 语法题 int main() {int a, b, c, d, e, f, x;cin >> a >> b > ...
- AtCoder ABC 128(C ~ E)
C Switches(枚举 + 位运算) Description: 有n盏灯和m组设定,要求输出同时符合m组设定的灯开关的方案数 设定:s_i中亮灯的数量%2 == p_i Solution: ...
- AtCoder - ABC 178 - C~F
C - Ubiquity(容斥原理/DP) 题意: 求满足以下条件的长为 n 的不同序列的个数: 1.0 ≤ ≤9 2.序列中至少有一个 =0 3.序列中至少有一个 =9 答案对 +7 取模. 数据 ...
- AtCoder - ABC 170 - D(思维+数论)E(STL+模拟)
D - Not Divisible 题意: 现有一个长度为 n 的序列 A,请你输出满足以下条件的所有整数 的数量: 对于每一个整数 j (1 ≤ j ≤ n且 i ≠ j) , ≠ 0 ( mo ...
最新文章
- python 测试linux dev文件,Linux测试开发人员要掌握的Linux命令有哪些?
- Spring boot ----RestTemplate学习笔记
- [LeetCode]题解(python):013-Roman to Integer
- 实战案例丨小型企业如何从IPv4迁移至IPv6
- 启明云端分享|盘一盘ESP32为啥那么惹人爱呢?
- Flask框架从入门到精通之参数配置(二)
- 数据分析必备:掌握这个R语言基础包1%的功能,你就很牛了
- 识别速度3.6ms/帧!人像抠图、工业质检、遥感识别,用这一个分割模型就够了...
- C#实现关机的两种方法
- 射雕zero找不到服务器,神秘领域《射雕ZERO》未揭秘场景盘点
- 计算机里一共录入多少个汉字,计算机操作员之汉字输入方法
- c语言无法定位程序输入点 于动态链接库,无法定位程序输入点 于动态链接库怎么办...
- Ignite VS Redis
- Windows资源管理器已停止工作的两种解决方法
- 在html中dd 是什么列表,html中dt dd
- Docker镜像常用命令
- 第4章第16节:图表:使用三维饼图制作年度销售额图表 [PowerPoint精美幻灯片实战教程]
- 中国电信天府热线数据中心
- 基于MATLAB的DTMF信号的仿真分析
- 【概率论】4-5:均值和中值(The Mean and the Median)
热门文章
- Compute Shader 语法及函数 Reference for HLSL
- 趣图:搞笑程序员表情包 | 这代码......辣眼睛.....
- 【web前端特效源码】Html5+css3+JavaScript实现计算器2功能+新拟态新拟物风格(Neumorphism)网页图标按钮效果~手把手教学~适合初学者~超简单~
- 一条很长很长的路...
- 陈永正:NBA中国团队比百度人贵16倍
- upc 货物运输 (good)
- 【ChatGPT提问技巧和各种资源帮找】
- 【代码随想录训练营】Day43-动态规划
- 哈夫曼树(赫夫曼树、最优树)详解
- 如何解决Proteus破解失败