vijos 1390 玩詐欺的小杉
vijos 1391 想越獄的小杉
vijos 1392 拼拼圖的小杉
後續賽後ak
總計n封的信件,每個信件都有自己的特徵碼和序號。
請按照序號遞增的順序輸出信件的特徵碼
每行乙個特徵碼,且特徵碼的格式應與輸入完全一致
#include
#include
#define rr register
using
namespace std;
struct reca[
1001];
int n;
signed
cmp(rec x,rec y)
signed
main()
for(rr int i=
1;i<=n;
++i)
scanf
("%s"
,a[i]
.s+1);
//完全相同就用字串
sort
(a+1
,a+1
+n,cmp)
;//雖然時間多了,但是沒關係
for(rr int i=
1;i<=n;
++i)
printf
("%s\n"
,a[i]
.s+1);
return0;
}
在小杉的面前有乙個n
nn行m
mm列的棋盤,棋盤上有n×m
n\times m
n×m個有黑白棋的棋子(一面為黑,一面為白),一開始都是白面朝上。可以對任意乙個格仔進行至多一次的操作(最多進行n×m
n\times m
n×m個操作),該操作使得與該格同列的上下各2個格仔以及與該格同行的左右各1個格仔以及該格仔本身翻面。問有多少種方法使初始狀態到目標狀態(不同當且僅當操作集合不同)
然而可以列舉第一列,通過第一列來判斷是否能回到初始狀態
#include
#define rr register
using
namespace std;
int n,m,t,tota,f[21]
;signed
main()
rr int ans=0;
for(rr int i=
0;i<
1<++i)if(
!now)
++ans;
//恢復0
}printf
("%d\n"
,ans);}
return0;
}
然而這道題就是單源最短路徑的最短邊最長問題,很容易得到鬆弛操作dis
[to]
=min
(dis
[now
],w)
dis[to]=min(dis[now],w)
dis[to
]=mi
n(di
s[no
w],w
)
#include
#include
#define rr register
using
namespace std;
struct nodee[
400001];
int n,k,ls[
2001
],dis[
2001
],v[
2001];
inline
signed
iut(
)void
print
(int ans)
signed
main()
; ls[x]
=k;}
v[1]=
1; rr queue<
int>q; q.
push(1
); dis[1]
=2147483647
;while
(q.size()
) v[x]=0
;}for(rr int i=
2;i<=n;
++i)
return0;
}
歹徒告訴小杉,他正在尋找的拼圖塊其實可以拼成n
nn個有順序的完整的拼圖。
每個完整的拼圖由若干個拼圖塊組成。
歹徒要求小杉把拼圖按拼出的順序劃分成m
mm個集合,乙個拼圖集合由若干個完整的拼圖組成,並且總的拼圖塊的數目不超過t
tt。並且,構成集合的拼圖是不能交叉的。
小杉要找出劃分成m
mm個集合後,m
mm個集合中最多能有多少個完整的拼圖。
那麼可以發現這道題是乙個動態規劃的題目
對於每種拼圖,那麼要記錄它所處的集合是哪乙個及該集合的拼圖數,那麼可以得到f[i
]=mi
n(f[
j−1]
+a[i
])(1
≤j≤i
,並且符
合條件)
f[i]=min(f[j-1]+a[i])(1\leq j\leq i,並且符合條件)
f[i]=m
in(f
[j−1
]+a[
i])(
1≤j≤
i,並且
符合條件
),詳見**
#include
#define rr register
using
namespace std;
int n,m,summ,a[
1001];
struct rec
rec operator+(
const
int t)
const
;//沒有超過單個集合的限制
else
return
(rec)
;//否則要新增乙個集合
}}f[
1001];
inline
signed
iut(
)signed
main()
}for
(rr int i=n;i;
--i)
if(f[i]
.now<=m)
return
!printf
("%d"
,i);
//從後往前推
}
其實紀中也有後三道題目
2023年10月31日提高組 T1 A
求n nn的排列了交換為公升序的最小交換次數的期望 兩種思路 暴力打表找規律 動態規劃 第一種只需要打乙個bfs bfsbf s hash hash hash include include define p 10000007 using namespace std int n,ans struct...
2023年10月30日提高組
jzoj 5194 盟主的憂慮 jzoj 5907 輕功 問乙個樹中有多少個連通塊最大最小點權之差等於kkk 也就是 k 的個數 k 1 的 個數 k 的個數 k 1 的個數 k 的個數 k 1 的 個數,那麼就可以列舉點,對於這個點求的是以它為最大點權符合要求的個數,那麼容易得到合法條件a m a...
2023年09月23日普級組 環
description 有乙個圓,共個數在圓環上順時針排列著。現在給你三個數,問的順序是順時針還是逆時針。input 第一行包括四個正整數。output 一行乙個整數,0或1,0表示逆時針,1表示順時針。sample input 5 1 4 2sample output hint 樣例如右圖,的順序...