UVA11991第k次出现的v的下标
生活随笔
收集整理的這篇文章主要介紹了
UVA11991第k次出现的v的下标
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ?給你一個有n個數的數字序列,然后有m組詢問,每組詢問是問第k次出現的v在序列里的小標是多少?
思路:
? ? ?簡單題目,直接開個二維的容器就行了,標記出現次數可以開個數組或者是一維的容器,沒啥想法直接寫就行了。
#include<map>
#include<stdio.h>
using namespace std;
map<int ,map<int ,int> >Ans;
map<int ,int>mark;
int main ()
{
? ? int n ,m ,v ,k ,i ,a;
? ? while(~scanf("%d %d" ,&n ,&m))
? ? {
? ? ? ? Ans.clear();
? ? ? ? mark.clear(); ??
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ?scanf("%d" ,&a);
? ? ? ? ? ?Ans[a][++mark[a]] = i;
? ? ? ? } ? ? ? ? ? ? ?
? ? ? ? while(m--)
? ? ? ? {
? ? ? ? ? ? scanf("%d %d" ,&k ,&v);
? ? ? ? ? ? printf("%d\n" ,Ans[v][k]); ? ? ?
? ? ? ? }
? ? }
? ? return 0;
}
? ??
? ? ?給你一個有n個數的數字序列,然后有m組詢問,每組詢問是問第k次出現的v在序列里的小標是多少?
思路:
? ? ?簡單題目,直接開個二維的容器就行了,標記出現次數可以開個數組或者是一維的容器,沒啥想法直接寫就行了。
#include<map>
#include<stdio.h>
using namespace std;
map<int ,map<int ,int> >Ans;
map<int ,int>mark;
int main ()
{
? ? int n ,m ,v ,k ,i ,a;
? ? while(~scanf("%d %d" ,&n ,&m))
? ? {
? ? ? ? Ans.clear();
? ? ? ? mark.clear(); ??
? ? ? ? for(i = 1 ;i <= n ;i ++)
? ? ? ? {
? ? ? ? ? ?scanf("%d" ,&a);
? ? ? ? ? ?Ans[a][++mark[a]] = i;
? ? ? ? } ? ? ? ? ? ? ?
? ? ? ? while(m--)
? ? ? ? {
? ? ? ? ? ? scanf("%d %d" ,&k ,&v);
? ? ? ? ? ? printf("%d\n" ,Ans[v][k]); ? ? ?
? ? ? ? }
? ? }
? ? return 0;
}
? ??
總結
以上是生活随笔為你收集整理的UVA11991第k次出现的v的下标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVA11174村民排队问题
- 下一篇: UVA11997求前k个和,多路归并问题