Codeforces Round #260 (Div. 2) A~C
A. Laptops
time limit per test:1 second
memory limit per test:256 megabytes
input:standard input
output:standard output
One day Dima and Alex had an argument about the price and quality of laptops. Dima thinks that the more expensive a laptop is, the better it is. Alex disagrees. Alex thinks that there are two laptops, such that the price of the first laptop is less (strictly smaller) than the price of the second laptop but the quality of the first laptop is higher (strictly greater) than the quality of the second laptop.
Please, check the guess of Alex. You are given descriptions of n laptops. Determine whether two described above laptops exist.
The first line contains an integer n (1 ≤ n ≤ 105) — the number of laptops.
Next n lines contain two integers each, ai and bi (1 ≤ ai, bi ≤ n), where ai is the price of the i-th laptop, and bi is the number that represents the quality of the i-th laptop (the larger the number is, the higher is the quality).
All ai are distinct. All bi are distinct.
If Alex is correct, print "Happy Alex", otherwise print "Poor Alex" (without the quotes).
2
1 2
2 1
Happy Alex
题意 : 给你n台笔记本的价格和质量,如果能找出一台电脑的价格比另一台的高可是质量却比他低就输出Happy Alex,否则输出Poor Alex。
思路 :将价格排序,然后找相邻的是否质量后边的大于前边那台的。这样做的道理是,价格排完序之后,如果存在不相邻的后者质量小于前者质量,那么中间必定有相邻的质量不符合前小于后。例如,价格3 4 5的电脑,如果5的质量比3的差,那么4的质量高于3时,说明4的质量高于5,4 5相邻。如果4的质量低于5的话,那么4的质量低于3,3 4 相邻。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm> using namespace std ; struct node
{
int price ;
int qua ;
}a[]; int cmp(node x,node y)
{
return x.price < y.price ;
}
int main()
{
int n ;
scanf("%d",&n) ;
for(int i = ; i < n ; i++)
{
scanf("%d %d",&a[i].price,&a[i].qua) ; }
sort(a,a+n,cmp) ;
int flag = ;
for(int i = ; i < n- ; i++)
{
if(a[i].qua > a[i+].qua)
{
flag = ;
break ;
}
}
if(flag)
puts("Happy Alex") ;
else puts("Poor Alex") ;
return ;
}
B. Fedya and Maths
time limit per test:1 second
memory limit per test:256 megabytes
input:standard input
output:standard output
Fedya studies in a gymnasium. Fedya's maths hometask is to calculate the following expression:
(1n + 2n + 3n + 4n) mod 5
for given value of n. Fedya managed to complete the task. Can you? Note that given number n can be extremely large (e.g. it can exceed any integer type of your programming language).
The single line contains a single integer n (0 ≤ n ≤ 10105). The number doesn't contain any leading zeroes.
Print the value of the expression without leading zeros.
4
4
124356983594583453458888889
0
Operation x mod y means taking remainder after division x by y.
Note to the first sample:

题意 : 给你一个N,让你求(1n+2n+3n+4n)%5的值。
思路 : 1到9这9的数字的n次方都是有规律的,1无论几次方个位数一定是1,而2的几次方个位数则是6,2,4,8分别代表是n模4为0,则2n个位数是6,n模4为1,则个位数是2……,
3的与2一样的规律,分别是1 3 9 7,而4的规律则是6 4,只有两个,我们写成以下形式:
n%4 = 0 1 + 6 + 1 + 6 = 14
n%4 = 1 1 + 2 + 3 + 4 = 10
n%4 = 2 1 + 4 + 9 + 6 = 20
n%4 = 3 1 + 8 + 7 + 4 = 20
由此可见,只有在n%4为0时,取余为4,其余都为0.。。。
import java.math.*;
import java.util.*; public class Main
{ public static void main(String[] args)
{
Scanner cin = new Scanner(System.in) ;
BigInteger n;
n = cin.nextBigInteger();
BigInteger t = n.mod(BigInteger.valueOf(4));
if(t.compareTo(BigInteger.ZERO) == 0)
System.out.println(4) ;
else System.out.println(0) ;
cin.close();
}
}
C. Boredom
memory limit per test:256 megabytes
input:standard input
output:standard output
Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.
Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let's denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.
Alex is a perfectionist, so he decided to get as many points as possible. Help him.
The first line contains integer n (1 ≤ n ≤ 105) that shows how many numbers are in Alex's sequence.
The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105).
Print a single integer — the maximum number of points that Alex can earn.
2
1 2
2
3
1 2 3
4
9
1 2 1 3 2 2 2 2 3
10
Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this [2, 2, 2, 2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.
题意 : 删掉某个数x,之后你可以得到x分,但同时数列中所有x-1与x+1都要删除,问怎么样删除能得到最大的分数,输出这个分数。
思路 :先哈希一下再dp,dp[i]=max(dp[i-1],dp[i-2]+i*hashh[i]),这个方程代表的是当删除 i 的时候能得到分数,要么是你不删除i,而删除i-1,则得到的是删除i-1时得到的最大的分数,此时i与i-2都会被删掉。
如果你要删除 i ,因此i-1需要被删除,此时得到的分数就是你删除i-2时得到的最大值再加上删除 i 得到的分数。
例如6 7 8
你要是删除7,那你到8这个位置的时候能得到的最大值就是删除7得到的最大值。可是如果你删除6的话,那你到8这个位置时就是删除6得到的最大值再加上删除自己能够得到的分数。
#include <cstdio>
#include <cstring>
#include <iostream>
#define LL long long using namespace std ; int a[] ;
LL hashh[],dp[] ; int main()
{
int n ;
while(scanf("%d",&n)!=EOF)
{
memset(hashh,,sizeof(hashh)) ;
memset(dp,,sizeof(dp)) ;
int maxx = ;
for(int i = ; i < n ; i++)
{
scanf("%d",&a[i]) ;
hashh[a[i]] ++ ;
maxx = max(a[i],maxx) ;
}
dp[] = hashh[] ;
for(int i = ; i <= maxx ; i++)
dp[i] = max(dp[i-],dp[i-]+i*hashh[i]) ;
printf("%I64d\n",dp[maxx]) ;
}
return ;
}
Codeforces Round #260 (Div. 2) A~C的更多相关文章
- DP Codeforces Round #260 (Div. 1) A. Boredom
题目传送门 /* 题意:选择a[k]然后a[k]-1和a[k]+1的全部删除,得到点数a[k],问最大点数 DP:状态转移方程:dp[i] = max (dp[i-1], dp[i-2] + (ll) ...
- 递推DP Codeforces Round #260 (Div. 1) A. Boredom
题目传送门 /* DP:从1到最大值,dp[i][1/0] 选或不选,递推更新最大值 */ #include <cstdio> #include <algorithm> #in ...
- Codeforces Round #260 (Div. 2)AB
http://codeforces.com/contest/456/problem/A A. Laptops time limit per test 1 second memory limit per ...
- Codeforces Round #260 (Div. 1) D. Serega and Fun 分块
D. Serega and Fun Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/pro ...
- Codeforces Round #260 (Div. 1) C. Civilization 并查集,直径
C. Civilization Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/probl ...
- Codeforces Round #260 (Div. 1) A - Boredom DP
A. Boredom Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/problem/A ...
- Codeforces Round #260 (Div. 1) A. Boredom (简单dp)
题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...
- Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
题目链接:http://codeforces.com/problemset/problem/455/A A. Boredom time limit per test 1 second memory l ...
- Codeforces Round #260 (Div. 2)
A. Laptops 题目意思: 给定n台电脑,第i台电脑的价格是ai ,质量是bi ,问是否存在一台电脑价格比某台电脑价格底,但质量确比某台电脑的质量高,即是否存在ai < aj 且 bi & ...
- Codeforces Round #260 (Div. 2) C
Description Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. On ...
随机推荐
- 从零开始学ios开发(一):准备起航
首先介绍一下自己的背景,本人09年研究生毕业,大学就不介绍了,反正是上海的一所211大学,学的是计算机科学与技术专业,学生时代,从事过ACM,没有什么太大的成就,中国的牛人是在太多,我的水平,估计连高 ...
- chmod命令用法
指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix ...
- arm-elf-gcc交叉编译器的使用教程
arm-elf-gcc交叉编译器的使用教程 一开始需要安装arm-elf-gcc,但是这是一个32位的程序,我是安装了64位的系统,据说安装ia32.libs依赖库能运行这个,但是看到博客上面前人安装 ...
- Java Day 09
子父类的构造函数 在子类的构造函数中,第一行有一个默认的隐式语句:super() 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数. 为什么子类实例化的时候要访问父类中的构造 ...
- P1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
呵呵呵呵呵,很水的DP,同时能够朴素枚举出来,这数据弱的 是 吃了尸米吧.. var n,i,j,k,l,ans:longint; begin readln(n); to trunc(sqrt(n)) ...
- 代码实现native2assci
public static void main(String[] args) { String unicode = ""; String s="用户名"; ch ...
- 面向对象设计SOLID五大原则
转载自:码农社区,http://w3croom.com/read.php?tid-4522.html 今天我给大家带来的是面向对象设计SOLID五大原则的经典解说. 我们知道,面向对象对于 ...
- 软件工程随堂小作业——随机四则运算Ⅱ(C++)
一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) // 四则运算2.cpp : Defines the entry point for the consol ...
- WinForm-利用Anchor和Dock属性缩放控件
转自:http://www.cnblogs.com/tianzhiliang/articles/2144692.html 有一点让许多刚接触WinForms编程的开发者感到很棘手,就是在用户调整各种控 ...
- mailx 乱码,sendmail发html邮件,脚本开机启动
echo "yes"|mailx -s "我" -S ttycharset=utf-8 -S sendcharsets=utf-8 -S encoding=ut ...