CCF CSP認證 歷年題目自練Day49

題目一

此題用暴力枚舉做過(80分)現如今終于用二維前綴和做到滿分。

請添加圖片描述
試題編號: 202309-2
試題名稱: 坐標變換(其二)
時間限制: 2.0s
內存限制: 512.0MB
問題描述:
問題描述
請添加圖片描述
樣例輸入:
10 5
2 0.59
2 4.956
1 0.997
1 1.364
1 1.242
1 0.82
2 2.824
1 0.716
2 0.178
2 4.094
1 6 -953188 -946637
1 9 969538 848081
4 7 -114758 522223
1 9 -535079 601597
8 8 159430 -511187
樣例輸出
-1858706.758 -83259.993
-1261428.46 201113.678
-75099.123 -738950.159
-119179.897 -789457.532
114151.88 -366009.892請添加圖片描述

題目分析(個人理解)

  1. 其實對于二維數據的存儲和處理非常想用numpy的,但是考試的IOI機子不支持,只能用常規的二維列表存儲。
  2. 使用一個列表an[]存每一步操作之后的參數,由于對于一個坐標有兩種操作,一種拉伸一種旋轉,所以是個二維列表,第一維度表示查詢的序號。第二維度表示該查詢的具體內容(拉伸多少倍或旋轉多少度),因此第二維度的第一個元素用1初始化(表示拉伸,可直接乘拉伸倍數即可)第二個元素用0初始化(表示旋轉,只需要做加法加即可)
  3. 注意規則,**i和j是開始查詢數到結束,經歷的操作是從i到j。有兩種思想,第一種暴力窮舉,每輸入一個要處理的坐標就進行一次遍歷,因此超時只能80分,第二種二維前綴和的思想,每輸入一行查詢操作就假想已經執行并且存入數組,這樣在后續執行的時候只需要切片即可,大大降低時間復雜度。
  4. 如何截取前綴和的一部分?不難發現對于拉伸倍數只需要用除法判斷從i到j進行每一步查詢之后總的拉伸倍數即可,對于旋轉,只需用末減初即可判斷最后到底拉伸了多少最后按照公式計算即可。
  5. 上代碼!!!
import mathn,m = map(int,input().split())#設置前綴積的初始化
an = []
an.append([1,0])for i in range(n):#存入執行每一步之后的拉伸和旋轉參數kind,act = input().split()if kind == '1':#如果是拉伸temp1 = an[i][0]*float(act)temp2 = an[i][1]an.append([temp1,temp2])else:#如果是旋轉temp2 = an[i][1]+float(act)temp1 = an[i][0]an.append([temp1, temp2])for v in range(m):#開始切片操作執行i,j,x,y = map(int,input().split())k = an[j][0] / an[i-1][0]#對于拉伸做除法c = an[j][1] - an[i-1][1]#對于旋轉做減法dx = k*(x*math.cos(c) - (y*math.sin(c)))dy = k*(x*math.sin(c) + (y*math.cos(c)))print("{:.3f} {:.3f}".format(dx,dy))

題目二

【問題描述】給定一個N×M的矩陣A,請你統計有多少個子矩陣 (最小1×1,最大N×M) ,滿足子矩陣中所有數的和不超過給定的整數K?
【輸入格式】第一行包含三個整數N, M和K,之后N行每行包含M個整數,代表矩陣A
【樣例輸入】
3 4 10
1 2 3 4
5 6 7 8
9 10 11 12
【樣例輸出】
19
【評測用例規模與約定】
30%的數據,N, M≤20 5分
70%的數據,N, M≤100 10分
100%的數據,1≤N, M≤500 15分

0≤Ai j≤1000; 1≤K≤250000000

題目分析(個人理解)

  1. “二維前綴和”,定義s[][]:
    s[i][j]表示子矩陣[1, 1] ~ [i, j]的和
    (1)預計算出s[][],然后快速計算二維子區間和:
    (2)陰影子矩陣[i1, j1] ~ [i2, j2]區間和,等于:
    s[i2][j2] - s[i2][j1-1] - s[i1-1][j2] + s[i1-1][j1-1]
    其中s[i1-1][ j1-1]被減了2次,需要加回來1次
  2. 本題統計二維子矩陣和≤k的數量,而不用具體指出是哪些子矩陣,可以用尺取法優化。在這里插入圖片描述
    以一維區間和為例,查詢有多少子區間[j1, j2]的區間和s[j2] - s[j1] ≤ k。
    在這里插入圖片描述

若s[j2] - s[j1] ≤ k,那么在子區間[j1, j2]上,有j2 - j1+1個子區間滿足≤ k。用同向掃描的尺取法,用滑動窗口[j1, j2]遍歷,復雜度降為O(n)。
對于二維,矩陣的行子區間和仍用2重暴力遍歷只把列區間和用尺取法優化。
3. 上代碼!!!

n, m, k = map(int, input().split())
a = [[0] for i in range(n)]
a.insert(0,[0]*(m+1))
for i in range(1,n+1):         #從a[1][1]開始,讀矩陣a[i].extend(map(int, input().split()))
s = [[0]*(m+1) for i in range(n+1)]
for i in range(1,n+1):for j in range(1,m+1):s[i][j] = s[i-1][j] + a[i][j]
ans = 0
for i1 in range(1,n+1):for i2 in range(i1,n+1):j1=1; z=0for j2 in range(1,m+1):z += s[i2][j2]-s[i1-1][j2]  while z>k:                     z -= s[i2][j1]-s[i1-1][j1]j1 += 1             ans += j2-j1+1            
print(ans)

總結

請添加圖片描述
請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161652.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161652.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161652.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Axure視頻教程】中繼器首行函數

今天教大家在Axure里如何使用中繼器首行函數,本視頻教程會先從中繼器首行函數的基礎講起,然后通過計算合計數、統計選中數、兩個中繼器選項聯動這3個案例更加深入的講解這這個函數的應用。注:該教程主要講解中繼器首行函數的用法,…

NFC:應用場景廣泛的短距離通信技術

NFC:應用場景廣泛的短距離通信技術 一、NFC 技術介紹1.1 NFC 技術應用場景1.2 NFC 技術優點1.3 NFC 工作原理 二、NFC 開發2.1 NFC 應用開發流程2.2 NFC 讀取和寫入2.3 NFC 讀寫功能示例 三、總結 一、NFC 技術介紹 NFC (Near-field communication&…

SM系列國密算法

一、概述 國產密碼算法(國密算法)是指國家密碼局認定的國產商用密碼算法,國密算法是提升國家密碼安全和數據安全的關鍵技術。 為了保障商用密碼的安全性,國家密碼局制定了一系列密碼標準,包括:SM1、SM2、S…

分類預測 | Matlab實現基于PSO-PNN粒子群算法優化概率神經網絡的數據分類預測

分類預測 | Matlab實現基于PSO-PNN粒子群算法優化概率神經網絡的數據分類預測 目錄 分類預測 | Matlab實現基于PSO-PNN粒子群算法優化概率神經網絡的數據分類預測分類效果基本描述程序設計參考資料 分類效果 基本描述 1.Matlab實現基于PSO-PNN粒子群算法優化概率神經網絡的數據…

hadoop在本地創建文件,然后將文件拷貝/上傳到HDFS

1.要$cd {對應目錄}進入到對應目錄,一般為 cd /usr/local/hadoop/ 2.創建文件,$sudo gedit {文件名},例 sudo gedit test.txt 然后在彈出的txt文件輸入內容,點擊右上角的保存之后,關閉即可。 3.拷貝本地文件到HDF…

RPG項目_UI登錄

首先創建一個項目 將資源包導進Resources文件夾 創建一個Scripts腳本文件夾 然后再對Scripts腳本文件夾分門別類 導入UI資源包 創建一個Image 按住Alt 選擇右下角 image就會覆蓋整個面板 修改image名字為BG 將image圖片放置背景欄 再創建一個image 改名為MainMenu 修改MainMenu…

屏幕坐標轉換場景坐標并進行物體檢測

在 OpenSceneGraph 中,要將屏幕坐標轉換為當前場景坐標,并過濾出屏幕顯示范圍內的節點,可以通過以下步驟實現: 獲取屏幕坐標: 當用戶點擊或交互時,獲取鼠標點擊的屏幕坐標。 轉換屏幕坐標為世界坐標&#…

Linux上通過SSL/TLS和start tls連接到LDAP服務器

一,大致流程。 1.首先在Linux上搭建一個LDAP服務器 2.在LDAP服務器上安裝CA證書,服務器證書,因為SSL/TLS,start tls都屬于機密通信,需要客戶端和服務器都存在一個相同的證書認證雙方的身份。3.安裝phpldapadmin工具&am…

一點DETR學習

DETR: 主要是為了學習query。 主要從兩個方面:加偏好和縮短序列長度

〖大前端 - 基礎入門三大核心之JS篇?〗- DOM事件傳播和事件監聽方法addEventListener()

說明:該文屬于 大前端全棧架構白寶書專欄,目前階段免費,如需要項目實戰或者是體系化資源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作經驗, 從事過全棧研發、產品經理等工作&#xf…

ABAP調用Https接口 Ssl證書導入

ABAP調用Https接口 Ssl證書導入 一、證書導入 谷歌瀏覽器打開對方系統URL地址,下載SSL Server certificate,步驟如下: 瀏覽器打開要導出certificate(證書)的網站,點擊這個小鎖的圖標: 點擊連接是安全的后面小播放按鈕 點擊證…

Spark RDD、DataFrame和Dataset的區別和聯系

一、三種數據介紹 是Spark中的三種不同的數據結構,它們都可以用于分布式數據處理,但是它們的實現方式和使用方法略有不同。 RDD(彈性分布式數據集) RDD是Spark最初的核心數據結構,它是一個分布式的、只讀的、可容錯的…

BIND DNS服務器的域名日志

BIND DNS服務器的域名日志 解析字段包括以下幾個部分: 日期和時間:記錄查詢發生的日期和時間。客戶端IP地址:發起查詢的客戶端IP地址。查詢類型:查詢的記錄類型,如A、AAAA、MX、NS等。查詢域名:被查詢的域…

系列七、ThreadLocal為什么會導致內存泄漏

一、ThreadLocal為什么會導致內存泄露 1.1、ThreadLocalMap的基本結構 ThreadLocalMap是ThreadLocal的內部類,沒有實現Map接口,用獨立的方式實現了Map的功能,其內部的Entry也是獨立實現的。源碼如下: 1.2、ThreadLocal引用示意圖…

educoder中Hive -- 索引和動態分區調整

第1關:Hive -- 索引 ---創建mydb數據庫 create database if not exists mydb; ---使用mydb數據庫 use mydb; ---------- Begin ---------- ---創建staff表 create table staff( id int, name string, sex string) row format delimited fields terminated by , stored…

分享一篇很就以前的文檔-VMware Vsphere菜鳥篇

PS:由于內容是很久以前做的記錄,在整理過程中發現了一些問題,簡單修改后分享給大家。首先ESXI節點和win7均運行在VMware Workstation上面,屬于是最底層,而新創建的CentOS則是嵌套后創建的操作系統,這點希望…

MySQL--慢查詢(一)

1. 查看慢查詢日志是否開啟 show variables like slow_query%; show variables like slow_query_log; 參數說明: 1、slow_query_log:這個參數設置為ON,可以捕獲執行時間超過一定數值的SQL語句。 2、long_query_time:當SQL語句執行…

CST同軸饋電步驟

CST同軸饋電步驟 算例1. 同軸內芯2. 填充材料3. 外皮4. GND減去一個圓形,使EMWAVE可以通過5. 添加端口6. 結果比較 算例 cst模型庫中的一個圓貼片 1. 同軸內芯 2. 填充材料 他這里直接使用和介質基板一樣的材料并且進行了合并,我就懶得再改了&#x…

java代碼調用twitter-api用例實戰

一、申請twitter開發者賬號 首先先申請twitter開發者免費的API,要填寫申請的內容,放心大膽地寫,申請完,會提供免費的API接口。 以下是我申請到的三個免費API 申請完開始進行測試調用。 讀官方文檔賬戶認證那塊:https…

《安富萊嵌入式周報》第327期:Cortex-A7所有外設單片機玩法LL/HAL庫全面上線,分享三款GUI, PX5 RTOS推出網絡協議棧,小米Vela開源

周報匯總地址:嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 1、2023 Hackaday大賽胸牌開源 Vectorscope-main.zip (66.83MB) GitHub - Hack-a-Day/Vectorscope: Vectorscope badg…