Educational Codeforces Round 27 补题
题目链接:http://codeforces.com/contest/845
A. Chess Tourney
水题,排序之后判断第n个元素和n+1个元素是不是想等就可以了。
#include <bits/stdc++.h>
using namespace std;
int a[210];
int n;
int main()
{
scanf("%d", &n);
for(int i=1; i<=2*n; i++) scanf("%d", &a[i]);
sort(a+1,a+2*n+1,greater<int>());
if(a[n]!=a[n+1])
puts("YES");
else puts("NO");
return 0;
}
B. Luba And The Ticket
题意:给了一个只有6个字母的字符串,然后问最少改变几个数字,使得前3个数字的和等于后3个数字的和。
解法:直接暴力枚举这6位数字会变成什么,在满足条件下维护最小值。
#include <bits/stdc++.h>
using namespace std;
int a[10];
char s[10]; int main()
{
scanf("%s", s+1);
for(int i=1; i<=6; i++){
a[i] = s[i]-'0';
}
int ans = 100;
for(int i=0; i<10; i++){
for(int j=0; j<10; j++){
for(int k=0; k<10; k++){
for(int x=0; x<10; x++){
for(int y=0; y<10; y++){
for(int z=0; z<10; z++){
if(i+j+k==x+y+z){
int cnt = 0;
if(i!=a[1]) cnt++;
if(j!=a[2]) cnt++;
if(k!=a[3]) cnt++;
if(x!=a[4]) cnt++;
if(y!=a[5]) cnt++;
if(z!=a[6]) cnt++;
ans = min(ans, cnt);
}
}
}
}
}
}
}
printf("%d\n", ans);
}
C. Two TVs
题意:有n个电视节目,每个节目有一个开始的播放时间和结束的播放时间,现在有2台电视可以同时播放节目,但是有重合时间点的节目不能在同一台电视播放,问是否可以通过安排播放顺序让所有的节目都被播放完。
解法:一个显然的贪心,按l,r从小到大排序之后,分别往第一个和第二个电视结束时间最早的那个放就OK了。
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+5;
struct node{
int l,r;
node(){}
bool operator<(const node &rhs) const{
if(l == rhs.l) return r<rhs.r;
return l<rhs.l;
}
}a[maxn];
int en1, en2; int main()
{
int n;
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d %d", &a[i].l,&a[i].r);
}
sort(a+1,a+n+1);
en1 = -1, en2 = -1;
for(int i=1; i<=n; i++){
if(a[i].l > en1 && a[i].l > en2){
if(en1 > en2){
en2 = a[i].r;
}
else{
en1 = a[i].r;
}
}
else if(a[i].l > en1){
en1 = a[i].r;
}
else if(a[i].l > en2){
en2 = a[i].r;
}
else{
puts("NO");
return 0;
}
}
puts("YES");
return 0;
}
D. Driving Test
题意:给出n次操作,你可以忽略 可以超车,不可以超车,速度最大限制以及无速度限制这些操作,问使得超车以及改变速度合法的前提下最少需要忽略多少次操作,每次超车可以覆盖前面所有的超车和不超车,速度最大限制和无速度限制一样。
解法:直接模拟即可。
#include <bits/stdc++.h>
using namespace std; int main()
{
int n,op,x,now=0,lim=0,cnt=0;
vector<int>v;
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d", &op);
if(op == 1){
scanf("%d", &x);
now=x;
while(!v.empty() && now>v.back()){
v.pop_back();
cnt++;
}
}
if(op == 2){
cnt += lim;
lim = 0;
}
if(op == 3){
scanf("%d", &x);
v.push_back(x);
while(!v.empty() && now>v.back()){
v.pop_back();
cnt++;
}
}
if(op == 4){
lim = 0;
}
if(op == 5){
v.clear();
}
if(op == 6){
lim++;
}
}
printf("%d\n", cnt);
return 0;
}
E:
F:
G. Shortest Path Problem?
题意:这道题要求从1到n的最小xor和路径,存在重边,允许经过重复点、重复边。
解法:线形基,BZOJ原题,BZOJ 2115 不过那道题求的是最大值,这个题求的是最小值。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 100010;
const int maxm = 500010;
int n, m, edgecnt;
int head[maxn];
bool vis[maxn];
LL dx[maxn];
LL p[70];
LL circle[maxm], ans;
void init(){
memset(head, -1, sizeof(head));
edgecnt = 0;
}
struct edge{
int to,next;
LL w;
edge(){}
edge(int to, int next, LL w):to(to),next(next),w(w){}
}E[maxm];
int cnt = 0;
void add(int u, int v, LL w){
E[edgecnt].to = v, E[edgecnt].next = head[u], E[edgecnt].w = w, head[u] = edgecnt++;
}
void dfsloop(int x){
vis[x] = 1;
for(int i=head[x]; i+1; i=E[i].next){
int to = E[i].to;
if(!vis[to]) dx[to] = dx[x]^E[i].w, dfsloop(to);
else{
circle[++cnt] = dx[to]^dx[x]^E[i].w;
}
}
} int main()
{
int x,y;
LL z;
init();
scanf("%d %d", &n,&m);
for(int i=1; i<=m; i++){
scanf("%d %d %lld", &x,&y,&z);
add(x, y, z);
add(y, x, z);
}
dfsloop(1);
ans = dx[n];//任取一条从1到n的路径,并得到其xor和
for(int i=1; i<=cnt; i++){
for(int j=62; j>=0; j--){
if(!(circle[i]>>j)) continue;
if(!p[j]){
p[j] = circle[i];
break;
}
circle[i] ^= p[j];
}
}
//for(int i=62;i>=0;i--) if(!(ans>>i)) ans^=p[i];
//ans有初值,不能直接根据这一位是否为0来判断是否更大,max更为稳妥
for(int i=62; i>=0; i--){
if((ans^p[i])<ans){
ans = ans^p[i];
}
}
printf("%lld\n", ans);
return 0;
}
Educational Codeforces Round 27 补题的更多相关文章
- Educational Codeforces Round 23 补题小结
昨晚听说有教做人场,去补了下玩. 大概我的水平能做个5/6的样子? (不会二进制Trie啊,我真菜) A. 傻逼题.大概可以看成向量加法,判断下就好了. #include<iostream> ...
- cordforce Educational Codeforces Round 47 补题笔记 <未完>
题目链接 http://codeforces.com/contest/1009 A. Game Shopping 直接模拟即可,用了一个队列来存储账单 #include <iostream> ...
- Educational Codeforces Round 12补题 经典题 再次爆零
发生了好多事情 再加上昨晚教育场的爆零 ..真的烦 题目链接 A题经典题 这个题我一开始推公式wa 其实一看到数据范围 就算遍历也OK 存在的问题进制错误 .. 思路不清晰 两个线段有交叉 并不是端点 ...
- Educational Codeforces Round 22 补题 CF 813 A-F
A The Contest 直接粗暴贪心 略过 #include<bits/stdc++.h> using namespace std; int main() {//freopen(&qu ...
- Educational Codeforces Round 15 套题
这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...
- Educational Codeforces Round 21 A-E题题解
A题 ............太水就不说了,贴下代码 #include<string> #include<iostream> #include<cstring& ...
- Educational Codeforces Round 27 A B C
A. Chess Tourney Berland annual chess tournament is coming! Organizers have gathered 2·n chess pla ...
- Educational Codeforces Round 27
期末后恢复性训练,结果完美爆炸... A,题意:2n个人,分成两队,要求无论怎么分配,第一队打赢第二队 #include<bits/stdc++.h> #define fi first # ...
- Educational Codeforces Round 27 F. Guards In The Storehouse
F. Guards In The Storehouse time limit per test 1.5 seconds memory limit per test 512 megabytes inpu ...
随机推荐
- Memcached的安装与使用
这一段折腾了下Memcached,有所收获吧,记录一下. 1.什么是Memcached memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memca ...
- 20170717_python_爬虫_网页数据解析_BeautifulSoup_数据保存_pymysql
上午废了老大劲成功登陆后,下午看了下BeautifulSoup和pymysql,晚上记录一下 自己电脑装的sublime,字体颜色竟然拷贝不下来 - - 写的过程中遇到了很多问题: 1.模拟登陆部分 ...
- JSON的详细介绍
JSON的语法可以表示以下三种类型的值: 简单值:可以表示字符串,数值,布尔值,null,但不支持undefined. 对象(Object):对象作为一种复杂数据类型,表示的是一组无序的键值对儿. 数 ...
- Spring Ioc-依赖注入的几种方式
一 setter方法注入 配置文件如下: <bean id="helloAction" class="org.yoo.action.SpringSetterHell ...
- (转)java提高篇(一)-----理解java的三大特性之封装
从大二接触java开始,到现在也差不多三个年头了.从最基础的HTML.CSS到最后的SSH自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...
- HTML5基本知识点
一.什么是HTML HTML是超文本标签语言,即网页的源码.而浏览器就是翻译解释HTML源码的工具. 二.HTML的基本格式 <!DOCTYPE html>: ①文档类型声明:让浏览器按照 ...
- 阿里消息队列中间件 RocketMQ 源码分析 —— Message 拉取与消费(上)
- git入门大全
前言 以前写个一个git小结,但是实际上并不够用.于是结合实际工作上碰到的一些情况,参考了一些资料,重新总结了一下.目标是在日常工作中不用再去查阅其他的资料了,如果有什么遗漏或者错误的地方,请评论指出 ...
- windows 注入 之 CreateRemoteThread
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理它.钩子机 ...
- 【LeetCode】数组-2(628)-数组中三个数相乘最大
题目不难: 思路一(排序取两端) 先排序,最后三个数相乘即可.(很快就想到了,但是没想全面 [