zoukankan      html  css  js  c++  java
  • 第十八届浙大城市学院程序设计竞赛(同步赛)F

    第十八届浙大城市学院程序设计竞赛(同步赛)F

    大意

    略。。

    思路

    难在对复杂度的分析上。。然而暴力写错-5(

    因为只能恰好删除两个,所以只有以下几种情况

    1. 遇到某个不匹配的位置,两边全部删除

    2. 先删左边再删右边

    3. 先删右边再删左边

    因为是回文串,所以当从外朝里暴力配对时遇到不相等的字符,是一定要删除的,所以最多只有5种情况

    复杂度自然是对的。

    如果匹配完成时还剩一次删除,那么无论奇数偶数,都把中间的删掉自然就可以。

    代码

    #include <map>
    #include <set>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <vector>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    #define ll long long
    #define ull unsigned long long
    #define cint const int&
    #define Pi acos(-1)
    
    const int mod = 1e9+7;
    const int inf_int = 0x7fffffff;
    const ll inf_ll = 0x7fffffffffffffff;
    const double ept = 1e-9;
    
    int t;
    int n;
    string s;
    bool flag;
    
    void dfs(cint l, cint r, cint num) {
        if(l >= r) {
            flag = 1;
            return;
        }
        if(s[l] == s[r]) {
            dfs(l+1, r-1, num);
        } else if(num > 0){
            dfs(l+1, r, num-1);
            if(!flag) dfs(l, r-1, num-1);
        }
    }
    
    int main() {
        cin >> t;
        while(t--) {
            flag = 0;
            cin >> n >> s;
            dfs(0, n-1, 2);
            if(flag) cout << "Yes" << endl;
            else cout << "No" << endl;
        }
        return 0;
    }
    
  • 相关阅读:
    好文转贴(1) —— 程序员已死 & 程序员平庸or伟大,证据就在代码里&一些鲜为人知的编程事实
    django的两个学习资料
    django的两个学习资料
    POJ2418(BST)
    全局变量、函数原型和Guard macro
    POJ2754(八皇后)
    VC中Windows常用控件的创建和使用
    POJ1088(DP,DFS)
    超前引用
    POJ2715(Water)
  • 原文地址:https://www.cnblogs.com/ullio/p/14596548.html
Copyright © 2011-2022 走看看