mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-22 07:01:46 +00:00
Compare commits
No commits in common. "8b49a88aa909fd39807f79ca99d24bade82ca075" and "c200843ae313aa2367e875126ce267cbf8e3ae1e" have entirely different histories.
8b49a88aa9
...
c200843ae3
@ -4,7 +4,3 @@ dp[i][j]=从第i个到第j个涂成指定颜色需要的次数
|
|||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int main(){
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <vector>
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
ll n;
|
|
||||||
std::cin>>n;
|
|
||||||
std::vector<ll> arr(n*2+1);
|
|
||||||
std::vector<ll> pre(n*2+1);
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
std::cin>>arr[i];
|
|
||||||
arr[n+i]=arr[i];
|
|
||||||
}
|
|
||||||
for(ll i=1;i<=2*n;i++){
|
|
||||||
pre[i]=pre[i-1]+arr[i];
|
|
||||||
}
|
|
||||||
std::vector<std::vector<ll>> dp;
|
|
||||||
for(ll i=1;i<n;i++){
|
|
||||||
ll j=i+n-1;
|
|
||||||
dp.clear();
|
|
||||||
dp.resize(2*n+1,std::vector<ll>(2*n+1,1e9));
|
|
||||||
// for(ll x=1;)
|
|
||||||
throw std::runtime_error("NotImpletmented");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
dp[i][j]=字符串A到第i位与字符串B到第j位的最长公共子序列长度
|
|
||||||
if a[i]==b[j]:
|
|
||||||
dp[i][j]=dp[i-1][j-1]+1
|
|
||||||
else:
|
|
||||||
dp[i][j]=max(
|
|
||||||
dp[i-1][j],
|
|
||||||
dp[i][j-1]
|
|
||||||
)
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
std::iostream::sync_with_stdio(false);
|
|
||||||
std::cin.tie(nullptr);
|
|
||||||
std::string a,b;
|
|
||||||
std::vector<std::vector<ll>> dp;
|
|
||||||
while (std::cin>>a>>b) {
|
|
||||||
ll n=a.size(),m=b.size();
|
|
||||||
a=' '+a;
|
|
||||||
b=' '+b;
|
|
||||||
dp.clear();
|
|
||||||
dp.resize(n+1,std::vector<ll>(m+1));
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
for(ll j=1;j<=m;j++){
|
|
||||||
if(a[i]==b[j]){
|
|
||||||
dp[i][j]=dp[i-1][j-1]+1;
|
|
||||||
}else{
|
|
||||||
dp[i][j]=std::max(
|
|
||||||
dp[i-1][j],
|
|
||||||
dp[i][j-1]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::cout<<dp[n][m]<<"\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
#include <algorithm>
|
|
||||||
#include <cstdint>
|
|
||||||
#include <iostream>
|
|
||||||
#include <istream>
|
|
||||||
#include <ostream>
|
|
||||||
#include <tuple>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
dp[i][j]=字符串A前i个与字符串B前j个
|
|
||||||
5
|
|
||||||
1 4 2 5 -12
|
|
||||||
4
|
|
||||||
-12 1 2 4
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
using ll = int64_t;
|
|
||||||
|
|
||||||
#define gdp(i,j,k)(std::get<k>(dp[i][j]))
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
std::iostream::sync_with_stdio(false);
|
|
||||||
std::cin.tie(nullptr);
|
|
||||||
ll n,m;
|
|
||||||
std::cin>>n;
|
|
||||||
std::vector<ll> a(n+1);
|
|
||||||
for(ll i=1;i<=n;i++)std::cin>>a[i];
|
|
||||||
std::cin>>m;
|
|
||||||
std::vector<ll> b(m+1);
|
|
||||||
for(ll j=1;j<=m;j++)std::cin>>b[j];
|
|
||||||
std::vector<std::vector<std::tuple<ll,ll,ll>>>dp(n+1,std::vector<std::tuple<ll,ll,ll>>(m+1));
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
for(ll j=1;j<=m;j++){
|
|
||||||
if(a[i]!=b[j]){
|
|
||||||
gdp(i, j, 0) = gdp(i-1,j,0);
|
|
||||||
gdp(i, j, 1)=i-1;
|
|
||||||
gdp(i, j, 2)=j;
|
|
||||||
}else{
|
|
||||||
ll maxprev=0;
|
|
||||||
for(ll k=1;k<j;k++){
|
|
||||||
if(b[k]<a[i]){
|
|
||||||
maxprev=std::max(maxprev,gdp(i-1,k,0));
|
|
||||||
gdp(i,j,1)=i-1;
|
|
||||||
gdp(i,j,2)=k;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
gdp(i,j,0)=maxprev+1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ll ans=0,maxi=0,maxj=0;
|
|
||||||
for(ll i=1;i<=n;i++){
|
|
||||||
for(ll j=1;j<=m;j++){
|
|
||||||
// printf("dp[%lld][%lld]=%lld\n",i,j,dp[i][j]);
|
|
||||||
if(ans<gdp(i,j,0)){
|
|
||||||
ans=gdp(i,j,0);
|
|
||||||
maxi=i;
|
|
||||||
maxj=j;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
std::vector<ll> ans2;
|
|
||||||
ans2.reserve(n);
|
|
||||||
// printf("maxi=%lld,maxj=%lld\n",maxi,maxj);
|
|
||||||
while(maxi>0){
|
|
||||||
ans2.push_back(a[maxi]);
|
|
||||||
ll tmpi=maxi;
|
|
||||||
maxi=gdp(maxi,maxj,1);
|
|
||||||
maxj=gdp(tmpi,maxj,2);
|
|
||||||
}
|
|
||||||
std::cout<<ans<<"\n";
|
|
||||||
std::reverse(ans2.begin(),ans2.end());
|
|
||||||
for(auto i:ans2){
|
|
||||||
std::cout<<i<<" ";
|
|
||||||
}
|
|
||||||
std::cout<<std::endl;
|
|
||||||
_Exit(0);
|
|
||||||
}
|
|
||||||
49
src/test.cpp
49
src/test.cpp
@ -1,10 +1,41 @@
|
|||||||
#include <cstdio>
|
#include <iostream>
|
||||||
int main(){
|
using namespace std;
|
||||||
int a=0;
|
|
||||||
char* c = (char*)&a;
|
const int N = 1000;
|
||||||
c[0]=0x1f;
|
int c[N];
|
||||||
c[1]=0x1f;
|
|
||||||
c[2]=0x1f;
|
int logic(int x, int y) {
|
||||||
c[3]=0x1f;
|
return (x & y) ^ ((x ^ y) | (~x & y));
|
||||||
printf("%d\n",a);
|
}
|
||||||
|
|
||||||
|
void generate(int a, int b, int *c) {
|
||||||
|
for (int i = 0; i < b; i++)
|
||||||
|
c[i] = logic(a, i) % (b + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void recursion(int depth, int *arr, int size) {
|
||||||
|
if (depth <= 0 || size <= 1) return;
|
||||||
|
int pivot = arr[0];
|
||||||
|
int i = 0, j = size - 1;
|
||||||
|
while (i <= j) {
|
||||||
|
while (arr[i] < pivot) i++;
|
||||||
|
while (arr[j] > pivot) j--;
|
||||||
|
if (i <= j) {
|
||||||
|
int temp = arr[i];
|
||||||
|
arr[i] = arr[j];
|
||||||
|
arr[j] = temp;
|
||||||
|
i++; j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
recursion(depth - 1, arr, j + 1);
|
||||||
|
recursion(depth - 1, arr + i, size - i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a, b, d;
|
||||||
|
cin >> a >> b >> d;
|
||||||
|
generate(a, b, c);
|
||||||
|
recursion(d, c, b);
|
||||||
|
for (int i = 0; i < b; ++i) cout << c[i] << " ";
|
||||||
|
cout << endl;
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user