日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

CCF-CSP真题《202209-4—吉祥物投票》思路+python题解

發布時間:2023/12/16 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CCF-CSP真题《202209-4—吉祥物投票》思路+python题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?想查看其他題的真題及題解的同學可以前往查看:CCF-CSP真題附題解大全

試題編號:202209-4
試題名稱:吉祥物投票
時間限制:1.0s
內存限制:1.0GB
問題描述:

題目描述

為了促進西西艾弗島上的旅游業發展,當地決定設計一個吉祥物形象。活動吸引了眾多設計領域的大師和愛好者參加,經過初步篩選,共選出了?m?個作品,編號為?1~m,進行最終的投票角逐。

活動還吸引了西西艾弗島上的?n?名投票者參與,編號為?1~n,每人都在最終的投票環節擁有投一票的權利,也可以放棄投票。我們定義每個人的投票意愿?ai(1≤i≤n)?為一個?0~m?的整數,若?ai=0?表示這個人目前沒有支持的作品,打算放棄投票,否則表示這個人支持第?ai?號作品并有意愿將票投給它。

最初,由于所有人對參與競選的作品都不了解,因此投票意愿?ai?均為?0。接下來是緊張刺激的拉票環節,作品的設計者們要想方設法給自己的作品拉票,這一過程中可能出現如下若干種事件:

1 l r x:編號為?x?的作品開展了一場拉票活動,成功地吸引了編號為?l~r?的投票者的興趣,使得他們的投票意愿全部改為?x。

2 x w:編號為?x?的作品需要經歷一次大規模修改,所以需要暫時退出競選。由于?x?與?w?兩個作品的風格較為相近,因此原先投票意愿為?x?的投票者的投票意愿變為了?w。特別地,若?w=0,表示這些投票者暫時找不到新的支持的作品。需要注意的是,作品?x?退出競選只是暫時的,因此后續的事件中作品?x?仍可能出現。

3 x y:主辦方發現自己的統計出現了失誤,將編號為?x?和?y?的作品弄顛倒了。發布勘誤后,所有原先投票意愿為?x?的投票者的投票意愿變為了?y,所有原先投票意愿為?y?的投票者的投票意愿變為了?x。

4 w:主辦方決定進行一次調查:希望知道所有投票者中,當前投票意愿為?w?的有多少人。若?w≠0?,相當于調查有多少投票者目前支持作品?w?,否則相當于調查有多少投票者目前沒有支持的作品。

5:主辦方決定進行一次調查:若以現在的投票意愿進行最終的投票,獲勝的作品是哪一個。規定得票數至少為?1?且最多的作品獲勝,得票數相同則編號較小的作品獲勝。特別地,若所有作品均無得票,認為不存在獲勝作品。

從拉票開始到結束,共出現了?q?次如上的事件。由于參選的作品數和投票人數實在太多,單憑活動主辦方的能力難以全面統計,現在請你編寫一個程序來處理這些事件,并求出每次調查的結果。

輸入格式

從標準輸入讀入數據。

第?1?行,3?個正整數?n,m,q。

接下來?q?行,每行?1~4?個非負整數,描述一個事件。

輸出格式

輸出到標準輸出。

對于每個?4?或?5?事件輸出一行,一個非負整數表示此次調查的結果。其中事件?5?若不存在獲勝作品則輸出0。

樣例輸入

10 2 15
5
1 2 4 1
1 4 7 2
4 1
5
1 3 4 1
5
1 7 9 1
3 1 2
4 2
2 1 2
4 2
2 2 0
4 2
5

樣例輸出

0
2
2
1
6
8
0
0

評測用例規模與約定

測試點編號n≤m≤q≤特殊性質
1~41000020002000
5~710920002000
8~92×1051105
10~112×105105105r?l≤10,只有事件 1, 4, 5
12~142×105105105r?l≤10
15~172×105105105
18~20109105105

對于所有的數據,滿足?1≤n≤109,1≤m,q≤105,1≤l≤r≤n,1≤x,y≤m,0≤w≤m。保證事件?2?中?x≠w,事件?3?中?x≠y。

真題來源:吉祥物投票

解題思路:

????????看了一眼感覺很容易理解,也就按照每個動作直白寫了操作,最后果不其然內存超了,拿了20分

20分題解(內存超限) :

n, m, q = map(int,input().split()) people = [0 for i in range(n)]def pull(ticket):l = ticket[1]r = ticket[2]x = ticket[3]for i in range(l,r+1):people[i] = xdef alter(ticket):x = ticket[1]w = ticket[2]for i in range(n):if people[i]==x:people[i] = wdef exchange(ticket):x = ticket[1]y = ticket[2]for i in range(n):if people[i]==x:people[i] = yelif people[i]==y:people[i] = xdef survey(ticket):w = ticket[1]if w != 0:print(people.count(w))else:print(people.count(0))def final():if sum(people)==0:print(0)else:temp = [0]*(m+1)for i in range(n):temp[people[i]] += 1print(temp[1:].index(max(temp[1:]))+1)for j in range(q):ticket = [i for i in map(int,input().split())]if ticket[0]==1:pull(ticket)elif ticket[0]==2:alter(ticket)elif ticket[0]==3:exchange(ticket)elif ticket[0]==4:survey(ticket)elif ticket[0]==5:final()

運行結果:?


滿分題解:


總結

以上是生活随笔為你收集整理的CCF-CSP真题《202209-4—吉祥物投票》思路+python题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。