暴力記錄每一列的1
的個數,在判斷是否超過一半,統計答案。
#include#define n 1005
using namespace std;
int n,m,x,ans,a[n];
int main()
\)。因此 \(\frac | (\gcd(x,y))^2\)。
又有 \(x | \gcd(x,y)\),所以 \(x^2 | (\gcd(x,y))^2\)。
要最小化 \(y\),就要最大化 \(\gcd(x,y)\),即最大化 \(\gcd(x,y)^2\)。而 \(\gcd(x,y)^2\) 又同時是 \(x^2\) 和 \(\frac\) 的因數, 所以可得,\(\gcd(x,y)^2=\gcd(x^2,\frac)\)。
接下來只需要開方求出 \(\gcd\),隨後求出 \(y\) 並判斷是否符合要求。
#include#include#include#define n 405
#define mod 1000000007
#define ll long long
using namespace std;
int t,n,m,cnt[n];
ll ans,f[n][n][n];
char s[n],t[n];
int main()
memset(f,0,sizeof(f));
f[0][0][0]=1;
for (int i=1;i<=n;++i)
for (int j=0;j<=min(i,m);++j)
for(int x=0;x<=i;++x)
else
}ans=0;
for (int x=0;x<=n;++x)
printf("%lld\n",ans);
} return 0;
}
主要到每個字元最後要麼保留,要麼從左邊刪,要麼右邊刪。因此可以考慮使用 \(dp\)。
設 \(f_\) 表示 \(s\) 中到了第 \(i\) 個字元,\(t\) 中匹配到第 \(j\) 個字元,左邊還要刪除 \(x\) 個,右邊 \(y\) 個。
考慮轉移。如果當前這個位置是-
,則從左刪轉移和從右刪轉移過來。
否則,先考慮右邊多乙個要刪的(因為加是加在右邊)。
然後考慮能不能放左邊,前提是當前沒有已匹配的並且右邊沒有要刪的。
最後如果可以匹配,再加到匹配中,前提是右邊沒有要刪的。
時空複雜度都是 \(\mathcal o(n^4)\),無法通過此題。
注意到 \(x\),\(y\),\(i\) 和 \(j\) 之間是有一定關係的,令 \(cnt_i\) 表示 \(i\) 之前-
的個數,則有 \(i-j-x-y=2\times cnt_i\)。
解釋一下。\(j\) 是已匹配的,\(x\) 和 \(y\) 分別表示左邊和右邊還沒刪除的,\(i\) 表示當前是第幾個字元,那麼 \(i-j-x-y\) 就表示已經刪除的字元個數加上-
的個數。而乙個-
就對應著乙個被刪除的字元,所以 \(i-j-x-y=2\times cnt_i\)。
#include#include#include#define n 405
#define mod 1000000007
#define ll long long
using namespace std;
int t,n,m,cnt[n];
ll ans,f[n][n][n];
char s[n],t[n];
int main()
memset(f,0,sizeof(f));
f[0][0][0]=1;
for (int i=1;i<=n;++i)
for (int j=0;j<=min(i,m);++j)
for(int x=0;x<=i;++x)
else
}ans=0;
for (int x=0;x<=n;++x)
printf("%lld\n",ans);
} return 0;
}
雜題 普及組難度
打怪 題目鏈結 哥斯拉打敗基多拉後覺得意猶未盡,叫來了 n 個怪獸跟他操練。然而哥斯拉在戰勝基多拉後只剩下了 w 個能量單位,所以他並不一定能打敗所有怪獸。哥斯拉有乙個基礎攻擊力 a,還有乙個技能攻擊力加成 b 釋放技能傷害為 a b 每乙個怪獸都有兩個屬性,攻擊力 xi 和生命值 yi,如果哥斯拉...
NOIP普及組複賽題集
題目描述 牛倌被通知,他的乙隻牛逃逸了!所以他決定,馬上出發,盡快把那只牛抓回來 他們都站在數軸上 牛倌在n 0 n 100000 處,牛在k 0 k 100000 處 約翰有兩種辦法移動,步行和瞬移 步行每秒種可以讓約翰從x處走到x l或x l處 而瞬移則可讓他在1秒內從x處消失,在2x處出現 然...
玩具(普及組複賽模擬題)
問題描述 有一種玩具,在玩具上有乙個紅色按鈕,乙個黃色按鈕和一萬個能坐能站的小木偶,按一次紅色的按鈕,就會有乙個站著的小木偶坐下去,按一次黃色按鈕,就可以使站著的小木偶增加一倍。開始時有三個小木偶站著,要想使站著的小木偶增加到n個,最少按幾次按鈕就行了?請編一程式,由鍵盤輸入n輸出最少按的次數。輸入...