給定乙個長和寬都小於等於100的矩陣,求出矩陣邊緣的和
暴力模擬
#include
using
namespace
std;
int a,n,m,i,j;
long
long s;
int main()
if (i==1||j==1||i==n||j==m) s+=a;}//直接判斷
printf("%lld",s);//輸出
return
0;}
給定乙個n×
m n×m
的矩陣a,對其進行q 次詢問:以(x1; y1) 為左上角,(x2; y2) 為右下角的子矩
陣中,所有元素的最大值。
暴力模擬
#include
#include
#define input read()
using
namespace
std;
int a[101][101];
int x1,y1,x2,y2,maxx;
int n,m,q;
int read()//輸入流不解釋
int main()
return
0;}
給定k 種移動方式:從(i; j) 移動到(i + xk; j + yk)(xk; yk > 0)。詢問在乙個n m 的矩陣中,
從(1; 1) 出發,可以到達多少個位置。
n<=
m<=
100,
k<=
10 n
<=
m<=
100,
k<=
10資料很弱,直接dfs,但是其實bfs會更快
#include
#define input read()
#define xh for (int i=1;i<=k;i++)
using
namespace
std;
int n,m,k;
int l=0;
bool b[101][101]=;
int x1[21],y1[21];
int ans=1;
int lx[11],lx2[11];
int read()//輸入流
void dfs(int x,int y,int dep)//dfs
}int main()
dfs(1,1,1);//深搜
printf("%d",ans);
return
0;}
#include
using
namespace
std;
bool f[101][101]; int x,y,n,m,k,ans;
int main()
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (f[i][j]) ans++;//統計
printf("%d",ans);//輸出
return
0;}
在乙個n m 的矩陣a 的所有位置中分別填入0 或1,要求填入的數必須滿足ai;j ai;j+1 且
ai;j ai+1;j。詢問一共有多少種不同的矩陣,並將答案對1000000007 取模。
一波深搜找規律,發現是楊輝三角,直接過去。
但因為有對1000000007取餘,而1000000007是乙個質數,根據費馬小定理也可以加上快速冪求解
#include
#define input read()
#define p 1000000007
#define inf 2147483647
using
namespace
std;
int n,m;
long
long ans;
int b[601][601];
int read()
bool pd()
return
false;
}void dfs(int x,int y)
b[x][y]=1;
dfs(y==m? x+1:x,y==m? 1:y+1);
b[x][y]=0;
dfs(y==m? x+1:x,y==m? 1:y+1);
b[x][y]=inf;
}int main()
dfs(1,1);
printf("%d",(ans)%p);
}
#include
#define input read()
#define p 1000000007
#define inf 2147483647
using namespace std;
int a[2][5001];
int n,m,i;
void swap(int &o,int &k)
intread()
int main()
if (j==1)
a[x][j]=(a[y][j]+a[x][j-1])%p;
}printf("%d",a[x][m]);
return
0;}
#include
using
namespace
std;
const
unsigned
long
long p=1000000007;
int n,m,i;
void swap(int &a,int &b)
unsigned
long
long s=1;
unsigned
long
long ksm(unsigned
long
long x,unsigned
long
long y)
return result;
}int main()
對矩陣進行一堆操作,然後要求支援還原歷史版本
「我會主席樹」「滾!」
「我會rope」「滾!」
「我會可持久化棧」「滾」
其實這道題並不需要用什麼可持久化資料結構,可以對答案建一顆搜尋樹,由於資料較弱,我們可以直接通過樹直接還原
#include
#include
using
namespace
std;
int read()
void write(int x)
void writeln(int x)
int n,m,q,k;
struct node
e[100002];
int x[100002],y[100002],p[100002],opt[100002],ans[100002];
int f[1001][1001];
void swap(int &o,int &k)
bool cmp(node x,node y)
if (opt[t]==2)
for (i=1;i<=m;i++)
if (opt[t]==3)
for (i=1;i<=n;i++)
ans[t]=k;
for (i=p[t];i1];i++) solve(e[i].b);
if (opt[t]==1)
else
if (opt[t]==2)
for (i=1;i<=m;i++)
else
if (opt[t]==3)
for (i=1;i<=n;i++)
}int main()
sort(e+1,e+1+q,cmp);e[0].a=-1;e[q+1].a=q+1;
for (int i=1;i<=q+1;i++)
for (int j=e[i-1].a+1;j<=e[i].a;j++) p[j]=i;
solve(0);
for (int i=1;i<=q;i++) writeln(ans[i]);
}
2017 年普及組初賽
長度為0的子串 1長度為9的 9 故,答案 1 9 8 7 6 5 4 3 2 1 46 第 21 題 5 分 乙個人站在座標 0,0 處,面朝 x 軸正方向。第一輪,他向前走 1 單位距離,然後右轉 第二輪,他向前走 2 單位距離,然後右轉 第三輪,他向前走 3 單位距離,然後右轉 他一直這麼走下...
2023年11月9日訓練總結
這次訓練日記是11月6日到11月9號。總體來說,數字dp專題清掉了所有的水題。剩下的題暫時還沒想出怎麼做,而且我也只會遞迴這一種寫法。狀態轉移的寫法只會簡單的 cf打了一場比賽 慘,2題 昨晚打了一場比賽 較慘,3題 看了字典樹的模板,但是還未應用去a題。看樣子應該不太難。這幾天狀態不太好,一是因為...
2023年11月30日訓練總結
這次訓練總結是11月27日 11月30日。等待的狀壓dp專題終於開了。第一次看資料覺得它挺好玩,然而做題目的時候發現並不好做。特點 給的n,m至少有乙個比較小,或者狀態數比較少但不是特別少。經典的題目有放木塊 排兵布陣等。我見過的有兩種寫法,一種是用dfs來列舉狀態,另一種是直接for迴圈列舉每種狀...