补题—Codeforces Round #346 (Div. 2) _智商欠费系列
这次的题目相对容易 但是智商依旧不够用
原因有三点 1.英文水平堪忧 2 逻辑不严密 3 细节掌握不够好
传送门
http://codeforces.com/contest/659
A 题目大意 圆环上有n个点 人从a位置出发 走b步 正负代表方向
(a+b%n+n)%n 需要特判 避免走到 0位置
观察数据范围 只需要(100*n+a+b-1)%n+1 还省去了特判
B 题目大意 有n个人的数据 m个地区 每个地区最少参赛2人 晋级2人
出线则输出 需要加赛 如第二个人和第三个人成绩一样 就输出?
#include<cstdio>
#include<map>
//#include<bits/stdc++.h>
#include<vector>
#include<stack>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdlib>
#include<climits>
#define PI acos(-1.0)
#define INF 0x3fffffff
using namespace std;
typedef long long ll;
typedef __int64 int64;
const ll mood=1e9+;
const int64 Mod=;
const double eps=1e-;
const int N=1e3+;
const int MAXN=;
typedef int rl;
inline void r(rl&num){
num=;rl f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<='')num=num*+ch-'',ch=getchar();
num*=f;
}
typedef pair<string,int> psi;
bool cmp(psi a,psi b)
{
return a.second>b.second;
}
int main()
{
vector<psi>v[];
int t;
psi tem;
int n,m;
r(n),r(m);
for(int i=;i<n;i++)
{
cin>>tem.first;
r(t);r(tem.second);
v[t].push_back(tem);
}
for(int i=;i<=m;++i)
{
if(v[i].size()<)
{
putchar('?');
}
else{
sort(v[i].begin(),v[i].end(),cmp);
if(v[i][].second==v[i][].second)
{
putchar('?');
}
else{
cout<<v[i][].first<<' '<<v[i][].first;
}
}
putchar('\n');
}
return ;
}
错误代码
错误原因 未在判断第二个人和第三个成绩是否一样前判断 人数是否大于2
在(——人数等2 第二个人成绩为0的时候 第三个人不存在默认为0 则相等 输出?)因此wa
改完AC
#include<cstdio>
#include<map>
//#include<bits/stdc++.h>
#include<vector>
#include<stack>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdlib>
#include<climits>
#define PI acos(-1.0)
#define INF 0x3fffffff
using namespace std;
typedef long long ll;
typedef __int64 int64;
const ll mood=1e9+;
const int64 Mod=;
const double eps=1e-;
const int N=1e3+;
const int MAXN=1e4+;
typedef int rl;
inline void r(rl&num){
num=;rl f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<='')num=num*+ch-'',ch=getchar();
num*=f;
}
typedef pair<string,int> psi;
bool cmp(psi a,psi b)
{
// if(a.second==b.second) return a.first<b.first;
return a.second>b.second;
}
int main()
{
vector<psi>v[MAXN];
int t;
psi tem;
int n,m;
r(n),r(m);
for(int i=;i<n;i++)
{
cin>>tem.first;
r(t);r(tem.second);
v[t].push_back(tem);
}
for(int i=;i<=m;++i)
{ sort(v[i].begin(),v[i].end(),cmp);
if(v[i].size()>&&v[i][].second==v[i][].second)
{
putchar('?');
}
else{
cout<<v[i][].first<<' '<<v[i][].first;
}
putchar('\n');
}
return ;
}
B——AC
这样写 还是不够好 我们注意到pair默认是先排一维从小到大然后二维依次
在输出的时候用pis 成绩*-1输入 ,成绩*-1从小到大即原成绩从大到小
就可以了
#include<bits/stdc++.h>
using namespace std;
const int MAX=1e5+;
int n,m,r,p;
vector<pair<int,string> > mp[MAX];
string s;
int main()
{
cin>>n>>m;
for (int i=;i<n;i++)
cin>>s>>r>>p,mp[r].push_back({-p,s});
for (int i=;i<=m;i++)
{
sort(mp[i].begin(),mp[i].end());
if (mp[i].size()> && mp[i][].first==mp[i][].first)
cout<<"?\n";
else
cout<<mp[i][].second<<" "<<mp[i][].second<<'\n';
}
}
某人简短AC码
C 题目大意 找1-n序列中 未标记的和<m
开始用set瞎搞错误 姿势错误
可以开个vis数组 没意思 其实开vis是有问题的 可惜他的数据弱233
于是去学习了一下set的姿势
把存在的的插入 以后的扫描只有一趟 所以不用再次插入
补题—Codeforces Round #346 (Div. 2) _智商欠费系列的更多相关文章
- Codeforces Round #346 (Div. 2)---E. New Reform--- 并查集(或连通图)
Codeforces Round #346 (Div. 2)---E. New Reform E. New Reform time limit per test 1 second memory lim ...
- 构造水题 Codeforces Round #206 (Div. 2) A. Vasya and Digital Root
题目传送门 /* 构造水题:对于0的多个位数的NO,对于位数太大的在后面补0,在9×k的范围内的平均的原则 */ #include <cstdio> #include <algori ...
- 水题 Codeforces Round #302 (Div. 2) A Set of Strings
题目传送门 /* 题意:一个字符串分割成k段,每段开头字母不相同 水题:记录每个字母出现的次数,每一次分割把首字母的次数降为0,最后一段直接全部输出 */ #include <cstdio> ...
- 水题 Codeforces Round #299 (Div. 2) A. Tavas and Nafas
题目传送门 /* 很简单的水题,晚上累了,刷刷水题开心一下:) */ #include <bits/stdc++.h> using namespace std; ][] = {" ...
- 水题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas
题目传送门 /* 水题:ans = (1+2+3+...+n) * k - n,开long long */ #include <cstdio> #include <algorithm ...
- 水题 Codeforces Round #303 (Div. 2) A. Toy Cars
题目传送门 /* 题意:5种情况对应对应第i或j辆车翻了没 水题:其实就看对角线的上半边就可以了,vis判断,可惜WA了一次 3: if both cars turned over during th ...
- 水题 Codeforces Round #286 (Div. 2) A Mr. Kitayuta's Gift
题目传送门 /* 水题:vector容器实现插入操作,暴力进行判断是否为回文串 */ #include <cstdio> #include <iostream> #includ ...
- 水题 Codeforces Round #306 (Div. 2) A. Two Substrings
题目传送门 /* 水题:遍历一边先找AB,再BA,再遍历一边先找BA,再AB,两种情况满足一种就YES */ #include <cstdio> #include <iostream ...
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
随机推荐
- python 并发编程之IO 模型
首先说一下 IO 发生时涉及的对象和步骤.以read 为例,会经历两个阶段: 1)等待数据准备 2)将数据从内核拷贝到进程中 二,阻塞Io(blocking IO) 在 Linux中 默认情况下所有 ...
- c#静态多态性与动态多态性
C# 多态性 多态性意味着有多重形式.在面向对象编程范式中,多态性往往表现为"一个接口,多个功能". 多态性可以是静态的或动态的.在静态多态性中,函数的响应是在编译时发生的.在动态 ...
- JAVA基础--JAVA API集合框架(其他集合类,集合原理)15
一.ArrayList介绍 1.ArrayList介绍 ArrayList它是List接口的真正的实现类.也是我们开发中真正需要使用集合容器对象. ArrayList类,它是List接口的实现.肯定拥 ...
- CString和CStringA之间的转换
使用UNICODE字符集编程时,总是需要使用那些不支持UNICODE的库,例如sqlite3,Lua等必须使用char*类型的.这个时候用CStringA是最好的. 另外CStringA与CStrin ...
- Ogre的mesh和skeleton文件数据格式分析
转载自: http://www.cnblogs.com/topicofkevin/archive/2012/03/05/2380808.html 首先看一下skeleton文件,skeleton文件描 ...
- Pycharm 配置autopep8到菜单
Pycharm 可以自动检测PEP8规范. 我们可以安装autopep8来自动修改文件实现PEP8规范. 1.通过Pycharm安装autopep8 2.File->Setting->Ex ...
- AutoLayout 根据文字、图片自动计算 UITableViewCell 高度
原文网址: http://lvwenhan.com/ios/449.html 此系列文章代码仓库在 https://github.com/johnlui/AutoLayout ,有不明白的地方可以参考 ...
- PJzhang:尽快发现并下架那些侵犯公司权利的假冒APP
猫宁!!! 参考链接:https://www.freebuf.com/articles/paper/203358.html http://www.cac.gov.cn/2019-01/25/c_112 ...
- assembly x86(nasm)子程序1
T: 将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来.要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示. 思路: Main主调程 ...
- Log4j2 - Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFileAppender for element RollingFile
问题与分析 在使用Log4j2时,虽然可以正确读取配置文件并生成log文件,但偶然发现控制台打印了异常信息如下: 2018-12-31 17:28:14,282 Log4j2-TF-19-Config ...