A - Codehorses T-shirts

思路:有相同抵消,没有相同的对答案+1

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = 1e5 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ; string a[], b[];
int n; map<string, int> mp;
int main(){
scanf("%d", &n);
for(int i = ; i <= n; i++) cin >> a[i], mp[a[i]]++;
int ans = ;
for(int i = ; i <= n; i++) {
cin >> b[i];
if(mp[b[i]]) {
mp[b[i]]--;
} else {
ans++;
}
}
printf("%d\n", ans);
return ;
} /*
*/

B - Light It Up

思路:求一下前缀,如果要加一个开关肯定是加在原来是关的前面一个或者后面一个,枚举一下就好啦。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; int n, M, sum[N], fsum[N], a[N];
int main(){
scanf("%d%d", &n, &M);
for(int i = ; i <= n; i++) scanf("%d", &a[i]);
a[++n] = M;
for(int i = ; i <= n; i++) {
sum[i] = sum[i - ];
if(i & ) sum[i] += a[i] - a[i - ];
fsum[i] = a[i] - sum[i];
} int ans = sum[n];
for(int i = ; i < n; i++) {
if(i & ) {
if(a[i] > a[i - ] + ) {
int ret = a[i] - a[i - ] - ;
ret += fsum[n] - fsum[i];
ret += sum[i - ];
ans = max(ans, ret);
} if(a[i] < a[i + ] - ) {
int ret = sum[i];
ret += fsum[n] - fsum[i + ];
ret += a[i + ] - a[i] - ;
ans = max(ans, ret);
}
}
} printf("%d\n", ans);
return ;
} /*
*/

C - Covered Points Count

思路:离散化差分标记搞一搞

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = 1e6 + + 2e5;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ; LL n, tot, in[N], out[N], ans[N];
LL hs[N], l[N], r[N]; int main(){
scanf("%lld", &n);
for(int i = ; i <= n; i++) {
scanf("%lld%lld", &l[i], &r[i]);
hs[++tot] = l[i];
hs[++tot] = r[i];
hs[++tot] = l[i] + ;
hs[++tot] = l[i] - ;
hs[++tot] = r[i] + ;
hs[++tot] = r[i] - ;
} sort(hs + , hs + + tot);
tot = unique(hs + , hs + + tot) - hs - ; for(int i = ; i <= n; i++) {
int pos1 = lower_bound(hs + , hs + + tot, l[i]) - hs;
int pos2 = lower_bound(hs + , hs + + tot, r[i]) - hs;
in[pos1]++;
out[pos2]++;
} LL cnt = ;
for(int i = ; i < tot; i++) {
cnt += in[i];
ans[cnt]++;
cnt -= out[i];
LL num = hs[i + ] - hs[i] - ;
ans[cnt] += num;
} cnt += in[tot];
ans[cnt]++; for(int i = ; i <= n; i++) printf("%lld ", ans[i]);
return ;
} /*
*/

D - Yet Another Problem On a Subsequence

题目大意:给你n个数字 (n <= 1000), 问你有多少个子序列是good  sequence

good sequence的定义是能变成若干个good arrays

good array 的定义是这个数组的第一个元素的值等于这个数组的length - 1。

思路: A了三题之后日常开始挂机。。。 还是太菜啦!!!!

比赛的时候感觉是个dp,但是不知到如何定义状态。。。

后来发现原来我看错了题,原来是把good sequence划分成若干个good arrays

我们定义dp[ i ],表示从第 i 个开始,并且 i 作为一个array第一个元素的的合法答案的方案数。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int> using namespace std; const int N = 1e3 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; int a[N], dp[N], C[N][N], n; void init() {
for(int i = (C[][] = ); i < N; i++)
for(int j = (C[i][] = ); j < N; j++)
C[i][j] = (C[i - ][j] + C[i - ][j - ]) % mod;
} int main() {
init();
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d", &a[i]);
} dp[n + ] = ; for(int i = n; i >= ; i--) {
if(a[i] > ) {
for(int j = i + a[i] + ; j <= n + ; j++) {
dp[i] = (dp[i] + 1LL * dp[j] * C[j - i - ][a[i]]) % mod;
}
}
} int ans = ; for(int i = ; i <= n; i++) {
ans = (ans + dp[i]) % mod;
} printf("%d\n", ans);
return ;
}
/*
*/

Educational Codeforces Round 46 (Rated for Div. 2)的更多相关文章

  1. Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses

    Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...

  2. Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count

    Bryce1010模板 http://codeforces.com/problemset/problem/1000/C 题意:问你从[l,r]区间的被多少条线覆盖,列出所有答案. 思路:类似括号匹配的 ...

  3. Educational Codeforces Round 46 (Rated for Div. 2) B. Light It Up

    Bryce1010模板 http://codeforces.com/problemset/problem/1000/B 思路:先用两个数组sumon[]和sumoff[]将亮着的灯和灭的灯累计一下. ...

  4. Educational Codeforces Round 46 (Rated for Div. 2) A. Codehorses T-shirts

    Bryce1010模板 http://codeforces.com/problemset/problem/1000/A 题意: 问你将一种类型的衣服转换成另一种的最小次数. #include<b ...

  5. Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence

    这个题是dp, dp[i]代表以i开始的符合要求的字符串数 j是我们列举出的i之后一个字符串的开始地址,这里的C是组合数 dp[i] += C(j - i - 1, A[i]] )* dp[j]; # ...

  6. Educational Codeforces Round 46 (Rated for Div. 2) D

    dp[i]表示一定包含第I个点的好的子序列个数,那么最终答案就是求dp[0] + dp[1] + .... + dp[n-1] 最终的子序列被分成了很多块,因此很明显我们枚举第一块,第一块和剩下的再去 ...

  7. Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序

    Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序 [Problem Description] ​ 给你 ...

  8. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...

随机推荐

  1. Linux系统之路——如何在CentOS7.2安装R和RStudio(Server)

    使用ubuntu的小伙伴们直接使用命令sudo apt-get install r-base-dev或者r-base搞定.然而对于使用centos的我却一直卡在安装这一步,十分的悲催,只有羡慕的份,但 ...

  2. 防止apk反编译的技术分析浅谈--内存修改器篇

    声明: 1.本帖转载自http://jingyan.baidu.com/article/a24b33cd509eb719fe002b94.html,仅供自用,勿喷 Apk反编译修改器有很多.拿其中的比 ...

  3. 去除sql表格中的unique 唯一属性----phpmyadmin 没发现哪里好直接操作

    ALTER TABLE tf_giftcard_record DROP INDEX oid;

  4. Covariance 协方差分析

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  5. 0UE3 材质概要

    材质概要 概述 参数 当创建材质时如何考虑颜色 材质表达式 Abs(求绝对值) 添加 AntialiasedTextureMask AppendVector(向量合并) BumpOffset(凸凹偏移 ...

  6. Asp.Net MVC +EF CodeFirst+多层程序设计

    1.概述 这是一个基于个人博客的一个项目,虽然博客根本没必要做这么复杂的设计.但是公司有需求,所以先自己弄个项目练练手.项目需要满足下列需求 1.层与层之间需要解耦,在后期上线更新维护时不需要覆盖,只 ...

  7. poi复杂excel的实现

    一:前言 最近帮一个朋友做excel的导出功能,对于我来说还是挺头疼,我看了下表格样式,对于我来说还是挺头疼的,想当年耗子刚刚出社会的时候做的第一份工作,第一份任务就是把把word转换为html,在这 ...

  8. 重构改善既有代码设计--重构手法01:Extract Method (提炼函数)

    背景: 你有一段代码可以被组织在一起并独立出来.将这段代码放进一个独立函数,并让函数名称解释该函数的用途. void PrintOwing(double amount) { PrintBanner() ...

  9. 【有上下界网络流】【ZOJ】2314 Reactor Cooling

    [算法]有上下界网络流-无源汇(循环流) [题解]http://www.cnblogs.com/onioncyc/p/6496532.html //未提交 #include<cstdio> ...

  10. centos下搭建YII环境

      第一步:安装lnmp wget -c http://soft.vpser.net/lnmp/lnmp1.4-full.tar.gz 下载完lnmp后,进行解压文档 tar zxf lnmp1.4- ...