时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
在观星的时候,一种常用的方式是划出类似于正方形的区域内,确定其中所有星星的坐标。
现在我们在星空(一个无限大的二维平面)上建立坐标系。由于星星很小,我们忽略它的面积,认为每一个星星是一个点,且所有星星的坐标都是整数。
幸运星的定义是这一颗星星在这个平面内,正上,正下,正左,正右都有其他的星星(不一定相邻)。
现在,我们已经将这个正方形的区域取出,并且将他们所在的坐标给你。现在希望你能计算,这个平面内有多少颗幸运星?
输入
输入第一行包含一个数n,代表正方形区域内星星的总数。
接下来n行,每行两个整数xi,yi,代表这颗星星的坐标。
(n<=2000,-1000<=xi,yi<=1000,没有两颗星星的坐标是相同的。)
输出
输出包含一个数,即有多少颗星星是幸运星。
样例输入
8
0 0
0 1
0 2
0 3
1 1
1 2
-1 1
-1 2
样例输出
2
提示
样例解释:
有两颗幸运星,分别是(0,1)(0,2)
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
货币数值的规范化是金融公司的一个问题,现在你需要写一个程序来解决这一问题:
1.货币数值的整数部分要求每3位加一个英文逗号’,’(不含引号)。例如12345678应该规范化为12,345,678
2.货币数值最多只有两位小数,如果有多余的小数位数应当舍去。注意,不是四舍五入。
3.负数代表欠款,在规范化后应当在数值两端加上括号 ‘(’ 和 ‘)’ ,然后省略掉负号。
4.应当在数值前面,前括号后面(如果有括号的话)加上金钱符号’$’(不含引号)
现在给你一个数字,请你规范化这一数字
输入
输入包含多种数据,每组数据一行一个数字,可能为小数,整数,负整数,负小数或者零。
数据保证数字没有前导0,保证不会出现欠0元的情况
输出
输出规范化后的内容
样例输入
203323
0.0
0.000000
0.009212121
343444323.32432
-12344.1
-12345678.9
样例输出
$203,323.00
$0.00
$0.00
$0.00
$343,444,323.32
($12,344.10)
($12,345,678.90)
提示
范围
每个字符串长度不会超过100
轮流出局
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
现在有n名选手进行轮流报数,选手按顺序编号为1~n,另外我们会给出一个序列A,游戏会进行n轮,每轮会出局一名选手,第i轮淘汰的选手最后的排名是n-i+1,即第一轮出局的是倒数第一。出局的选手不会参与下一轮报数。
每轮游戏都是从第一个选手开始报数,即如果1号选手仍在,则从1号选手开始,否则从2号选手开始,以此类推,但是注意,每轮报数是从0开始的,第i轮时,第一个报到A[i]的选手会出局,且当前轮游戏结束。A[i]有可能大于当前的剩余人数,则最后一个人报完以后,会由第一个人接着报,直到报出A[i]。
输入
输入第一行包含一个正整数n,表示有n名选手。(1<=n<=100000)
输入第二行包含n个正整数,表示序列A。(0<=A[i]<=10^9)
输出
输出包含n行,每行一个正整数,第i行的正整数表示i号选手的排名是多少。即输出是一个1~n的排列。
样例输入
4
1 2 1 2
样例输出
1
4
2
3
提示
样例解释,
第一轮中,1-4号选手报数分别是0,1,+,+(+代表未报数),因为A[1]=1,所以2号选手出局,排名为4。
第二轮中,1-4号选手报数为0,-,1,2(-代表一出局),因为A[2]=2,所以4号选手出局,排名为3。
第三轮中,1-4号选手报数为0,-,1,-,因为A[3]=1,所以3号选手出局,排名为2。
第四轮只有1号选手了,所以他会报所有的数字,最后出局。
最优购买策略
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
熊爷爷的超市正在打折活动当中!
目前,你和你的家里人一共k个人一起去买生活用品。由于打折活动力度很大,每个人只能去付款一次,但是这一次买的东西价格是不做限制的。
熊爷爷的超市物品分为两类:A类和B类物品,活动是如果一个人买的商品中含有A类物品,那么他买的所有物品中最便宜的一件物品半价。如果一个人买的商品中只有B类物品,那么他买的物品不打折。
你们计划要买n个物品,现在将这n个物品的信息给你,请你计算如何分配k位家人比较合算。
输入
第一行有两个整数n,k,代表物品的数量和人的数量。
接下来n行,每行两个整数u,v描述一个物品。u代表物品的价格,v代表商品的种类。如果v为1,代表其为A类商品。如果v为2,代表其为B类商品。
1<=n,k<=1000,1<=u<=1000000,v∈{1,2}
输出
输出一行一个小数,表示所需要的最少的钱数。保留两位小数输出。
样例输入
5 2
10 1
2 2
5 2
8 1
9 1
样例输出
28.00
提示
样例解释:
第一个人只买第一个物品,第二个人买剩下的物品。
第一个人由于买了A类物品,最便宜的物品半价,付款5元
第二个人由于也买了A类物品,最便宜的物品半价,付款23元(物品二半价)
(买法不唯一)
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
两个数是相似的,当且仅当他们位与起来不为0。例如,3和5是相似的,因为3的二进制为011,5的二进制为101,他们位与起来为001不为0。
现在,给出序列a1,a2…an我们希望你找出,对于任意的i∈[1,n],是否存在j∈[1,n],使得ai,aj不相似。
输入
输入第一行包括一个整数n,代表序列a的长度
接下来一行n个数,空格隔开,代表序列a
1<=n<=100000,1<=ai<=106
输出
输出n个数。
如果对于i个数,存在j∈[1,n],使得ai,aj不相似,输出1,否则输出-1
样例输入
4
3 5 6 1
样例输出
-1 -1 1 1
提示
样例解释:
唯一一对不相似的数是6和1,故6和1的答案为1,其余为-1。