题解:小蓝的漆房
本文最后更新于 196 天前,其中的信息可能已经有所发展或是发生改变。

问题描述

小蓝是一位有名的漆匠,他的朋友小桥有一个漆房,里面有一条长长的走廊,走廊两旁有许多相邻的房子,每间房子最初被涂上了一种颜色。

小桥来找小蓝,想让他把整个走廊都涂成同一个颜色。小蓝告诉小桥,他每天只能涂一段长度为 kk 的区间。对于每个区间,他可以选择将其中的房子重新涂上任何一种颜色,或者保持原来的颜色不变。

小桥想知道小蓝至少要涂几天,才能让整个走廊变得美丽。

请帮助小桥解决这个问题。

输入格式

第一行包含一个整数 tt(1≤1001≤100),表示测试用例的数量。

每个测试用例的第一行包含两个整数 nn 和 kk(1≤k≤n≤1041≤kn≤104),第二行包含 nn 个整数 a1,a2,⋯,ana1​,a2​,⋯,an​(1≤ai≤601≤ai​≤60),分别表示每个房子最初的颜色。

保证所有测试用例中 nn 的总和不超过 104104。

输出格式

对于每个测试用例,输出一个整数,表示小蓝需要涂漆的最少天数。

样例输入

2
5 2
1 1 2 2 1
6 2
1 2 2 3 3 3

样例输出

1
2

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M

正确解法:

分析:模拟题目罢了

#include <iostream>
#include<cstring>
#include<unordered_set>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
  int n; cin>>n;
  for(int i =0;i<n;i++){
    int l,w; cin>>l>>w;
    vector<int> arr(l);
    unordered_set<int> s;
    for(int j = 0;j<l;j++){
      cin >>arr[j];
      s.insert(arr[j]);
    } 
    int ans = 1e9;
    for(auto &x:s){
      int cnt = 0;
      for(int j = 0;j<l;j++){
        if(arr[j]==x) continue;
        cnt++; j+= w-1;
      }
      ans = min(ans,cnt);
    }
    cout<<ans<<endl;
  }
  return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇