夏令营提高班上午上机测试 Day 1 解题报告
文件名del.cpp/c/pas输入文件 输出文件 时间限制 空间限制del.in del.out 1s 512MB题目描述现在,我的手上有 n 个数字,分别是 a1, a2, a3, ..., an。我现在需要删除其中的 k 个数字。当然我不希望随随便便删除,我希望删除 k个数字之后,剩下的 n − k 个数中有最多的不同的数。输入格式第一行两个正整数 n 和 k,含义如题目描述。接下来一行,有 n 个非负整数,分别是 a1到 an。输出格式一共一行,一个整数 ans,表示删除了 k 个数字后最多的不同的数的个数。样例输入4 11 3 1 2样例输出3样例解释如果删去第一个 1:在[3,1,2]中有 3 个不同的数如果删去 3:在[1,1,2]中有 2 个不同的数如果删去第二个 1:在[1,3,2]中有 3 个不同的数如果删去 2:在[1,3,1]中有 1 个不同的数数据范围对于 30% 的数据,n ≤ 10,a ≤ 10。对于 60% 的数据,n ≤ 100,a ≤ 100。对于 80% 的数据,n ≤ 105,a ≤ 105对于 100% 的数据,n ≤ 105,a ≤ 109
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std; const int max_n = 1e5 + ;
int n, k, a[max_n]; int main() {
freopen("del.in", "r", stdin);
freopen("del.out", "w", stdout); cin >> n >> k; for (int i = ; i <= n; i++)
cin >> a[i]; sort(a + , a + + n); int multi = ;
for (int i = ; i <= n; i++)
if (a[i] == a[i - ]) multi++;
if (k <= multi) cout << n - multi << endl;
else cout << n - multi - (k - multi) << endl;
}
题目描述所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续。现在我手里有 n 张扑克牌,但它们可能并不能凑成同花顺。我现在想知道,最少更换其中的多少张牌,我能让这 n 张牌都凑成同花顺?输入格式第一行一个整数 n,表示扑克牌的张数。接下来 n 行,每行两个整数 a 和 b 。其中 ai表示第 i 张牌的花色,bi表示第i 张牌的数字。输出格式一行一个整数,表示最少更换多少张牌可以达到目标。样例输入 151 11 21 31 41 5样例输出 10样例输入 251 91 102 112 122 13样例输出 22数据范围对于 30% 的数据,n ≤ 10。对于 60% 的数据,n ≤ 105,1 ≤ a ≤ 105,1 ≤ b ≤ n。对于 100% 的数据,n ≤ 105,1 ≤ ai, bi ≤ 109。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std; const int max_n = 1e5 + ; struct card {
int color, value;
bool operator < (const card &o) const {
return color < o.color || (color == o.color && value < o.value);
}
bool operator == (const card &o) const {
return color == o.color && value == o.value;
}
} a[max_n];
int n; int main() {
freopen("card.in", "r", stdin);
freopen("card.out", "w", stdout);
cin >> n;
for (int i = ; i <= n; i++) {
cin >> a[i].color >> a[i].value;
} sort(a + , a + + n);
int ori_n = n;
n = unique(a + , a + + n) - (a + ); int last_one = ;
int max_ans = ;
for (int i = ; i <= n; i++) {
if (i == || a[i].color != a[i - ].color)
last_one = i;
while (a[i].value - a[last_one].value + > ori_n)
last_one++;
max_ans = max(max_ans, i - last_one + );
} cout << ori_n - max_ans << endl;
}
题目描述我有 n 个式子对于每一个式子,要么是 x = x 的形式,要么是 x ≠ x 的形式。现在我给出这 n 个式子,你要告诉我,这 n 个式子是否可能同时成立。输入格式每一个测试点有多组测试数据。第一行有一个整数 T,表示测试数据的组数。对于每一组测试数据,第一行包含一个正整数 n,表示式子的数目。接下来 n 行,每行三个整数 i,j,e,描述一个式子。如果 e = 1,则这个式子为 x = x 。如果 e = 0,则这个式子是 x ≠ x 。输出格式对于每一个测试数据输出一行。如果存在一种方案,使得所有的式子都被满足,输出“YES”(不包含引号)。否则输出“NO”(不包含引号)。样例输入 1221 2 11 2 021 2 12 1 1样例输出 1NOYES6样例输入 2231 2 12 3 13 1 141 2 12 3 13 4 11 4 0样例输出 2YESNO数据范围对于 20% 的数据,n ≤ 10。对于 40% 的数据,n ≤ 100。对于 70% 的数据,n ≤ 105,1 ≤ i, j ≤ 104对于 100% 的数据,n ≤ 105,1 ≤ i, j ≤ 109 ,1 ≤ t ≤ 10。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std; const int max_n = 2e5 + ; struct data {
int x, y, e;
bool operator < (const data &o) const {
return e > o.e;
}
} a[max_n]; int fa[max_n];
int tmp[max_n], tot, n; int getfather(int x) {
if (fa[x] == x) return x;
return fa[x] = getfather(fa[x]);
} inline int getnum() {
int ans = ; char c; bool flag = false;
while (!isdigit(c = getchar()) && c != '-');
if (c == '-') flag = true; else ans = c - '';
while (isdigit(c = getchar())) ans = ans * + c - '';
return ans * (flag ? - : );
} int main() {
freopen("equ.in", "r", stdin);
freopen("equ.out", "w", stdout); int t = getnum();
while (t--) {
n = getnum();
tot = ;
for (int i = ; i <= n; i++) {
a[i].x = getnum();
a[i].y = getnum();
a[i].e = getnum();
tmp[++tot] = a[i].x;
tmp[++tot] = a[i].y;
} sort(a + , a + + n);
sort(tmp + , tmp + + tot);
tot = unique(tmp + , tmp + + tot) - (tmp + ); for (int i = ; i <= tot; i++) fa[i] = i; bool isok = true;
for (int i = ; i <= n; i++) {
a[i].x = lower_bound(tmp + , tmp + + tot, a[i].x) - tmp;
a[i].y = lower_bound(tmp + , tmp + + tot, a[i].y) - tmp;
if (a[i].e == ) fa[getfather(a[i].x)] = getfather(a[i].y);
else {
if (getfather(a[i].x) == getfather(a[i].y)) {
isok = false;
break;
}
}
} if (isok) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
你问我为啥这些标程都不是我写的?
夏令营提高班上午上机测试 Day 1 解题报告的更多相关文章
- 夏令营提高班上午上机测试 Day 2 解题报告
那一天,日照一中夏令营数据结构提高班的同学们终于想起了,被Day2上午的三道题支配的恐惧…… 是的..这一天的题有点难想.. 本来打算前天写这篇随笔,然而前天在机房和同学打luogu月赛…… 昨天 ...
- 夏令营提高班上午上机测试 Day 3 解题报告
今天的题的确水.T3还是一道NOIP原题. 嘛,多刷点水题也不是什么坏事嘛. 说来也快,夏令营结束了整一星期了呢.大家也都回到了日常的暑假生活呢. 今天学业水平测试出成绩了...嗯结果还算满意呢,至少 ...
- 夏令营提高班上午上机测试 Day 4 解题报告
我要是没记错的话,今天的题难度算挺适中的. *标程来自高天宇哥哥 T1:小G的字符串 题目描述 有一天,小 L 给小 G 出了这样一道题:生成一个长度为 n 的.全由小写英文字母构成的字符串,只能使用 ...
- nowcoder(牛客网)OI测试赛3 解题报告
昨天因为胡搞了一会儿社团的事情,所以错过(逃过)了nowcoder的测试赛..... 以上,听说还是普及组难度qwq,而且还有很多大佬AK(然而我这么蒻肯定还是觉得有点难度的吧qwq) 不过我还是日常 ...
- 牛客OI赛制测试赛3 解题报告
前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480 Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...
- nowcoder(牛客网)提高组模拟赛第四场 解题报告
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是
- nowcoder(牛客网)OI测试赛2 解题报告
qwq听说是一场普及组难度的比赛,所以我就兴高采烈地过来了qwq 然后发现题目确实不难qwq.....但是因为蒟蒻我太蒻了,考的还是很差啦qwq orz那些AK的dalao们qwq 赛后闲来无事,弄一 ...
- nowcoder 提高组模拟赛 最长路 解题报告
最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符 ...
- [jzoj 4668] [NOIP2016提高A组模拟7.19] 腐败 解题报告(质数分类+慢速乘)
题目链接: http://172.16.0.132/senior/#main/show/4668 题目: 题解: 考虑把A数组里的每个元素分解质因数,对于每个质因数开一个vector存一下包含这个质因 ...
随机推荐
- a*b(mod m)的实现过程
/*a*b (mod m) 的实现过程*/ /*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/ LL multi(LL a, LL b, LL m) { LL exp = ...
- HttpClient 用于解决测试时候乱码的问题
@Test public void doPostWithParam() throws Exception, IOException { CloseableHttpClient httpClient = ...
- PHP安全之webshell和后门检测
基于PHP的应用面临着各种各样的攻击: XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点.攻击者可以利用它盗取用户信息.你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入) ...
- Linux中安装opencv-3.3.1
在ubuntu16.04中安装opencv3.3.1的过程中踩了许多坑.一开始直接安装还挺顺利但运行程序时总是提示libgtk2.0-dev和pkg-config没有安装,在安装这两个包的过程中也不顺 ...
- tree conflict svn 怎么解决
如果自己和其他人修改了同一个文件,而他已经更新到SVN,你commit时就会出现冲突,如何解决呢? 方法/步骤 使用SVN时,更新一个自己修改的文件到服务器,出现冲突,因为其他同事也修改了这个文件并且 ...
- NV12格式转RGB的CUDA实现
NV12格式是yuv420格式的一种,NV12格式的u,v排布顺序为交错排布,假如一幅图像尺寸为W*H,则先Y分量有W*H个,然后U分量和V分量交错排布,U分量和V分量各有W*H/4个,U,V加起来总 ...
- 5分钟把任意网站变成桌面软件--windows版
本文源自于segmentfault的一篇专栏文章:https://segmentfault.com/a/1190000012924855 只不过这篇是MAC版本的,所以我试了下windows版的: ...
- 数据结构 哈希表(Hash Table)_哈希概述
哈希表支持一种最有效的检索方法:散列. 从根来上说,一个哈希表包含一个数组,通过特殊的索引值(键)来访问数组中的元素. 哈希表的主要思想是通过一个哈希函数,在所有可能的键与槽位之间建立一张映射表.哈希 ...
- VM安装Ubuntu问题合集(无法联网、中文界面设置、中文输入法etc)
经常使用VM安装Ubuntu,安装系统的步骤跟着系统提示一步步下来就行,但总是遇到一些问题,这里记录一下常遇到的问题,以及自己解决的办法: 1.无法联网: 状况:Ubuntu不能联网,联网地方一直在闪 ...
- WinForm中,设置不显示窗口的标题栏
1:ControlBox设置False,然后标题为""的时候标题就不显示了2:把窗体设置为无边的窗体 FormBoderStyle 设为 None (在Mdi中,关闭按钮会还在) ...