codeforces edu round3
Emily's birthday is next week and Jack has decided to buy a present for her. He knows she loves books so he goes to the local bookshop, where there are n books on sale from one of m genres.
In the bookshop, Jack decides to buy two books of different genres.
Based on the genre of books on sale in the shop, find the number of options available to Jack for choosing two books of different genres for Emily. Options are considered different if they differ in at least one book.
The books are given by indices of their genres. The genres are numbered from 1 to m.
The first line contains two positive integers n and m (2 ≤ n ≤ 2·105, 2 ≤ m ≤ 10) — the number of books in the bookstore and the number of genres.
The second line contains a sequence a1, a2, ..., an, where ai (1 ≤ ai ≤ m) equals the genre of the i-th book.
It is guaranteed that for each genre there is at least one book of that genre.
Print the only integer — the number of ways in which Jack can choose books.
It is guaranteed that the answer doesn't exceed the value 2·109.
4 3
2 1 3 1
5
7 4
4 2 3 1 2 4 3
18
The answer to the first test sample equals 5 as Sasha can choose:
- the first and second books,
- the first and third books,
- the first and fourth books,
- the second and third books,
- the third and fourth books.
没错我超时了··· test19肯定是个大数据,然而一时想不出什么方法来优化。占坑留着吧 日后再补
#include <stdio.h>
#include <stdlib.h>
int books[];
int main(int argc, char *argv[])
{
int n,m;
__int64 ways;
while(scanf("%d%d",&n,&m)!=EOF)
{
ways=;
int i,j;
//for(i=0;i<n;i++)
//scanf("%d",&books[i]);
scanf("%d",&books[]);
for(i=;i<n;i++)
{
scanf("%d",&books[i]);
for(j=;j<i;j++)
{
if(books[i]!=books[j])
ways++;
}
}
printf("%I64d\n",ways);
}
return ;
}
今天上cf看了看别人的代码,用数学方法AC了···
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int a[],b[];//b组用来记录书的种类
int main(int argc, char *argv[])
{
int n,m;
int i,count;
int k; while(scanf("%d%d",&n,&m)!=EOF)
{
memset(b,,sizeof());
k=;
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
b[a[i]]++; //相应种类的书籍数目++
}
count=n;
for(i=;i<=m;i++)
{
count=count-b[i];
k+=b[i]*count;//b[i]种类书的数量乘上剩下其他种类书籍的数量
}
printf("%d\n",k);
}
return ;
}
codeforces edu round3的更多相关文章
- Codeforces AIM Tech Round3
打得最烂一场Codeforces,多次都错题,无限WA... A题: 题意:给定n个橘子的大小,大小超过b的丢掉,不足d的补充进来,同时超过d的部分去掉,问要去掉几次 分析:直接模拟即可 #inclu ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
随机推荐
- Linux 服务器相关的一下链接
Apache 虚拟主机 VirtualHost 配置 以下是各操作系统的配置方法. Redhat Enterprise Linux Ubuntu Linux Windows Mac OS http:/ ...
- PHP获取远程图片并调整图像大小
<?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw= ...
- 解决FLASH最高层的问题,让FLASH置于div之下
三个步骤:1.设置div 的 z-index:9999 //在最上面显示 这一步就可以保证div在img之上2.<param name="wmode" value=" ...
- Adroid_Spinner_ArrayAdapter
XML布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...
- ubuntu_scrapy 安装
1:install pip python-dev sudo apt-get install python-dev sudo apt-get install libevent-dev ...
- Linux修改 DNS
前不久服务器上遇到一些问题,需要修改服务器的dns配置,写下来记下,笔者使用的说centos 6.5. DNS的配置文件在/etc/resolv.conf,但一般情况下修改后重启服务 service ...
- Jquery选择器,操作DOM
刚接触jQuery,她真的是个好东西,操作DOM,修改样式,都很方便,主要获取DOM树的类和子代很方便. 今天用jq做了tab面包屑,不过用的是别人的代码,自己修改的,不错也做出来了,原理也有些明白, ...
- Java阻塞中断和LockSupport
在介绍之前,先抛几个问题. Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? ...
- JavaScript检测实例属性, 原型属性
0.前提 JavaScript对象的属性分为两种存在形态. 一种是存在实例中, 另一是存在原型对象中. 根据上述, 检测属性的时候会出现4种情况 既不存在实例中, 也不存在原型对象中 存在实例中, 不 ...
- Android更改桌面应用程序launcher的两种方式
http://blog.csdn.net/mdx20072419/article/details/9632779/ launcher,也就是android的桌面应用程序.下图是我正在使用的魅族手机的l ...