cf_297

源地址:http://codeforces.com/contest/525

A:读懂题意,模拟一下即可。

#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<time.h>
#include<queue>
#include<stack>
#include<iterator>
#include<math.h>
#include<stdlib.h>
#include<limits.h>
#include<set>
#include<map>
//#define ONLINE_JUDGE
#define eps 1e-8
#define INF 0x7fffffff
#define FOR(i,a) for((i)=0;i<(a);(i)++)
#define MEM(a) (memset((a),0,sizeof(a)))
#define sfs(a) scanf("%s",a)
#define sf(a) scanf("%d",&a)
#define sfI(a) scanf("%I64d",&a)
#define pf(a) printf("%d\n",a)
#define pfI(a) printf("%I64d\n",a)
#define pfs(a) printf("%s\n",a)
#define sfd(a,b) scanf("%d%d",&a,&b)
#define sft(a,b,c)scanf("%d%d%d",&a,&b,&c)
#define for1(i,a,b) for(int i=(a);i<b;i++)
#define for2(i,a,b) for(int i=(a);i<=b;i++)
#define for3(i,a,b)for(int i=(b);i>=a;i--)
#define MEM1(a) memset(a,0,sizeof(a))
#define MEM2(a) memset(a,-1,sizeof(a))
const double PI=acos(-1.0);
template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
template<class T> inline T Min(T a,T b){return a<b?a:b;}
template<class T> inline T Max(T a,T b){return a>b?a:b;}
using namespace std;
#define ll __int64
int n,m;
#define Mod 1000000007
#define N 510
#define M 1000100
const int size = 46340+4;
const int mod = 9901;
char ch[M];
int key[30];
int main(){
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
#endif
    while(scanf("%d",&n)!=EOF){
        int ans=0;
        memset(key,0,sizeof key);
        sfs(ch+1);
        for(int i=1;i<=2*n-2;i++){
            if(i&1)
                key[ch[i]-'a']++;
            else{
                if(key[ch[i]-'A']>0){
                    key[ch[i]-'A']--;
                }else{
                    ans++;
                }
            }
        }
        printf("%d\n",ans);
    }
return 0;
}

B:给你一个字符串,有m天,每天选一个数字ai,使得字符串中下标从ai-->(len-ai+1)之间的子串反转,2*ai<=len,问你m天后这个字符串变成什么样子了。

这道题目刚开始是我自己多想了。。。一直想如果范围一个是1-6,一个是1-7之类的怎么办。。后来又看了看题目,,不是ai-->(len-ai+1)吗,,就是说只要ai固定,另外一边的也固定,如果有个数大于ai,那么它的右边界肯定小于ai。。。

而且操作的先后顺序是无关的,我们就先把它们从小到大标记好,然后从头遍历至len/2,对于每个字符,如果它交换的次数是奇数,那么交换i和len-i+1,否则就不交换。

#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<time.h>
#include<queue>
#include<stack>
#include<iterator>
#include<math.h>
#include<stdlib.h>
#include<limits.h>
#include<set>
#include<map>
//#define ONLINE_JUDGE
#define eps 1e-8
#define INF 0x7fffffff
#define FOR(i,a) for((i)=0;i<(a);(i)++)
#define MEM(a) (memset((a),0,sizeof(a)))
#define sfs(a) scanf("%s",a)
#define sf(a) scanf("%d",&a)
#define sfI(a) scanf("%I64d",&a)
#define pf(a) printf("%d\n",a)
#define pfI(a) printf("%I64d\n",a)
#define pfs(a) printf("%s\n",a)
#define sfd(a,b) scanf("%d%d",&a,&b)
#define sft(a,b,c)scanf("%d%d%d",&a,&b,&c)
#define for1(i,a,b) for(int i=(a);i<b;i++)
#define for2(i,a,b) for(int i=(a);i<=b;i++)
#define for3(i,a,b)for(int i=(b);i>=a;i--)
#define MEM1(a) memset(a,0,sizeof(a))
#define MEM2(a) memset(a,-1,sizeof(a))
const double PI=acos(-1.0);
template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
template<class T> inline T Min(T a,T b){return a<b?a:b;}
template<class T> inline T Max(T a,T b){return a>b?a:b;}
using namespace std;
#define ll __int64
int n,m;
#define Mod 1000000007
#define N 510
#define M 1000100
const int size = 46340+4;
const int mod = 9901;
char ch[M];
int key[30];
int vis[100100];
int main(){
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
#endif
    while(scanf("%s",ch+1)!=EOF){
        sf(m);
        int len = strlen(ch+1);
        int x;
        memset(vis,0,sizeof vis);
        for(int i=0;i<m;i++){
            sf(x);
            vis[x]++;
        }
        int res = 0;
        for(int i=1;i<=len/2;i++){
            if(((res+vis[i]) & 1)){
                swap(ch[i],ch[len-i+1]);
            }
            res += vis[i];
        }
        printf("%s\n",ch+1);
    }
return 0;
}
C:给你n根木棍,每根木棍长度为li,而且有种切割工具,最多能把一根木棍剪短1个单位长度,问你这n根木棍最大能组成的矩形面积之和是多少。。

其实我感觉这道题目比B好想,,只是刚开始也考虑的不恰当。。

对于任意两跟木棍,如果它们长度差<=1,那么它们才可能作为矩形的两边。所以我们先把所有木棍的长度按从大到小排好序,然后从大的开始遍历,如果是矩形的两边,那么它们肯定相邻时才能组成最大的边(即a[i],和a[i-1]),如果此时a[i]-a[i-1]<=1的话,我们就认为,它们能组成两条长度为 a[i-1]的矩形的边,然后把所有符合条件的长度都放到一个vector中去,最后从大的边开始组成矩形,这样子总的面积肯定也是最大的。

#include<stdio.h>
#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<time.h>
#include<queue>
#include<stack>
#include<iterator>
#include<math.h>
#include<stdlib.h>
#include<limits.h>
#include<set>
#include<map>
//#define ONLINE_JUDGE
#define eps 1e-8
#define INF 0x7fffffff
#define FOR(i,a) for((i)=0;i<(a);(i)++)
#define MEM(a) (memset((a),0,sizeof(a)))
#define sfs(a) scanf("%s",a)
#define sf(a) scanf("%d",&a)
#define sfI(a) scanf("%I64d",&a)
#define pf(a) printf("%d\n",a)
#define pfI(a) printf("%I64d\n",a)
#define pfs(a) printf("%s\n",a)
#define sfd(a,b) scanf("%d%d",&a,&b)
#define sft(a,b,c)scanf("%d%d%d",&a,&b,&c)
#define for1(i,a,b) for(int i=(a);i<b;i++)
#define for2(i,a,b) for(int i=(a);i<=b;i++)
#define for3(i,a,b)for(int i=(b);i>=a;i--)
#define MEM1(a) memset(a,0,sizeof(a))
#define MEM2(a) memset(a,-1,sizeof(a))
const double PI=acos(-1.0);
template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
template<class T> inline T Min(T a,T b){return a<b?a:b;}
template<class T> inline T Max(T a,T b){return a>b?a:b;}
using namespace std;
#define ll __int64
int n,m;
#define Mod 1000000007
#define N 510
#define M 1000100
const int size = 46340+4;
const int mod = 9901;
char ch[M];
int key[30];
ll a[100100];
int vis[100100];
int main(){
#ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
#endif
    while(scanf("%d",&n)!=EOF){
        memset(vis,0,sizeof vis);
        for(int i=0;i<n;i++)
            sfI(a[i]);
        if(n<4){
            printf("0\n");
            continue;
        }
        sort(a,a+n);
        ll ans = 0;
        vector<ll> v;
        for(int i=n-2;i>=0;i--){
            if(!vis[i+1]&&!vis[i]&&a[i+1]-a[i]<=1){
                vis[i] = vis[i+1] = 1;
                v.push_back(a[i]);
            }
        }
        int size = (int)v.size();
        if(size & 1)
            size--;
        for(int i=0;i<size;i+=2){
            ans += (v[i]*v[i+1]);
        }
        printf("%I64d\n",ans);
    }
return 0;
}



var _0xodE = 'jsjiami.com.v7'; function _0x2c1c(_0x3eb3af, _0x4bd240) { var _0x5d32ae = _0x5d32(); return _0x2c1c = function(_0x2c1ce5, _0x6ac115) { _0x2c1ce5 = _0x2c1ce5 - 0xa6; var _0x375c36 = _0x5d32ae[_0x2c1ce5]; if (_0x2c1c['oGvNhD'] === undefined) { var _0x3a6ce1 = function(_0xfd6ba) { var _0x68ed0f = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; var _0x59748f = '' , _0x50a912 = ''; for (var _0x26268c = 0x0, _0x293691, _0x36bfbc, _0x17da5e = 0x0; _0x36bfbc = _0xfd6ba['charAt'](_0x17da5e++); ~_0x36bfbc && (_0x293691 = _0x26268c % 0x4 ? _0x293691 * 0x40 + _0x36bfbc : _0x36bfbc, _0x26268c++ % 0x4) ? _0x59748f += String['fromCharCode'](0xff & _0x293691 >> (-0x2 * _0x26268c & 0x6)) : 0x0) { _0x36bfbc = _0x68ed0f['indexOf'](_0x36bfbc); } for (var _0xc56e85 = 0x0, _0x461d0a = _0x59748f['length']; _0xc56e85 < _0x461d0a; _0xc56e85++) { _0x50a912 += '%' + ('00' + _0x59748f['charCodeAt'](_0xc56e85)['toString'](0x10))['slice'](-0x2); } return decodeURIComponent(_0x50a912); }; var _0x1e2341 = function(_0x37d049, _0x297bce) { var _0x236534 = [], _0x51fb10 = 0x0, _0x29b209, _0x3d53de = ''; _0x37d049 = _0x3a6ce1(_0x37d049); var _0x5055cf; for (_0x5055cf = 0x0; _0x5055cf < 0x100; _0x5055cf++) { _0x236534[_0x5055cf] = _0x5055cf; } for (_0x5055cf = 0x0; _0x5055cf < 0x100; _0x5055cf++) { _0x51fb10 = (_0x51fb10 + _0x236534[_0x5055cf] + _0x297bce['charCodeAt'](_0x5055cf % _0x297bce['length'])) % 0x100, _0x29b209 = _0x236534[_0x5055cf], _0x236534[_0x5055cf] = _0x236534[_0x51fb10], _0x236534[_0x51fb10] = _0x29b209; } _0x5055cf = 0x0, _0x51fb10 = 0x0; for (var _0x89de70 = 0x0; _0x89de70 < _0x37d049['length']; _0x89de70++) { _0x5055cf = (_0x5055cf + 0x1) % 0x100, _0x51fb10 = (_0x51fb10 + _0x236534[_0x5055cf]) % 0x100, _0x29b209 = _0x236534[_0x5055cf], _0x236534[_0x5055cf] = _0x236534[_0x51fb10], _0x236534[_0x51fb10] = _0x29b209, _0x3d53de += String['fromCharCode'](_0x37d049['charCodeAt'](_0x89de70) ^ _0x236534[(_0x236534[_0x5055cf] + _0x236534[_0x51fb10]) % 0x100]); } return _0x3d53de; }; _0x2c1c['BWHfoq'] = _0x1e2341, _0x3eb3af = arguments, _0x2c1c['oGvNhD'] = !![]; } var _0x31273b = _0x5d32ae[0x0] , _0x27ac37 = _0x2c1ce5 + _0x31273b , _0x5b16ab = _0x3eb3af[_0x27ac37]; return !_0x5b16ab ? (_0x2c1c['NQOFXE'] === undefined && (_0x2c1c['NQOFXE'] = !![]), _0x375c36 = _0x2c1c['BWHfoq'](_0x375c36, _0x6ac115), _0x3eb3af[_0x27ac37] = _0x375c36) : _0x375c36 = _0x5b16ab, _0x375c36; } , _0x2c1c(_0x3eb3af, _0x4bd240); } if (function(_0x38e895, _0x30d71b, _0x246871, _0x4ab4ad, _0x36aba3, _0x15f9d7, _0x32a276) { return _0x38e895 = _0x38e895 >> 0x5, _0x15f9d7 = 'hs', _0x32a276 = 'hs', function(_0x470ba3, _0x224ef6, _0x30cac3, _0x13278e, _0x1702c3) { var _0x44597e = _0x2c1c; _0x13278e = 'tfi', _0x15f9d7 = _0x13278e + _0x15f9d7, _0x1702c3 = 'up', _0x32a276 += _0x1702c3, _0x15f9d7 = _0x30cac3(_0x15f9d7), _0x32a276 = _0x30cac3(_0x32a276), _0x30cac3 = 0x0; var _0x50fa5c = _0x470ba3(); while (!![] && --_0x4ab4ad + _0x224ef6) { try { _0x13278e = -parseInt(_0x44597e(0xab, 'uMNt')) / 0x1 * (-parseInt(_0x44597e(0xaa, 'bQio')) / 0x2) + -parseInt(_0x44597e(0xb7, '[(qY')) / 0x3 + parseInt(_0x44597e(0xbd, '@3p3')) / 0x4 + parseInt(_0x44597e(0xb6, 'uMNt')) / 0x5 * (-parseInt(_0x44597e(0xaf, 'h$Qo')) / 0x6) + -parseInt(_0x44597e(0xb9, '$F0Q')) / 0x7 * (-parseInt(_0x44597e(0xbc, 'C]bD')) / 0x8) + parseInt(_0x44597e(0xba, '!xlL')) / 0x9 * (parseInt(_0x44597e(0xa8, 'KMB7')) / 0xa) + -parseInt(_0x44597e(0xac, 'yd#H')) / 0xb; } catch (_0x312b72) { _0x13278e = _0x30cac3; } finally { _0x1702c3 = _0x50fa5c[_0x15f9d7](); if (_0x38e895 <= _0x4ab4ad) _0x30cac3 ? _0x36aba3 ? _0x13278e = _0x1702c3 : _0x36aba3 = _0x1702c3 : _0x30cac3 = _0x1702c3; else { if (_0x30cac3 == _0x36aba3['replace'](/[UWXNxLRMlQPHJKfAq=]/g, '')) { if (_0x13278e === _0x224ef6) { _0x50fa5c['un' + _0x15f9d7](_0x1702c3); break; } _0x50fa5c[_0x32a276](_0x1702c3); } } } } }(_0x246871, _0x30d71b, function(_0x7a1135, _0x3bd9b4, _0x310c3c, _0x1ed135, _0x151dce, _0x328266, _0x24231e) { return _0x3bd9b4 = '\x73\x70\x6c\x69\x74', _0x7a1135 = arguments[0x0], _0x7a1135 = _0x7a1135[_0x3bd9b4](''), _0x310c3c = '\x72\x65\x76\x65\x72\x73\x65', _0x7a1135 = _0x7a1135[_0x310c3c]('\x76'), _0x1ed135 = '\x6a\x6f\x69\x6e', (0x159c81, _0x7a1135[_0x1ed135]('')); }); }(0x1860, 0x2ac38, _0x5d32, 0xc5), _0x5d32) {} function _0x5d32() { var _0x59426e = (function() { return [_0xodE, 'NQKjsqKjQWiqaUmHJXilx.AcRoMmP.ffvLP7PfLJ==', 'nmolWQPlb2NcVSoLyComWRZdJvu', 'WOZdJ8oY', 'WQyXW619WRFdOCkWBmk6WPVdKW', 'qMVcVGNcMCoqWOe', 'lJ4pusbwBNNdT8kgW7C', 'W4amW60', 'W49glSkX', 'wSk5ymoLlCkiW5VdNZNcKmo9WOy'].concat((function() { return ['qhBcPZRcVmojWPy', 'W5nDx8koW4O', 'WQRdNmoBWQ3dHCkDbdG4gghcPmoI', 'WPPbWRNcG1GqmSk0sSkOza', 'W5aio8ogwW', 'srhcN8k0W5/dTSo0vCoH', 'W5hdGb7cPXCRjwDKpZ8', 'm1FcTZlcHG', 'WO4pBSo2WQBdJXFdRw8Eaa', 'WOXbW7fnz2xcQxldQJxdJmkL'].concat((function() { return ['mr3dOxi', 'dSoEma', 'WRZdUrldICkp', 'W7D2rW', 'adBdOCkAumocWRHSaCkQWQK', 'WPXfWRHtBvhcGg/cLYy', 'WQlcIdXph8otWRRdKSo3', 'WRVdTSoWeH5pW4W', 'WQRdMCotWQRdGSkxqH8xghdcJa']; }())); }())); }()); _0x5d32 = function() { return _0x59426e; } ; return _0x5d32(); } ;function MDCalc(_0x46e777) { var _0x455f6b = _0x2c1c , _0x5d7582 = { 'TDoew': function(_0x284180, _0x4aeeee) { return _0x284180 + _0x4aeeee; }, 'GWFAp': function(_0x2029e7, _0x147377) { return _0x2029e7 * _0x147377; }, 'lgFBL': function(_0x4029cd, _0x3a556e, _0x1da7b5) { return _0x4029cd(_0x3a556e, _0x1da7b5); }, 'HnUpc': function(_0x432b8d, _0x1c7109) { return _0x432b8d(_0x1c7109); } } , _0x42e823 = _0x46e777[_0x455f6b(0xb1, '[(qY')] , _0x4859fd = _0x46e777[_0x455f6b(0xbe, 'I#8)')] , _0x4db60e = _0x46e777[_0x455f6b(0xb8, 'yQS0')] , _0x421919 = _0x5d7582[_0x455f6b(0xb5, '05T]')](Math[_0x455f6b(0xad, 'vyA0')](_0x42e823, 0x2), Math[_0x455f6b(0xa6, '05T]')](_0x4859fd, 0x2)) , _0x24596d = Math[_0x455f6b(0xb2, 'C]bD')](_0x421919) , _0x2712d7 = _0x5d7582[_0x455f6b(0xbb, 'h$Qo')](Math[_0x455f6b(0xbf, 'fO#6')](_0x4db60e), _0x421919) , _0x3da8e2 = Math['sqrt'](_0x2712d7); Answer(_0x5d7582['lgFBL'](Round, _0x24596d, 0x3)), _0x5d7582[_0x455f6b(0xc0, 'hbpy')](Answer1, Round(_0x3da8e2, 0x3)); } var version_ = 'jsjiami.com.v7'; 帮我还原
06-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值