算法重新刷題

基礎算法

前綴和

一維前綴和

[USACO16JAN] Subsequences Summing to Sevens S - 洛谷

這一題主要是需要結合數學知識來求解,

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>using namespace std;const int N = 50010;int n;
int s[N], l[7], r[7];int main() {scanf("%d", &n);for (int i = 1; i <= n; i ++) {int cur;scanf("%d", &cur);// 初始化前綴和矩陣s[i] = (s[i - 1] + cur) % 7;}// 從右往左,記錄7的每個余數的最左邊的坐標值for (int i = n; i ; i --) l[s[i]] = i;// 從左往右,記錄7的每個余數的最右邊的坐標值for (int i = 1; i <= n; i ++) r[s[i]] = i;l[0] = 0;int res = 0;for (int i = 0; i <= 6; i ++) {if (r[i]) res = max(res, r[i] - l[i]);}printf("%d\n", res);return 0;
}

二維前綴和

核心的原理

模板題
活動 - AcWing

例題

最大正方形 - 洛谷

這個題的N是100,比較小,可以用三重循環通過;故枚舉正方形的邊長,記作len
這個題的(x1,y1)等于(i,j) 這個題的(x2,y2)相當于(i+len,j+len)

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>using namespace std;const int N = 510;
int  a[N][N],s[N][N];
int n,m;int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];}}//判斷正方形 這個正方形里面的和是變長的平方// 枚舉最大長度int res = 0;for (int i = 1; i <= n; i ++){for (int j = 1; j <= m; j ++) {for (int len = 0; i + len <= n && j + len <= m; len ++) {if (s[i + len][j + len] - s[i - 1][j + len] - s[i + len][j - 1] + s[i - 1][j - 1] == (len + 1) * (len + 1)){res = max(len + 1, res);}}}}           cout<<res<<endl;return 0;
}

二維前綴和之固定邊長的正方形
[HNOI2003] 激光炸彈 - 洛谷

#include<iostream>
#include<algorithm>
using namespace std;
int n, m;
int s[5050][5050];
int res = 0;int main()
{cin >> n >> m;while (n--){int x, y, v;cin >> x >> y >> v;s[x + 1][y + 1] += v;}for (int i = 1; i <= 5001; i++){for (int j = 1; j <= 5001; j++){s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];}}for (int i = m; i <= 5001; i++)for (int j = m; j <= 5001; j++){//標準int value = s[i][j] - s[i - m][j] - s[i][j - m] + s[i - m][j - m];res = max(res, value);}printf("%d", res);return 0;
}

?

差分

一維差分

[Poetize6] IncDec Sequence - 洛谷

這個題里面的數學推理我現在都還沒看明白

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
typedef long long ll;
ll a[N];
ll b[N];
ll n;
int main()
{cin>>n;for(ll i=1;i<=n;i++){cin>>a[i];}ll x,y;x=y=0;for(ll i=1;i<n;i++){b[i]=a[i+1]-a[i];if(b[i]<0)x-=b[i];else y+=b[i];}cout<<max(x,y)<<endl;cout<<abs(x-y)+1<<endl;return 0;
}

二維差分

模板題

活動 - AcWing

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1e3 + 10;
int a[N][N], b[N][N];
//差分矩陣為什么是這個
void insert(int x1,int y1,int x2,int y2,int c)
{b[x1][y1]+=c;b[x2+1][y1]-=c;b[x1][y2+1]-=c;b[x2+1][y2+1]+=c;
}
// void insert(int x1, int y1, int x2, int y2, int c)
// {
//     b[x1][y1] += c;
//     b[x2 + 1][y1] -= c;
//     b[x1][y2 + 1] -= c;
//     b[x2 + 1][y2 + 1] += c;
// }
int main()
{int n, m, q;cin >> n >> m >> q;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> a[i][j];//初始化差分數組for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){insert(i, j, i, j, a[i][j]);      //構建差分數組}}while (q--){int x1, y1, x2, y2, c;cin >> x1 >> y1 >> x2 >> y2 >> c;insert(x1, y1, x2, y2, c);}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];  //二維前綴和}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){printf("%d ", b[i][j]);}printf("\n");}return 0;
}

?洛谷地毯 - 洛谷

在模版的基礎上稍微變一下形即可
?

#include<iostream>
#include<cstdio>
using namespace std;
const int N = 1e3 + 10;
int a[N][N], b[N][N];
//差分矩陣為什么是這個
void insert(int x1,int y1,int x2,int y2,int c)
{b[x1][y1]+=c;b[x2+1][y1]-=c;b[x1][y2+1]-=c;b[x2+1][y2+1]+=c;
}
// void insert(int x1, int y1, int x2, int y2, int c)
// {
//     b[x1][y1] += c;
//     b[x2 + 1][y1] -= c;
//     b[x1][y2 + 1] -= c;
//     b[x2 + 1][y2 + 1] += c;
// }
int main()
{int n, m, q;cin >> n >> m;//初始化差分數組for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){insert(i, j, i, j, 0);      //構建差分數組}}while (m--){int x1, y1, x2, y2;cin >> x1 >> y1 >> x2 >> y2;insert(x1, y1, x2, y2, 1);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];  //二維前綴和}}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%d ", b[i][j]);}printf("\n");}return 0;
}

貪心?

與排序有關的貪心(注意排序的寫法)

結構體排序(記憶一下)

[USACO1.3] 混合牛奶 Mixing Milk - 洛谷

bool cmp(cow farmer1,cow farmer2)
{return farmer1.p<farmer2.p;
}
也就是bool cmp(結構體名稱 實例1,結構體名稱 實例2)
{return 實例1的某個成員<實例2的某個成員;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;
struct cow {int p;int maxnum;
}farmer[N];
bool cmp(cow farmer1,cow farmer2)
{return farmer1.p<farmer2.p;
}int main()
{int m,n;int sum = 0;cin >> m>> n;for (int i = 0; i < n; i++){cin >> farmer[i].p>>farmer[i].maxnum;}sort(farmer,farmer+n,cmp);//需要m牛奶int mark=0;while(farmer[mark].maxnum<m){m-=farmer[mark].maxnum;sum+=farmer[mark].p*farmer[mark].maxnum;mark++;} sum+=farmer[mark].p*m;cout<<sum<<endl;return 0;
}

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

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

相關文章

06pymysql

【一】pymysql 1.我們可以利用pymysql在python中操作數據庫 原理是pyMySQL-->是封裝好的執行subprocess鏈接數據庫執行數據庫命令的模塊 官網&#xff1a;https://zetcode.com/python/pymysql/ 【二】使用示例 import pymysql from pymysql.cursors import DictCursor ?…

進入防火墻Web管理頁面(eNSP USG6000V)和管理員模塊

1、進入防火墻Web管理頁面 USG系列是華為提供的一款高端防火墻產品&#xff0c;其特點在于提供強大的安全防護能力和靈活的擴展性。 以eNSP中的USG6000為例&#xff1a; MGMT口&#xff08;web管理口&#xff09;&#xff1a;對應設備上的G0/0/0口&#xff0c;上面初始配有一…

如何在Spring Boot中實現實時通知

如何在Spring Boot中實現實時通知 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將討論如何在Spring Boot應用中實現實時通知功能&#xff0c;這在現代…

Java的awt和swing的區別

AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing都是Java中用于創建圖形用戶界面&#xff08;GUI&#xff09;的工具包&#xff0c;但它們之間存在一些關鍵的區別。下面我將通過具體的例子來說明這些區別&#xff1a; 1. 跨平臺性能 AWT&#xff1a; AWT是基于本…

實驗六 圖像的傅立葉變換

一&#xff0e;實驗目的 1了解圖像變換的意義和手段&#xff1b; 2熟悉傅立葉變換的基本性質&#xff1b; 3熟練掌握FFT變換方法及應用&#xff1b; 4通過實驗了解二維頻譜的分布特點&#xff1b; 5通過本實驗掌握利用MATLAB編程實現數字圖像的傅立葉變換。 6評價人眼對圖…

LeetCode 每日一題 2024/7/1-2024/7/7

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 7/1 2065. 最大化一張圖中的路徑價值7/2 3115. 質數的最大距離7/3 3099. 哈沙德數7/4 3086. 拾起 K 個 1 需要的最少行動次數7/5 3033. 修改矩陣7/6 3101. 交替子數組計數7…

第一周周日總結

題目總結 1.給你一個整數數組 hours&#xff0c;表示以 小時 為單位的時間&#xff0c;返回一個整數&#xff0c;表示滿足 i < j 且 hours[i] hours[j] 構成 整天 的下標對 i, j 的數目。 整天 定義為時間持續時間是 24 小時的 整數倍 。 例如&#xff0c;1 天是 24 小時…

C# MathNet

Vector使用 Build.Dense 創建列向量:列向量轉行向量&#xff08;行矩陣&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 進行向量元素級乘法:計算向量的點積&#xff08;內積&#xff09;&#xff1a;訪問向量的特定元素&#xff1a;遍歷向量中的所有元素&#xf…

公眾號文章閱讀20w+?你猜騰訊給了我多少錢?

前兩天寫的一篇文章&#xff0c; 《1000T的文件怎么能快速從南京傳到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平臺推薦&#xff0c;閱讀量居然達到了20w&#xff08;這篇收益在文章底部&#xff01;&#xff09;。 留言也是相當精彩 說來慚愧&#xff0c;這篇文章我…

【74LS163做24進制計數器】2021-11-19

緣由用74LS163做24進制計數器-其他-CSDN問答,仿真multisim兩個74LS163芯片如何構成47進制計數器-吐槽問答-CSDN問答 參考74ls163中文資料匯總&#xff08;74ls163引腳圖及功能_內部結構圖及應用電路&#xff09; - 電子發燒友網

蒼穹外賣 ...待更新

蒼穹外賣 1、 阿里云OSS2、菜品分類查詢 1、 阿里云OSS 工具類 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

深入理解Qt智能指針

目錄 1.引言 2.共享數據 2.1.特點 2.2.QSharedData 2.3.隱式共享 2.4.顯示共享 3.共享指針 3.1.QSharedPointer 3.2.QWeakPointer 4.范圍指針 4.1.QScopedPointer 4.2.QScopedArrayPointer 5.追蹤特定QObject對象生命 6.總結 1.引言 在 Qt 中&#xff0c;智能指針…

計算樣本之間的相似度

文章目錄 前言一、距離度量1.1 歐幾里得距離&#xff08;Euclidean Distance&#xff09;1.2 曼哈頓距離&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距離&#xff08;Chebyshev Distance&#xff09;1.4 閔可夫斯基距離&#xff08;Minkowski Distance&#xff09…

docker容器技術、k8s的原理和常見命令、用k8s部署應用步驟

容器技術 容器借鑒了集裝箱的概念&#xff0c;集裝箱解決了什么問題呢&#xff1f;無論形狀各異的貨物&#xff0c;都可以裝入集裝箱&#xff0c;集裝箱與集裝箱之間不會互相影響。由于集裝箱是標準化的&#xff0c;就可以把集裝箱整齊擺放起來&#xff0c;裝在一艘大船把他們…

瀏覽器插件利器-allWebPluginV2.0.0.14-stable版發布

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品&#xff0c;致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX插件直接嵌入瀏覽器&#xff0c;實現插件加載、界面顯示、接口調用、事件回調等。支持谷歌、火狐等瀏…

Spring Boot+Blockchain:區塊鏈入門Demo

1. 引言 區塊鏈技術近年來迅速發展&#xff0c;其去中心化、不可篡改和透明性等特點吸引了眾多開發者和企業的關注。為了便于理解和應用區塊鏈技術&#xff0c;本文將介紹如何使用Spring Boot集成區塊鏈&#xff0c;構建一個簡單的區塊鏈Demo。 2. 項目準備 2.1 環境要求 在…

MYSQL安裝及環境配置

1.數據庫下載 1.1 瀏覽器下載相應版本&#xff0c;如果相應版本不在此頁&#xff0c;可點擊Archives &#xff0c;然后選擇相應版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目錄&#xff0c;并將其解壓 2.配置數據庫環境變量 2.1 使用電腦win鍵 Q &#xff0c;…

在C++中使用的錯誤處理策略

在C中&#xff0c;錯誤處理是一個重要且復雜的主題&#xff0c;因為它要求開發者在設計和編碼時考慮到程序可能遇到的各種異常情況。C提供了幾種不同的機制來處理錯誤&#xff0c;每種機制都有其適用的場景和優缺點。下面我將概述幾種常見的C錯誤處理策略&#xff1a; 1. 返回…

SQL的時間格式和文本靈活轉換

日期的格式&#xff0c;在日常的數據分析中&#xff0c;常常使用 特別是在按照日、月、年進行匯總分析&#xff0c;使用起來&#xff0c;往往會有差異 如果格式比較復雜&#xff0c;可以考慮進行文本轉化的處理 這里有比較推薦的函數&#xff1a; 1.CONVERT()函數 適用于SQL …

51單片機STC89C52RC——16.1 五項四線步進電機

目的/效果 讓步進電機 正向轉90度&#xff0c;逆向轉90度 一&#xff0c;STC單片機模塊 二&#xff0c;步進電機 2.2 什么是步進電機&#xff1f; 步進電機可以理解為&#xff1a;是一個按照固定步幅運動的“小型機器”。它與普通電機不同點在于&#xff0c;普通電機可以持…