a qaq:
dp[i][0]表示前i個字元可以組成的"q",dp[i][1]表示前i個字元可以組成的"qa",dp[i][2]表示前i個字元可以組成的"qaq"。掃一遍即可。
#includeusing namespace std;
#define ll long long
const int maxn=1e5+10;
char t[5005];
ll dp[maxn][3];
int main()
else if(t[i]=='a')
else
}printf("%lld\n",dp[len][2]);
return 0;
}
b tic-tac-toe:
暴力列舉
#includeusing namespace std;
char t[5][5],txt[5][5];
bool ok()
if(txt[1][1]=='w'&&txt[2][2]=='w'&&txt[3][3]=='w')
return 1;
if(txt[1][3]=='w'&&txt[2][2]=='w'&&txt[3][1]=='w')
return 1;
return 0;
}bool cal()}}
return 0;
}bool check2()
txt[i][j]='#';
if(!cal())
return 1;}}
}return 0;
}bool check1()
int main()
return 0;
}
c buy fruits:
對於n為偶數的情況,例如n=10,發現按如下構造即可:
9,7,5,3,1,0,8,6,4,2
對於奇數的情況特判n==1,其他情況均為不可行
#includeusing namespace std;
int a[100005];
int main()
int cnt=0,ans=0;
for(int i=1;i<=n;i++)
}return ans>=k;
}int ask()
};vectorg[maxn];
int level[maxn],iter[maxn];
void add_edge(int from,int to,int cap)
void bfs(int s)}}
}int dfs(int v,int t,int f)}}
return 0;
}int max_flow(int s,int t)
return flow;
}int a[44],b[44],c[44][44],mp[20002];
int main()
mp[n*n+i]=-a[i];
mp[n*n+n+i]=-b[i];
}for(int i=1;i<=m;i++)
int s=0,t=n*n+2*n+m+1;
for(int i=1;i0)
add_edge(s,i,mp[i]);
else
add_edge(i,t,-mp[i]);
}printf("%d\n",sum-max_flow(s,t));
return 0;
}
牛客練習賽45 C Buy Fruits
在blueland上有 n n個水果店,它們的編號依次為 0,1,2.n 1 0,1,2.n 1。奇妙的是,每個水果店都只賣一種水果,且這些水果店賣的水果種類都各不相同。在每個水果店有乙個傳送門,且這些傳送門也有各自的編號,其中 i i號水果店的傳送門編號為 ai ai,每個傳送門的編號也各不相同,...
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...
牛客練習賽15
時間限制 c c 2秒,其他語言4秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 第一次期中考終於結束啦!沃老師是個語文老師,他在評學生的作文成績時,給每位學生的分數都是乙個小於10的非負小數。amy 8.99999999999999999999...