zoukankan      html  css  js  c++  java
  • Codeforces Round #265 (Div. 2)

    http://codeforces.com/contest/465

    rating+7,,简直。。。

    感人肺腑。。。。。。。。。。。。。。。蒟蒻就是蒟蒻。。。。。。。。。

    被虐瞎

    a:inc ARG

    题意:将串反过来后+1问有多少个位变化。。

    。。我是模拟的。。

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define rep(i, n) for(int i=0; i<(n); ++i)
    #define for1(i,a,n) for(int i=(a);i<=(n);++i)
    #define for2(i,a,n) for(int i=(a);i<(n);++i)
    #define for3(i,a,n) for(int i=(a);i>=(n);--i)
    #define for4(i,a,n) for(int i=(a);i>(n);--i)
    #define CC(i,a) memset(i,a,sizeof(i))
    #define read(a) a=getint()
    #define print(a) printf("%d", a)
    #define dbg(x) cout << #x << " = " << x << endl
    #define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }
    inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }
    inline const int max(const int &a, const int &b) { return a>b?a:b; }
    inline const int min(const int &a, const int &b) { return a<b?a:b; }
    
    const int N=105;
    int a[N], n;
    int main() {
    	read(n);
    	char s[N];
    	scanf("%s", s);
    	rep(i, n) a[i+1]=s[i]-'0';
    	a[1]+=1;
    	int t=a[1]/2, i=2, ans=1; a[1]%=2;
    	while(t && i<=n) {
    		a[i]+=t;
    		t=a[i]/2;
    		a[i]%=2;
    		i++;
    		++ans;
    	}
    	print(ans);
    	return 0;
    }
    

    b:Inbox (100500)

    题意:对一个01序列有3种操作,要求将所有的1变成0,求最小步数

    1.从目录到达任意位置。(到达的地方1变成0,如果是0那么不变)

    2.回到目录

    3.向前或想后走一步

    显然的贪心。。。

    对于一个相连的块,要到达下一个块,最佳方案就是回到目录再到下一个块的初始位置,需要2步(尽管他们距离1,向前走也是需要2步)

    对于同一个块内的点,直接往前走就行。。

    然后模拟累计。。

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define rep(i, n) for(int i=0; i<(n); ++i)
    #define for1(i,a,n) for(int i=(a);i<=(n);++i)
    #define for2(i,a,n) for(int i=(a);i<(n);++i)
    #define for3(i,a,n) for(int i=(a);i>=(n);--i)
    #define for4(i,a,n) for(int i=(a);i>(n);--i)
    #define CC(i,a) memset(i,a,sizeof(i))
    #define read(a) a=getint()
    #define print(a) printf("%d", a)
    #define dbg(x) cout << #x << " = " << x << endl
    #define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }
    inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }
    inline const int max(const int &a, const int &b) { return a>b?a:b; }
    inline const int min(const int &a, const int &b) { return a<b?a:b; }
    
    const int N=1005;
    int a[N], n;
    int main() {
    	read(n);
    	for1(i, 1, n) read(a[i]);
    	int ans=-1;
    	for1(i, 1, n) {
    		while(a[i]==0 && i<=n) ++i;
    		if(i>n) break;
    		while(a[i]&&a[i+1] && i<=n) { ++i; ++ans; }
    		ans+=2;
    	}
    	if(ans==-1) ans=0;
    	print(ans);
    	return 0;
    }
    

    c:No to Palindromes!

    题意:给你一个没有长度为2以上(包括2)的回文串的一个字符串,然后让你求比他大的所有排列且没有长度为2以上(包括2)的下一个最小的排列。

    剩下的1个半小时都在搞这题。。。。。。。。。。T_T

    神题。。

    我dfs写渣

    判重写渣

    然后滚粗。

    这里有个贪心。

    串的任意部分都不能是回文=串中任意连续3个字符互不相同

    那么如果从左往右找,那么只需要判断x-1和x-2与x不等即可

    其次我们要保证字典序最小,所以我们从右向左依次尝试修改,只要找到不符合回文条件的点,就修改它。这样保证了前边的最小。。

    而且能证明,后边一定能构造出一个不是回文的串。例如m=4,我可以构造abcabcabc。。。。。。。。。。。。(x-1和x-2与x不等)

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <string>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    #define rep(i, n) for(int i=0; i<(n); ++i)
    #define for1(i,a,n) for(int i=(a);i<=(n);++i)
    #define for2(i,a,n) for(int i=(a);i<(n);++i)
    #define for3(i,a,n) for(int i=(a);i>=(n);--i)
    #define for4(i,a,n) for(int i=(a);i>(n);--i)
    #define CC(i,a) memset(i,a,sizeof(i))
    #define read(a) a=getint()
    #define print(a) printf("%d", a)
    #define dbg(x) cout << #x << " = " << x << endl
    #define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }
    inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<'0'||c>'9'; c=getchar()) if(c=='-') k=-1; for(; c>='0'&&c<='9'; c=getchar()) r=r*10+c-'0'; return k*r; }
    inline const int max(const int &a, const int &b) { return a>b?a:b; }
    inline const int min(const int &a, const int &b) { return a<b?a:b; }
    
    const int N=2015;
    char str[N];
    int n, m;
    
    inline const char fix(const int &p) {
    	char i;
    	for(i=str[p]+1; i<'a'+m; ++i)
    		if(str[p-1]!=i && str[p-2]!=i) return i;
    	return 0;
    }
    int main() {
    	read(n); read(m);
    	scanf("%s", str);
    	int len=strlen(str);
    	int i;
    	for(i=len-1; i>=0; --i) {
    		char t=fix(i);
    		if(t) { str[i]=t; break; }
    	}
    	if(i==-1) { puts("NO"); return 0; }
    	for(++i; i<len; ++i) {
    		str[i]='a'-1;
    		char t=fix(i);
    		if(t) str[i]=t;
    	}
    	printf("%s", str);
    	return 0;
    }
    

    d:没看。。

    e:没看。。

  • 相关阅读:
    Thinking in Java 第十六章学习笔记----数组
    Thinking in Java第十五章学习笔记----泛型
    Thinking in Java第十四章学习笔记----类型信息
    Thinking in Java第十三章学习笔记----字符串
    Kaggle竞赛--Titanic:Machine Learning from Disaster
    sklearn 常用算法参数设置与选择
    Pandas 入门知识
    机器学习常用数据集
    感知机PLA
    决策树CART--原理与实现
  • 原文地址:https://www.cnblogs.com/iwtwiioi/p/3961709.html
Copyright © 2011-2022 走看看