Beautiful Paintings (CodeForces - 651B)(升序,下一行升序,共多少间隔)

                                                 Beautiful Paintings

                                                                     time limit per test 1 second

                                                              memory limit per test 256 megabytes

                                                                         input standard input

                                                                        output standard output

There are n pictures delivered for the new exhibition. The i-th painting has beauty ai. We know that a visitor becomes happy every time he passes from a painting to a more beautiful one.

We are allowed to arranged pictures in any order. What is the maximum possible number of times the visitor may become happy while passing all pictures from first to last? In other words, we are allowed to rearrange elements of a in any order. What is the maximum possible number of indices i (1 ≤ i ≤ n - 1), such that ai + 1 > ai.

Input

The first line of the input contains integer n (1 ≤ n ≤ 1000) — the number of painting.

The second line contains the sequence a1, a2, ..., an (1 ≤ ai ≤ 1000), where ai means the beauty of the i-th painting.

Output

Print one integer — the maximum possible number of neighbouring pairs, such that ai + 1 > ai, after the optimal rearrangement.

Examples

input

5
20 30 10 50 40

output

4

input

4
200 100 100 200

output

2

Note

In the first sample, the optimal order is: 10, 20, 30, 40, 50.

In the second sample, the optimal order is: 100, 200, 100, 200.

题解

题的大意是:小明准备了一堆毛绒玩偶要送给小红当乱七八糟各种节日的礼物,小红喜欢大的玩偶,越大越喜欢。所以小明就想,从小的开始送,下次送比这次大一点的,小红就开心一点。小红答应如果小明让她开心520次就和他在一起,钢铁直男小明暂时只想到这一种让小红开心的方法,但他还不知道他现在买的这些玩偶能让小红开心几次,只知道他现在所有玩偶的尺寸。所以,苦X的我们又要开始算了

这个题让我想到很久以前的一道排序?题,那道题大致是:给一堆乱七八糟的数据,让从小到大排列,重复的在下一行继续升序排列,直到排完。和这道题简直不要再一样,唯一区别是,那道题是输出所有的排列,这道题是输出次数。次数,并不是普通的次数,而是2.0版的次数,比如数列1.2,开心次数为1,数列1.2.5.7.9,开心次数为4,也就是说,这个次数是这一行的数的个数-1,(就像五手指几个空隙一样),每行加起来就是最终答案

# include <cstdio>
# include <algorithm>
# include <cstring>

using namespace std;
const int maxn = 1e3 + 10;

int main()
{
	int n;
	scanf("%d",&n);
	int a[maxn];
	for(int i=0;i<n;i++) scanf("%d",&a[i]);
	
	sort(a,a+n);
	int mark = 0, flag = -1, st = 0;
	while(st < n)
	{
		for(int i=0;i<n;i++)
		{
			if(a[i] > flag)
			{
				mark ++;
				flag = a[i];
				a[i] = -1;
				st++;
			}
		}
		mark--;
		flag = -1;
	}
	printf("%d\n",mark);
	return 0;
 } 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我作为一个语言模型并不能直接为您提供代码,但我可以给您提供一些思路和建议。 首先,您需要一个JSON数据来存储十大名画的信息,例如: ```json [ { "id": 1, "name": "蒙娜丽莎", "artist": "达芬奇", "year": "1503-1506", "location": "卢浮宫" }, { "id": 2, "name": "星夜", "artist": "梵高", "year": "1889", "location": "纽约现代艺术博物馆" }, // ... 其他名画信息 ] ``` 然后,您可以使用JavaScript来动态生成表格行,例如: ```javascript // 获取表格元素 var table = document.getElementById("painting-table"); // 遍历名画数组,为每个名画生成一行 for (var i = 0; i < paintings.length; i++) { // 创建表格行 var row = table.insertRow(-1); // 创建单元格并填充数据 var idCell = row.insertCell(0); idCell.innerHTML = paintings[i].id; var nameCell = row.insertCell(1); nameCell.innerHTML = paintings[i].name; var artistCell = row.insertCell(2); artistCell.innerHTML = paintings[i].artist; var yearCell = row.insertCell(3); yearCell.innerHTML = paintings[i].year; var locationCell = row.insertCell(4); locationCell.innerHTML = paintings[i].location; // 创建操作单元格 var actionCell = row.insertCell(5); var editButton = document.createElement("button"); editButton.innerHTML = "编辑"; actionCell.appendChild(editButton); var deleteButton = document.createElement("button"); deleteButton.innerHTML = "删除"; actionCell.appendChild(deleteButton); } ``` 接下来,您需要为每个编辑按钮和删除按钮添加点击事件,例如: ```javascript // 获取所有编辑按钮和删除按钮 var editButtons = document.querySelectorAll("#painting-table button:nth-child(1)"); var deleteButtons = document.querySelectorAll("#painting-table button:nth-child(2)"); // 为每个编辑按钮和删除按钮添加点击事件 for (var i = 0; i < editButtons.length; i++) { // 添加编辑按钮点击事件 editButtons[i].addEventListener("click", function() { // 隐藏其他行所有操作按钮 var rows = document.querySelectorAll("#painting-table tr"); for (var j = 1; j < rows.length; j++) { var buttons = rows[j].querySelectorAll("button"); if (buttons[0] !== this) { buttons[0].style.display = "none"; buttons[1].style.display = "none"; } } // 将当前行编辑按钮修改为“保存”、“取消” var actions = this.parentNode; var saveButton = document.createElement("button"); saveButton.innerHTML = "保存"; actions.replaceChild(saveButton, this); var cancelButton = document.createElement("button"); cancelButton.innerHTML = "取消"; actions.insertBefore(cancelButton, saveButton); }); // 添加删除按钮点击事件 deleteButtons[i].addEventListener("click", function() { // 给出警告框 if (confirm("确认删除这条记录吗?")) { // 删除当前行数据,并重新加载数据 var row = this.parentNode.parentNode; var id = row.cells[0].innerHTML; // TODO: 根据ID删除名画数据,并重新加载表格 } }); } ``` 接下来,您需要为“增加”按钮添加点击事件,例如: ```javascript // 获取“增加”按钮 var addButton = document.getElementById("add-button"); // 添加“增加”按钮点击事件 addButton.addEventListener("click", function() { // 添加一行空行 var table = document.getElementById("painting-table"); var row = table.insertRow(-1); var idCell = row.insertCell(0); idCell.innerHTML = ""; var nameCell = row.insertCell(1); nameCell.innerHTML = "<input type='text' value=''>"; var artistCell = row.insertCell(2); artistCell.innerHTML = "<input type='text' value=''>"; var yearCell = row.insertCell(3); yearCell.innerHTML = "<input type='text' value=''>"; var locationCell = row.insertCell(4); locationCell.innerHTML = "<input type='text' value=''>"; // 创建操作单元格 var actionCell = row.insertCell(5); var saveButton = document.createElement("button"); saveButton.innerHTML = "保存"; actionCell.appendChild(saveButton); var cancelButton = document.createElement("button"); cancelButton.innerHTML = "取消"; actionCell.appendChild(cancelButton); // 添加保存按钮点击事件 saveButton.addEventListener("click", function() { // TODO: 校验信息完整性,将输入信息加入十大名画数组中,并重新加载表格 }); // 添加取消按钮点击事件 cancelButton.addEventListener("click", function() { // 给出警告框 if (confirm("确认取消吗?")) { // 删除当前行数据,并重新加载表格 table.deleteRow(-1); } }); }); ``` 最后,您需要实现保存信息和取消操作的逻辑,例如: ```javascript // 获取保存按钮和取消按钮 var saveButtons = document.querySelectorAll("#painting-table button:nth-child(1)"); var cancelButton = document.querySelectorAll("#painting-table button:nth-child(2)"); // 为保存按钮和取消按钮添加事件 for (var i = 0; i < saveButtons.length; i++) { saveButtons[i].addEventListener("click", function() { // TODO: 校验信息完整性,将输入信息加入十大名画数组中,并重新加载表格 }); cancelButton[i].addEventListener("click", function() { // 给出警告框 if (confirm("确认取消吗?")) { // 重新加载数据 // TODO: 重新加载名画数据,并重新加载表格 } }); } ``` 以上是一个初步的实现思路,具体实现细节还需要根据您的具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值