• 2022/9/16-2022/9/20


    322B - Ciel and Flowers

    有一种情况没有看出来看,不应该,3  5  5的答案应该是4,g和r单独做一个,然后再做上两个mixing的,特判一下这种情况就行:有两个取余为2,另一个取余为0

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll r,g,b;
    26. int main(){
    27. while(cin>>r>>g>>b){
    28. // scanf("%lld%lld%lld",&r,&g,&b);
    29. ll ans=min({r,g,b}),R=r-min({r,g,b}),G=g-min({r,g,b}),B=b-min({r,g,b});
    30. ans+=R/3+G/3+B/3;
    31. if(r%3==2&&g%3==2&&b%3==0&&b){
    32. ans=max(ans,r/3+g/3+b/3+1);
    33. }
    34. else if(r%3==2&&b%3==2&&g%3==0&&g){
    35. ans=max(ans,r/3+g/3+b/3+1);
    36. }
    37. else if(g%3==2&&b%3==2&&r%3==0&&r){
    38. ans=max(ans,r/3+g/3+b/3+1);
    39. }
    40. R=r/3,G=g/3,B=b/3;
    41. r=r%3,g=g%3,b=b%3;
    42. ll res=R+G+B+min({r,g,b});
    43. printf("%lld\n",max(res,ans));
    44. }
    45. system("pause");
    46. return 0;
    47. }

    1481C - Fence Painting 

    如果c[m]是b中需要被修改的数,那么我们就让c[m]=v.back();如果不需要修改但是b中有c[m]那我们就找一个b的坐标作为c[m]的答案;如果b中没有c[m]的数,那么就是-1;

    思路和题解差不多,但是细节没处理好,就是第一种情况没有贪心的让c[m]也去分配一个修改数的名额,改了这个之后就过了

    CodeForces - 1481C - Fence Painting (贪心)_zzqwtc的博客-CSDN博客

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll t,n,m,a[100005],b[100005],ans[100005],c[100005],vis[100005];
    26. vectorv[100005];
    27. int main(){
    28. scanf("%lld",&t);
    29. while(t--){
    30. scanf("%lld%lld",&n,&m);
    31. for(int i=1;i<=n;i++){
    32. scanf("%lld",&a[i]);v[i].clear();vis[i]=0;
    33. }
    34. for(int i=1;i<=n;i++){
    35. scanf("%lld",&b[i]);
    36. if(a[i]!=b[i]) v[b[i]].push_back(i);
    37. vis[b[i]]=i;
    38. }
    39. for(int i=1;i<=m;i++) scanf("%lld",&c[i]);
    40. ll ma=0,flag=1;
    41. if(v[c[m]].size()) ma=v[c[m]].back(),v[c[m]].pop_back();
    42. else if(vis[c[m]]) ma=vis[c[m]];
    43. if(ma==0){
    44. printf("NO\n");continue;
    45. }
    46. ans[m]=ma;
    47. for(int i=1;i
    48. if(v[c[i]].size()){
    49. ans[i]=v[c[i]].back();
    50. v[c[i]].pop_back();
    51. }
    52. else if(ma) ans[i]=ma;
    53. }
    54. for(int i=1;i<=n;i++){
    55. if(v[b[i]].size()>0){flag=0;break;}
    56. }
    57. if(flag){
    58. printf("YES\n");
    59. for(int i=1;i<=m;i++) printf("%lld ",ans[i]);
    60. printf("\n");
    61. }
    62. else printf("NO\n");
    63. }
    64. system("pause");
    65. return 0;
    66. }

    J - ABC Legacy

    wa麻了,a是左括号,c是右括号,b两者都可以,然后想了几种方法来避免B匹配到B,但是都不可行,最后只能问别人了,让b当作一个特殊的左括号,弄两个栈,而且一定要注意按照遍历的顺序入栈

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll n;
    26. char s[400005];
    27. vector>g;
    28. stacksa,sb;
    29. ll f[400005];
    30. int main(){
    31. cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    32. cin>>n;
    33. cin>>s+1;
    34. n<<=1;
    35. ll cnt=0;
    36. for(int i=1;i<=n;i++){
    37. if(s[i]=='A') cnt++;
    38. }
    39. cnt=n/2-cnt;
    40. if(cnt<0){
    41. cout<<"NO\n";
    42. return 0;
    43. }
    44. ll cno=0;
    45. for(int i=1;i<=n;i++){
    46. if(s[i]=='A'){
    47. sa.push(i);
    48. }
    49. if(s[i]=='B'){
    50. if(cnt){
    51. cnt--;
    52. sb.push(i);
    53. }
    54. else{
    55. if(sa.empty()){
    56. cout<<"NO\n";return 0;
    57. }
    58. g.push_back({sa.top(),i});
    59. sa.pop();
    60. }
    61. }
    62. if(s[i]=='C'){
    63. if(!sb.empty()){
    64. g.push_back({sb.top(),i});
    65. sb.pop();
    66. }
    67. else if(!sa.empty()){
    68. g.push_back({sa.top(),i});
    69. sa.pop();
    70. }
    71. else{cout<<"NO\n";return 0;}
    72. }
    73. }
    74. cout<<"YES\n";
    75. for(int i=0;isize();i++) cout<" "<"\n";
    76. system("pause");
    77. return 0;
    78. }

    F - to Pay Respects 贪心

    一开始真是没有想到,越分析情况越多,最后就想着应该可以有一个方法可以全都考虑出来,但是还是没想到,,,

    将P可以消掉R的这个操作也看做是伤害,也就是把这个关系给简化成造成了P+R的伤害,然后恢复了R,这样就可以去枚举每一个点使用了P会造成多少伤害,最后只取前K大就可以

    2021 ICPC Southeastern Europe Regional Contest ABFGJKLN_HeartFireY的博客-CSDN博客

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll n,X,r,p,k;
    26. char s[1000006];
    27. ll a[1000006];
    28. bool cmp(ll a,ll b){
    29. return a>b;
    30. }
    31. int main(){
    32. // cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    33. cin>>n>>X>>r>>p>>k;
    34. cin>>s+1;
    35. ll ans=n*X,m=0;
    36. for(int i=1;i<=n;i++){
    37. if(s[i]=='1'){
    38. a[++m]=(n-i+1)*(p+r);
    39. ans-=(n-i+1)*r;
    40. }
    41. else a[++m]=(n-i+1)*p;
    42. }
    43. sort(a+1,a+m+1,cmp);
    44. for(int i=1;i<=k&&i<=m;i++){
    45. ans+=a[i];
    46. }
    47. cout<"\n";
    48. system("pause");
    49. return 0;
    50. }

    G - Max Pair Matching 排序

    输入时先让所有的a[i]b[1]-a[2]也就是a[1]+b[1]

    2021 ICPC Southeastern Europe Regional Contest ABFGJKLN_HeartFireY的博客-CSDN博客

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll n;
    26. struct node{
    27. ll a,b;
    28. bool operator<(const node & o)const{
    29. return a+b
    30. }
    31. }c[200005];
    32. int main(){
    33. // cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    34. cin>>n;
    35. for(int i=1;i<=n*2;i++){
    36. cin>>c[i].a>>c[i].b;
    37. if(c[i].a>c[i].b) swap(c[i].a,c[i].b);
    38. }
    39. sort(c+1,c+2*n+1);
    40. ll ans=0;
    41. for(int i=1;i<=n;i++) ans-=c[i].a;
    42. for(int i=n+1;i<=2*n;i++) ans+=c[i].b;
    43. cout<
    44. system("pause");
    45. return 0;
    46. }

    D2 - Zero-One (Hard Version) 记忆化dp

    x>=y和d1是一样的,x

    Codeforces Round #821 (Div. 2) A - D - 知乎 (zhihu.com)

    1. #include
    2. #define ll long long
    3. #define ull unsigned long long
    4. #define endl '\n'
    5. #define lowbit(i) (i)&(-i)
    6. #define all(x) (x).begin(),(x).end()
    7. #define MOD(x) (((x)%mod+mod)%mod)
    8. using namespace std;
    9. const ll mod=1e9+7;
    10. const double inf=1e18;
    11. const double eps=1e-8;
    12. ll qpow(ll a,ll b){
    13. ll res=1;
    14. while(b){
    15. if(b&1) res=res*a%mod;
    16. a=a*a%mod;
    17. b>>=1;
    18. }
    19. return res;
    20. }
    21. ll getinv(ll a){return qpow(a,mod-2);}
    22. ll lcm(ll a,ll b){
    23. return a*b/__gcd(a,b);
    24. }
    25. ll t,n,x,y;
    26. char a[5005],b[5005];
    27. ll pos[5005];
    28. ll f[5005][5005];
    29. ll dfs(ll l,ll r){
    30. if(l>r) return 0;
    31. if(f[l][r]) return f[l][r];
    32. ll res=1e18;
    33. res=dfs(l+1,r-1)+y;
    34. res=min(res,dfs(l+2,r)+x*(pos[l+1]-pos[l]));
    35. res=min(res,dfs(l,r-2)+x*(pos[r]-pos[r-1]));
    36. return f[l][r]=res;
    37. }
    38. int main(){
    39. cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
    40. cin>>t;
    41. while(t--){
    42. cin>>n>>x>>y;
    43. cin>>a+1>>b+1;
    44. ll cnt=0,m=0;
    45. for(int i=1;i<=n;i++){
    46. if(a[i]!=b[i]) pos[++cnt]=i;
    47. }
    48. if(cnt&1){cout<<"-1\n";continue;}
    49. if(x>=y){
    50. if(cnt!=2){
    51. cout<2LL*y<
    52. }
    53. else{
    54. ll flag=1;
    55. for(int i=1;i<=n;i++){
    56. if(a[i]!=b[i]&&a[i+1]!=b[i+1]){
    57. flag=0;break;
    58. }
    59. }
    60. if(flag) cout<2LL*y<
    61. else cout<<min(x,2LL*y)<
    62. }
    63. }
    64. else{
    65. for(int i=1;i<=cnt;i++)
    66. for(int j=i;j<=cnt;j++) f[i][j]=0;
    67. ll ans=dfs(1,cnt);
    68. cout<
    69. }
    70. }
    71. system("pause");
    72. return 0;
    73. }

  • 相关阅读:
    网络通信深入解析:探索TCP/IP模型
    前端基础HTML-基础标签
    【web渗透思路】框架敏感信息泄露(特点、目录、配置)
    接口自动化测试实践指导(下):接口自动化测试断言设置思路
    js中的地狱回调是什么
    win32程序步骤
    SQLite数据库创建表与增删改查
    redis学习
    C++ 系统标准的输入输出流
    数据结构概念部分
  • 原文地址:https://blog.csdn.net/weixin_52621204/article/details/126885744