Educational Codeforces Round 46 (Rated for Div. 2)
思路:有相同抵消,没有相同的对答案+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 ;
} /*
*/
思路:求一下前缀,如果要加一个开关肯定是加在原来是关的前面一个或者后面一个,枚举一下就好啦。
#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 ;
} /*
*/
思路:离散化差分标记搞一搞
#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)的更多相关文章
- Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...
- Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
Bryce1010模板 http://codeforces.com/problemset/problem/1000/C 题意:问你从[l,r]区间的被多少条线覆盖,列出所有答案. 思路:类似括号匹配的 ...
- Educational Codeforces Round 46 (Rated for Div. 2) B. Light It Up
Bryce1010模板 http://codeforces.com/problemset/problem/1000/B 思路:先用两个数组sumon[]和sumoff[]将亮着的灯和灭的灯累计一下. ...
- Educational Codeforces Round 46 (Rated for Div. 2) A. Codehorses T-shirts
Bryce1010模板 http://codeforces.com/problemset/problem/1000/A 题意: 问你将一种类型的衣服转换成另一种的最小次数. #include<b ...
- 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]; # ...
- Educational Codeforces Round 46 (Rated for Div. 2) D
dp[i]表示一定包含第I个点的好的子序列个数,那么最终答案就是求dp[0] + dp[1] + .... + dp[n-1] 最终的子序列被分成了很多块,因此很明显我们枚举第一块,第一块和剩下的再去 ...
- Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序
Educational Codeforces Round 72 (Rated for Div. 2)-D. Coloring Edges-拓扑排序 [Problem Description] 给你 ...
- 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 ...
- 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 ...
随机推荐
- HDU4003 树形DP
题意 :给一棵n个节点的树, 节点编号为1~n, 每条边都有一个花费值. 有k个机器人从S点出发, 问让机器人遍历所有边,最少花费值多少? 这题最难的地方应该就是如何定义状态了 定义dp ...
- oracle导入提示IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件
oracle导入提示:IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件IMP-00000: 未成功终止导入 解决办法:用户缺少导入权限,授予用户导入权限grant imp_ful ...
- nova-virt与libvirt
源码版本:H版 nova通过nova/virt/driver.py中的ComputeDriver对底层虚拟化技术进行抽象,不同的虚拟化技术在nova/virt下有不同的目录,里面均有driver.py ...
- 关闭eclipse自动弹出console功能
使用eclipse时经常会用到最大化窗口,而如果此时是开着tomcat等服务的话,一段后台有打印什么东西出来都会自己弹出 console挺烦人的.可以使用以下操作关闭这个功能. Preferences ...
- NOIP模拟4
期望得分:20+100+100=220 实际得分:20+100+100=220 特判相离.内含 对于两圆相交的情况,一直在考虑求交点 实际上相交的面积可以用两个扇形减去两个三角形 正弦定理.余弦定理来 ...
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
考虑一下,如何在网页中达到类似以下文字渐变的效果? 传统的实现中,是用一副透明渐变的图片覆盖在文字上.具体实现方式可参考 http://www.qianduan.net/css-gradient-te ...
- 20155117王震宇 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结 JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据 ...
- python3爬虫.2.伪装浏览器
有的网页在爬取时候会报错返回 urllib.error.HTTPError: HTTP Error 403: Forbidden 这是网址在检测连接对象,所以需要伪装浏览器,设置User Agent ...
- vps建站教程 CentOS6如何安装配置FTP服务器
通过之前的几篇文章,我们都知道了如何配置PHP环境,也知道如何保护我们的vps以及如何绑定多个域名建设多个网站.有时候我们为了让我们的朋友也能用我们的vps建站又不想给他们太多权限,有时候我们想要当个 ...
- 深入理解Spring系列之七:web应用自动装配Spring配置
转载 https://mp.weixin.qq.com/s/Lf4akWFmcyn9ZVGUYNi0Lw 在<深入理解Spring系列之一:开篇>的示例代码中使用如下方式去加载Spring ...