A,水题不多说。

#include<bits/stdc++.h>
using namespace std; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n,t; scanf("%d%d",&n,&t);
if(t<){
for(int i = n; i--;) putchar(''+t);
}else{
if(n == ) puts("-1");
else{
putchar('');
for(int i = n; --i;) putchar('');
}
}
return ;
}

A

B,用补集算一下。

#include<bits/stdc++.h>
using namespace std; const int mod = 1e9+;
typedef long long ll;
int qpow(int a,int q)
{
int re = ;
while(q){
if(q&) re = (ll)re*a%mod;
a = (ll)a*a%mod;
q >>= ;
}
return re;
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n; scanf("%d",&n);
int ans = (qpow(,n)-qpow(,n)+mod)%mod;
printf("%d",ans);
return ;
}

B

C,当s1[i] != s2[i]的时候至少其中f值+1,效果记为10,01,11(与s1[i]和s2[i]都不同)

s1[i] == s2[i]的时候效果记为11 00。

记s[i] != s[i]有ct1个,为了保证两个f相等如果ct是奇数,单出来那个只有使得f1,f2同时加1,所以下界为low = (ct+1)/2。

其中有ct/2个对10,01 。当t<low的时候无解。

记s1[i]==s2[i]有ct2 = n-ct1个,当t>=low && t <= low+ct2的时候,只要在s1[i]==s2[i]时取相应个数个的ch,ch !=s1[i]。(11)

当t>=low+ct2的时候,需要从ct/2对中选出一些来变成 11,11

#include<bits/stdc++.h>
using namespace std; const int LEN = 1e5+;
char s[][LEN]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n,t; scanf("%d%d\n",&n,&t);
gets(s[]); gets(s[]);
int ct1 = ;
for(int i = ; i < n; i++){
ct1 += s[][i] == s[][i];
}
int ct2 = n-ct1;
int low = (ct2+)/;
if(t < low){
puts("-1");
}else {
int pir = low - (ct2&);
int del = t - low - ct1;
int swc = , ct, ex;
if(del > ) {
ex = ct1;
ct = (pir - del)*;
}else {
ct = (pir)*;
ex = t - low;
}
for(int i = ; i < n; i++){
if(s[][i] != s[][i]){
if(ct){ //控制 01
ct--;
putchar(s[swc ^= ][i]);
}else {
for(char c = 'a'; c <= 'z'; c++){
if(c != s[][i] && c != s[][i]) {
putchar(c); break;
}
}
}
}else {
if(ex){ //控制11
ex--;
for(char c = 'a'; c <= 'z'; c++){
if(c != s[][i] && c != s[][i]) {
putchar(c); break;
}
}
}else {
putchar(s[][i]);
}
}
}
}
return ;
}

C

D,暴力,有个事实是1e9以内的的素数间隔不超过282,sqrt(N)判断一下就好了。

#include<bits/stdc++.h>
using namespace std; const int maxn = 1e5+;
int Prim[maxn], sz ;
bool vis[maxn];
void seive(int n = maxn-)
{
int m = (int)sqrt(n+0.5);
for(int i = ; i <= m; i++){
if(!vis[i])
for(int j = i*i; j <= n; j += i){
vis[j] = true;
}
}
for(int i = ; i <= n; i++){
if(!vis[i]) Prim[sz++] = i;
}
} bool chkPrime(int x)
{
int m = (int)sqrt(x+0.5);
for(int i = ; Prim[i] <= m; i++){
if(x%Prim[i] == ) return false;
}
return true;
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
seive();
int n; scanf("%d",&n);
if(chkPrime(n)){
puts("");
printf("%d",n);
}else if(chkPrime(n-)){
puts("");
printf("%d %d",,n-);
}else {
puts("");
for(int i = ; ; i += ){
if(chkPrime(n-i)){
printf("%d ",n-i);
n = i;
break;
}
}
for(int i = ; Prim[i] <= n; i++){
if(chkPrime(n-Prim[i])){
printf("%d %d",Prim[i],n-Prim[i]);
break;
}
}
}
return ;
}

D

E,问交换的最小花费。看成一个置换环,最优的交换就是不断消去端点,但是这样不太好写。

一般两个排列问相对关系都可以把其中一个做映射会方便处理。把序列b映射成1...n,把a按照相同规则映射,并记录映射后元素x的位置。

从小的元素枚举,找到它在序列中的位置p[x],小的要往左边走,判断一下左边的元素是不是要往大于p[x]的位置走。如果是就交换。

p[x]的位置前面一定会有一个不小于p[x]的元素。

#include<bits/stdc++.h>
using namespace std; const int maxn = ;
int mp[maxn];
int a[maxn],p[maxn]; #define PB push_back
#define MP make_pair
#define fi first
#define se second //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n; scanf("%d",&n);
for(int i = ; i <= n; i++){
scanf("%d",a+i);
}
for(int i = ; i <= n; i++){
int x; scanf("%d",&x);
mp[x] = i;
}
for(int i = ; i <= n; i++){
p[ a[i] = mp[a[i]] ] = i;
} int c = ;
for(int x = ; x <= n; x++){
for(int j = p[x]; --j>=x ; ){
if(a[j] >= p[x]){
c += p[x] - j;
swap(a[j],a[p[x]]);
ans.PB(MP(j,p[x]));
p[a[j]] = p[x];
p[x] = j;
}
}
} printf("%d\n",c);
printf("%d\n",(int)ans.size());
for(auto i: ans){
printf("%d %d\n",i.fi,i.se);
}
return ;
}

E

Codeforces Round #324 (Div. 2) A B C D E的更多相关文章

  1. Codeforces Round #324 (Div. 2)解题报告

    ---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...

  2. Codeforces Round #324 (Div. 2) C (二分)

    题目链接:http://codeforces.com/contest/734/problem/C 题意: 玩一个游戏,一开始升一级需要t秒时间,现在有a, b两种魔法,两种魔法分别有m1, m2种效果 ...

  3. Codeforces Round #324 (Div. 2) E. Anton and Ira 贪心

    E. Anton and Ira Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...

  4. Codeforces Round #324 (Div. 2) D. Dima and Lisa 哥德巴赫猜想

    D. Dima and Lisa Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...

  5. Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心

    C. Marina and Vasya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pr ...

  6. Codeforces Round #324 (Div. 2) B. Kolya and Tanya 快速幂

    B. Kolya and Tanya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pro ...

  7. Codeforces Round #324 (Div. 2) A. Olesya and Rodion 水题

    A. Olesya and Rodion Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/p ...

  8. Codeforces Round #324 (Div. 2) (哥德巴赫猜想)

    题目:http://codeforces.com/problemset/problem/584/D 思路: 关于偶数的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和. 关于奇数的哥德巴赫猜想:任一 ...

  9. Codeforces Round #324 (Div. 2) Dima and Lisa 哥德巴赫猜想

    原题链接:http://codeforces.com/contest/584/problem/D 题意: 给你一个奇数,让你寻找三个以内素数,使得和为这个奇数. 题解: 这题嘛...瞎比搞搞就好,首先 ...

  10. Codeforces Round #324 (Div. 2) Marina and Vasya 乱搞推理

    原题链接:http://codeforces.com/contest/584/problem/C 题意: 定义$f(s1,s2)$为$s1,s2$不同的字母的个数.现在让你构造一个串$s3$,使得$f ...

随机推荐

  1. php5.6安装window7安装memcache.dll库所遇到的误区

    问题: window7 64位,下载的库 memcache.dll 为64位的,且对应php的版本.但是重启后phpstudy查看phpinfo依然没有memcache: 根源: 发现是下载的 mem ...

  2. (PHP)redis Hash(哈希)操作

    /** * * Hash操作 * 哈希操作 * 可理解为数据库操作 * */ //为user表中的字段赋值.成功返回1,失败返回0.若user表不存在会先创建表再赋值,若字段已存在会覆盖旧值. $re ...

  3. go语言web开发框架_Iris框架讲解(五):MVC包使用

    在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...

  4. linux线程私有数据---TSD池

    进程内的所有线程共享进程的数据空间,所以全局变量为所有线程共有.在某些场景下,线程需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Data)TSD来解决.在线程内部, ...

  5. lj的锁

    lj的锁 Lj花很大力气设计了一个锁,有一天,lj用这个锁把lbn锁在了一个小房间里,准备把lbn啊掉,现在lbn要逃出这个房间,他需要解开这个锁.在平面上有n个钉子,第i个钉子的位置是(x[i],0 ...

  6. [Xcode 实际操作]五、使用表格-(4)设置UITableView单元格数据库源

    目录:[Swift]Xcode实际操作 本文将演示如何自定义表格的数据来源. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加 ...

  7. Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)

    本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...

  8. 树状数组 洛谷P3616 富金森林公园

    P3616 富金森林公园 题目描述 博艾的富金森林公园里有一个长长的富金山脉,山脉是由一块块巨石并列构成的,编号从1到N.每一个巨石有一个海拔高度.而这个山脉又在一个盆地中,盆地里可能会积水,积水也有 ...

  9. kuangbin专题十二 HDU1029 Ignatius and the Princess IV (水题)

    Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32767 K ( ...

  10. 洛谷P3870 [TJOI2009]开关

    题目描述 现有\(N(2 ≤ N ≤ 100000)\)盏灯排成一排,从左到右依次编号为:\(1,2,......,N\).然后依次执行\(M(1 ≤ M ≤ 100000)\)项操作,操作分为两种: ...