USACO22 JAN 做題記錄

2022-09-20 03:12:11 字數 2453 閱讀 1768

暴力題。

#include#includeusing namespace std;

const int maxk=27;

int ans1,ans2;

int cnt[maxk],ok[4][4];

string s[4],t[4];

int main()

for(int i=1;i<=3;i++)

for(int j=0;j<3;j++)

if(ok[i][j]==0&&cnt[t[i][j]-64])

cnt[t[i][j]-64]--,ans2++;

printf("%d\n%d\n",ans1,ans2);

return 0;

}

暴力題。

#include#includeusing namespace std;

int t;

int a[3][5];

int calc(int x,int y)

int main()

for(int i=1;i<=10;i++)

for(int j=i;j<=10;j++)

for(int k=j;k<=10;k++)

for(int l=k;l<=10;l++)

puts(ans==1? "yes":"no");

} return 0;

}

好難。

相鄰減一相當於把 \(x\) 位置的差分陣列加一,\(x-2\) 位置的差分陣列減一,還有兩種特殊情況,乙個是位置 \(3\) 加一,乙個是位置 \(n-2\) 減一。

從後往前模擬即可,時間複雜度 \(o(n)\)。

#include#includeconst int maxn=100005;

int t,n;

int a[maxn];

long long b[maxn];

inline int min(int a,int b)

for(int i=1;i<=n;i++)

ans+=a[i]-b[1];

if(b[1]<0||b[0]<0||***)

puts("-1");

else printf("%lld\n",ans);

b[0]=0;

} return 0;

}

感覺是全場最困難的題目。

考慮最優的行動是分四段:

先加若干次,然後若干個除(若當前數末尾是一,則先進行一次加),再加若干次,然後再是若干個乘(若目標數末尾是一,則之後進行一次加)。

直接列舉每次操作次數即可,複雜度 \(o(\log n)\)。

#includeint t,ans;

long long a,b;

int main()

now+=k,res+=k;

int tot=0;

long long tmp=now;

while((tmp<<1)<=b)

tmp<<=1,tot++;

if((b>>tot)!=now)

continue;

for(int p=1;p<=tot;p++)

if(res簽到題。

考慮滿足 \(\forall_

else suml[x]=x,totl[x]=1;

if(rc[x])

else sumr[x]=x,totr[x]=1;

}int main()

void dfs(int x,int last)\) 表示選到第 \(i\) 個位置,其中 \((i,i+1)\) 選了 \(j\) 次的合法序列數,那麼可以得到:

\[f_=\sum_^-st-k\}} f_

\]字首和優化即可做到 \(o(nv)\)。

當 \(n\) 為偶數的時候,\(st\) 可以直接是 \(0\),否則 \(st\) 可以設為 \(0,1,\cdots,\min h_i\) 的任意數。

總時間複雜度 \(o(nv^2)\)。

#include#include#includeusing namespace std;

const int maxn=105,maxv=1005,mod=1000000007;

int n,ans,up,mn=100000;

int h[maxn],f[maxn][maxv],g[maxn][maxv];

int main()

void dfs(int x,int v)

int find(int x)

void merge(int a,int b,int t)

void cancel(int rec)

void insert(int l,int r,int now,int l,int r,int v)

if(l<=mid)

insert(l,mid,lc(now),l,r,v);

if(mid賽場不會。

KMP做題記錄

題目太長不貼了 這道題很巧妙,給定乙個字串s,求最少在首尾新增幾個字元後,s變為乙個迴圈了n次的字串 n 1 假設我們有乙個迴圈串s abcabcabc 我們根據kmp求一次next陣列,就可以通過next strlen s 得到乙個迴圈節的位置從而求出迴圈節的長度,顯然,迴圈節能被s整除。如果s ...

8 25 9 25 做題記錄

2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...

8 25 9 25 做題記錄

2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...