Educational Codeforces Round 32
http://codeforces.com/contest/888
A Local Extrema【水】
【题意】:计算极值点个数
【分析】:除了第一个最后一个外,遇到极值点ans++,包括极大和极小
【代码】:
#include<bits/stdc++.h> using namespace std; int main()
{
int n,a[+];
int maxn,minn;
maxn=minn=;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>a[i];
}
for(int i=;i<=n-;i++)
{
if(a[i]>a[i+]&&a[i]>a[i-]) maxn++;
if(a[i]<a[i+]&&a[i]<a[i-]) minn++;
}
cout<<minn+maxn<<endl;
return ;
}
暴力
B Buggy Robot【模拟】
【题意】:机器人从(0,0)出发,有UDLR四种走法,分别代表上下左右的方向,最后回到(0,0),给你一段包含这些走法的序列,求最多有几个走法正确(即可以删去最少的操作使其能够回到原点)。
【分析】:记录下四个方向执行了几次,然后取相反方向的最小值乘2。我是这么想的,还特判了。最后被hack了···
【代码】:
#include<bits/stdc++.h> using namespace std; int main()
{
int n,min1,min2;
int l,d,u,r;
l=d=u=r=min1=min2=;
char a[];
cin>>n;
for(int i=;i<n;i++)
{
cin>>a[i];
if(a[i]=='L') l++;
else if(a[i]=='D') d++;
else if(a[i]=='U') u++;
else r++;
}
if(l&&(!r)){
printf("0\n");
return ;
}
if(r&&(!l)){
printf("0\n");
return ;
}
if(u&&(!d)){
printf("0\n");
return ;
}
if(d&&(!u)){
printf("0\n");
return ;
} if(l&&r) min1=*min(l,r);
if(u&&d) min2=*min(u,d); printf("%d\n",min1+min2);
return ;
}
被hack代码
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N,l=,r=,u=,d=;
cin>>N;
string s;
cin>>s;
for(int i=;i<s.length();i++){
if(s[i]=='L')l++;
if(s[i]=='R')r++;
if(s[i]=='U')u++;
if(s[i]=='D')d++;
}
cout<<*(min(l,r)+min(u,d))<<endl;
}
AC
C K-Dominant Character【贪心】
【题意】:给一小写字母组成的字符串,找个长度最短的k。使得这些长度为k的子串必须包含了某同一个字符。
【分析】:记录下两个相同字符的最长距离,然后取这些距离的最小值。最小化最大值。
一个数组记录该字母上一次出现的位置
一个数组记录该字母相邻最大距离
如果没有重复出现的字符呢
设定在-1和len两个位置上和所以字母相同
(金牌讲师010):对于aab
有a这个位置的是
1 2
字符串长度是3
间距分别是
0-1 1
1-2 1
2-4 2
0和4是字符串的边界外
所以对于字符a就是2是最大间距
b只有3这个位置出现
0-3 3
3-4 1
所以b的最大间距是3
这题答案就是2
字符串的边界外也算进去?
因为
___x___x____x__
两边还有__
x是出现的位置
【代码】:
#include<bits/stdc++.h> using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3fLL;
const double pi = acos(-1.0);
const int maxn = +;
const int mod = 1e9+;
char a[maxn];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int n;
scanf("%s",a+);
int len=strlen(a+),ans=len;
for (int i=;i<;i++){
int tmp=;
int pos=;
for (int j=;j<=len;j++)if (a[j]==i)tmp=max(tmp,j-pos),pos=j;
tmp=max(tmp,len+-pos);
ans=min(ans,tmp);
}
printf("%d\n",ans);
return ;
}
2 seconds
256 megabytes
standard input
standard output
A permutation p of size n is an array such that every integer from 1 to n occurs exactly once in this array.
Let's call a permutation an almost identity permutation iff there exist at least n - k indices i (1 ≤ i ≤ n) such that pi = i.
Your task is to count the number of almost identity permutations for given numbers n and k.
The first line contains two integers n and k (4 ≤ n ≤ 1000, 1 ≤ k ≤ 4).
Print the number of almost identity permutations for given n and k.
4 1
1
4 2
7
5 3
31
5 4
76 【题意】:一个长为n的排列,其中pi=i的位置大于等于n-k的排列方案数, 比如n=5 k=3让你求有多少个1 2 3 4 5的排列使得至少5-3=2个数字在“原位”
【分析】:公式是C(n,i)*D(i) (0<=i<=k),
【代码】:
By RoniKing, contest: Educational Codeforces Round , problem: (D) Almost Identity Permutations, Accepted, #
#include <bits/stdc++.h>
#define LL long long
using namespace std;
//const int mod=1e9+7;
const int maxn=1e3+;
LL D[maxn], C[maxn][];
int p[+];
void init()
{
D[]=;
D[]=;
for(int i=;i<maxn;i++)//错排
D[i]=((i-)*(D[i-]+D[i-]));
int i;
//for (p[0]=i=1;i<=200000;i++) p[i]=1ll*p[i-1]*i%mod;
for (int i = ; i < maxn; i++)//排列组合
{
for (int j = ; j <= min(, i); j++)
{
if (j == ) C[i][j] = ;
else
C[i][j] = (C[i-][j] + C[i-][j-]) ;
}
}
}
int main()
{
init();
int t; int n,k;
cin>>n>>k;
LL ans=;
for(LL i=;i<=n;i++)
ans = ans * i ;
LL val=;
for(int i=;i<=k;i++)
val=(val + D[i]*C[n][i]) ;
// cout<<ans<<endl;
cout<<val<<endl;
//cout<<(ans-val)<<endl; }
我的丑代码
#include<bits/stdc++.h> using namespace std; int main()
{
long long n,k;
cin>>n>>k;
long long ans=;
if(k>=) ans+=n*(n-)/;
if(k>=) ans+=n*(n-)*(n-)/;
if(k>=) ans+=n*(n-)*(n-)*(n-)*/;
cout<<ans;
return ;
}
简♂短
Educational Codeforces Round 32的更多相关文章
- Educational Codeforces Round 32 Problem 888C - K-Dominant Character
1) Link to the problem: http://codeforces.com/contest/888/problem/C 2) Description: You are given a ...
- Educational Codeforces Round 32 E. Maximum Subsequence
题目链接 题意:给你两个数n,m,和一个大小为n的数组. 让你在数组找一些数使得这些数的和模m最大. 解法:考虑 dfs但是,数据范围不允许纯暴力,那考虑一下折半搜索,一个从头开始往中间搜,一个从后往 ...
- Educational Codeforces Round 32:E. Maximum Subsequence(Meet-in-the-middle)
题目链接:E. Maximum Subsequence 用了一个Meet-in-the-middle的技巧,还是第一次用到这个技巧,其实这个技巧和二分很像,主要是在dfs中,如果数量减小一半可以节约很 ...
- Educational Codeforces Round 32 Maximum Subsequence CodeForces - 888E (meet-in-the-middle,二分,枚举)
You are given an array a consisting of n integers, and additionally an integer m. You have to choose ...
- Educational Codeforces Round 32 Almost Identity Permutations CodeForces - 888D (组合数学)
A permutation p of size n is an array such that every integer from 1 to n occurs exactly once in thi ...
- Educational Codeforces Round 32 E 二分
题意:从数组中选几个(任意),使他们的和modm的值最大 题解:我一开始是直接暴力写,然后就会t 其实这题可以用二分的方法写,一半数组的值用来遍历,一般数组的值用来查询. 二分查询就能把时间继续缩短 ...
- Educational Codeforces Round 132 (Rated for Div. 2)
Educational Codeforces Round 132 (Rated for Div. 2) A. Three Doors 简述 题意: 有三扇门(1~3), 其中两扇门后面有对应标号门的钥 ...
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
随机推荐
- Android学习记录(7)—Intent中显示意图和隐式意图的用法
Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的 ...
- 剑指Offer - 九度1517 - 链表中倒数第k个结点
剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...
- 《Cracking the Coding Interview》——第16章:线程与锁——题目6
2014-04-27 20:25 题目:关于java中标有synchronized的成员方法? 解法:这代表同一个对象实例的synchronized方法不能被多个线程同时调用.注意有这么多个地方都加粗 ...
- java 日期处理相关
/** *获取指定日期 前后指定天数的 日期 * */ public static String getNewDate(String sdate, int days) throws Exception ...
- cloud-utils
官方下载:https://launchpad.net/cloud-utils rpm包下载地址:http://rpmfind.net/linux/rpm2html/search.php?query=c ...
- React01
目录 React-day01 入门知识 React介绍 官网 React开发环境初始化 SPA 脚手架初始化项目(方便,稳定)* 通过webpack进行初始化 配置镜像地址 开发工具配置 元素渲染 组 ...
- HDU 4109 Instrction Arrangement(DAG上的最长路)
把点编号改成1-N,加一点0,从0点到之前任意入度为0的点之间连一条边权为0的边,求0点到所有点的最长路. SPFA模板留底用 #include <cstdio> #include < ...
- HTML5应用:setCustomValidity(message)接口
本文转自http://tid.tenpay.com/?p=3592 HTML5表单验证给前端人员带来了便利,但是在用户体验上存在一些缺陷,默认的提示对用户很不友好,无法准确的获取想要的信息.好在大牛们 ...
- oracle基础概念学习笔记
数据库对象: 1.表:表是用来存放用户数据的对象,由行和列组成. 2.约束:保证数据完整性的规则,可以作用在耽搁字段或者多个字段组合上,用来约束这些字段上的数据必须符合作用于之上的规则. 3.视图:通 ...
- mac系统安装/升级node
一.安装 1.node 是通过brew来安装的,所以第一步先安装brew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Ho ...