Codeforces Round #285 (Div. 2) A, B , C 水, map ,拓扑
1 second
256 megabytes
standard input
standard output
Misha and Vasya participated in a Codeforces contest. Unfortunately, each of them solved only one problem, though successfully submitted it at the first attempt. Misha solved the problem that costs a points and Vasya solved the problem that costs b points. Besides, Misha submitted the problem c minutes after the contest started and Vasya submitted the problem d minutes after the contest started. As you know, on Codeforces the cost of a problem reduces as a round continues. That is, if you submit a problem that costs p points tminutes after the contest started, you get 
 points.
Misha and Vasya are having an argument trying to find out who got more points. Help them to find out the truth.
The first line contains four integers a, b, c, d (250 ≤ a, b ≤ 3500, 0 ≤ c, d ≤ 180).
It is guaranteed that numbers a and b are divisible by 250 (just like on any real Codeforces round).
Output on a single line:
"Misha" (without the quotes), if Misha got more points than Vasya.
"Vasya" (without the quotes), if Vasya got more points than Misha.
"Tie" (without the quotes), if both of them got the same number of points.
500 1000 20 30
Vasya
1000 1000 1 1
Tie
1500 1000 176 177
Misha
#include<bits/stdc++.h>
using namespace std;
#define ll __int64
#define mod 1000000007
#define pi (4*atan(1.0))
const int N=1e5+,M=4e6+,inf=1e9+;
int main()
{
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
int m1=max(*a/,a-(a*c)/);
int m2=max(*b/,b-(b*d)/);
if(m1>m2)
printf("Misha\n");
else if(m1==m2)
printf("Tie\n");
else
printf("Vasya\n");
return ;
}
1 second
256 megabytes
standard input
standard output
Misha hacked the Codeforces site. Then he decided to let all the users change their handles. A user can now change his handle any number of times. But each new handle must not be equal to any handle that is already used or that was used at some point.
Misha has a list of handle change requests. After completing the requests he wants to understand the relation between the original and the new handles of the users. Help him to do that.
The first line contains integer q (1 ≤ q ≤ 1000), the number of handle change requests.
Next q lines contain the descriptions of the requests, one per line.
Each query consists of two non-empty strings old and new, separated by a space. The strings consist of lowercase and uppercase Latin letters and digits. Strings old and new are distinct. The lengths of the strings do not exceed 20.
The requests are given chronologically. In other words, by the moment of a query there is a single person with handle old, and handlenew is not used and has not been used by anyone.
In the first line output the integer n — the number of users that changed their handles at least once.
In the next n lines print the mapping between the old and the new handles of the users. Each of them must contain two strings, old andnew, separated by a space, meaning that before the user had handle old, and after all the requests are completed, his handle is new. You may output lines in any order.
Each user who changes the handle must occur exactly once in this description.
5
Misha ILoveCodeforces
Vasya Petrov
Petrov VasyaPetrov123
ILoveCodeforces MikeMirzayanov
Petya Ivanov
3
Petya Ivanov
Misha MikeMirzayanov
Vasya VasyaPetrov123
思路:map模拟下就好;
#include<bits/stdc++.h>
using namespace std;
#define ll __int64
#define mod 1000000007
#define pi (4*atan(1.0))
const int N=1e3+,M=4e6+,inf=1e9+;
string a[N];
string b[N];
map<string,string>m;
int main()
{
int x;
scanf("%d",&x);
for(int i=;i<=x;i++)
cin>>a[i]>>b[i];
for(int i=x;i>=;i--)
{
m[a[i]]=b[i];
while(m[b[i]]!="")
{
m[a[i]]=m[b[i]];
m[b[i]]="";
}
}
int ans=;
for(int i=;i<=x;i++)
if(m[a[i]]!="")
ans++;
cout<<ans<<endl;
for(int i=;i<=x;i++)
if(m[a[i]]!="")
cout<<a[i]<<" "<<m[a[i]]<<endl;
return ;
}
1 second
256 megabytes
standard input
standard output
Let's define a forest as a non-directed acyclic graph (also without loops and parallel edges). One day Misha played with the forest consisting of n vertices. For each vertex v from 0 to n - 1 he wrote down two integers, degreev and sv, were the first integer is the number of vertices adjacent to vertex v, and the second integer is the XOR sum of the numbers of vertices adjacent to v (if there were no adjacent vertices, he wrote down 0).
Next day Misha couldn't remember what graph he initially had. Misha has values degreev and sv left, though. Help him find the number of edges and the edges of the initial graph. It is guaranteed that there exists a forest that corresponds to the numbers written by Misha.
The first line contains integer n (1 ≤ n ≤ 216), the number of vertices in the graph.
The i-th of the next lines contains numbers degreei and si (0 ≤ degreei ≤ n - 1, 0 ≤ si < 216), separated by a space.
In the first line print number m, the number of edges of the graph.
Next print m lines, each containing two distinct numbers, a and b (0 ≤ a ≤ n - 1, 0 ≤ b ≤ n - 1), corresponding to edge (a, b).
Edges can be printed in any order; vertices of the edge can also be printed in any order.
3
2 3
1 0
1 0
2
1 0
2 0
2
1 1
1 0
1
0 1
The XOR sum of numbers is the result of bitwise adding numbers modulo 2. This operation exists in many modern programming languages. For example, in languages C++, Java and Python it is represented as "^", and in Pascal — as "xor".
思路:总是有度数为1的节点,裸拓扑;
坑点,多个联通块;
#include<bits/stdc++.h>
using namespace std;
#define ll __int64
#define mod 1000000007
#define pi (4*atan(1.0))
const int N=1e5+,M=4e6+,inf=1e9+;
vector<int>v[N];
int du[N];
int sum[N];
priority_queue<int>q;
int main()
{
int n;
ll ans=;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d%d",&du[i],&sum[i]);
ans+=du[i];
if(du[i]==)
q.push(i);
}
while(!q.empty())
{
int x=q.top();
q.pop();
if(du[x]==)
continue;
du[x]--;
v[x].push_back(sum[x]);
du[sum[x]]--;
sum[sum[x]]^=x;
if(du[sum[x]]==)
q.push(sum[x]);
}
printf("%lld\n",ans/);
for(int i=;i<n;i++)
{
for(int t=;t<v[i].size();t++)
printf("%d %d\n",i,v[i][t]);
}
return ;
}
/*
4
1 1
1 0
1 3
1 2
*/
Codeforces Round #285 (Div. 2) A, B , C 水, map ,拓扑的更多相关文章
- Codeforces Round #285 (Div. 2) A B C 模拟 stl  拓扑排序
		
A. Contest time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
 - Codeforces Round #285 (Div. 2)C. Misha and Forest(拓扑排序)
		
传送门 Description Let's define a forest as a non-directed acyclic graph (also without loops and parall ...
 - 图论/位运算 Codeforces Round #285 (Div. 2) C. Misha and Forest
		
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
 - 字符串处理 Codeforces Round #285 (Div. 2) B. Misha and Changing Handles
		
题目传送门 /* 题意:给出一系列名字变化,问最后初始的名字变成了什么 字符串处理:每一次输入到之前的找相印的名字,若没有,则是初始的,pos[m] 数组记录初始位置 在每一次更新时都把初始pos加上 ...
 - 水题 Codeforces Round #285 (Div. 2) C. Misha and Forest
		
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
 - Codeforces Round #367 (Div. 2) A. Beru-taxi (水题)
		
Beru-taxi 题目链接: http://codeforces.com/contest/706/problem/A Description Vasiliy lives at point (a, b ...
 - Codeforces Round #603 (Div. 2) A. Sweet Problem(水.......没做出来)+C题
		
Codeforces Round #603 (Div. 2) A. Sweet Problem A. Sweet Problem time limit per test 1 second memory ...
 - Codeforces Round #334 (Div. 2) A. Uncowed Forces 水题
		
A. Uncowed Forces Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/604/pro ...
 - Codeforces Round #285 (Div.1 B & Div.2 D) Misha and Permutations Summation --二分+树状数组
		
题意:给出两个排列,求出每个排列在全排列的排行,相加,模上n!(全排列个数)得出一个数k,求出排行为k的排列. 解法:首先要得出定位方法,即知道某个排列是第几个排列.比如 (0, 1, 2), (0, ...
 
随机推荐
- poj2528
			
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 56864 Accepted: 16445 ...
 - libnids介
			
转自:http://blog.chinaunix.net/uid-22832715-id-2111578.html Libnids开发包介绍 Libnids是一个用于网络入侵检测开发的专业编程 ...
 - 巨蟒python全栈开发django10:ajax&&登录认证
			
通过题目进行知识点回顾: 聚合查询 From django.db.models import Avg,Min,Max,F,Q,Count,Sum #查询书籍的平均值 Ret= Models.Book. ...
 - Python: names, values, assignment and mutability
			
推荐先看视频(youtube) Ned Batchelder - Facts and Myths about Python names and values - PyCon 2015 Change v ...
 - sqlbulk的问题
			
今天在bulk的时候遇到一个很“奇怪”的问题 无论怎样修改传入的值,也会报类型转换的错误.后来 在此文中找到了正解 bbs.csdn.net/topics/390430064 SqlBulkCopy不 ...
 - Ubuntu 16.04安装各种软件
			
Ubuntu 16.04发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化. 1.删除libreoffice libreoffice虽然是开源的,但是Java ...
 - Linux学习拾遗
			
一.安装iso文件 首先建立一个目录作为挂载点:# mkdir /mnt/iso 获得root权限然后使用下面的参数挂载ISO映像文件:# mount -t iso9660 /path/image.i ...
 - Redis3.2.5配置主从服务器遇到的一些错误
			
注意:关闭主从服务器的防火墙 问题一: WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net ...
 - BufferedReader.mark()函数注意事项
			
BufferedRedder.mark()注意事项,在如下代码u3 = br3.readLine();会出现java.lang.OutOfMemoryError: Java heap space异常. ...
 - leetCode 64.Minimum Path Sum (最短路) 解题思路和方法
			
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...