dp cf 20190615
这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的,
把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点,
如果一个点的被计算的次数等于特殊边的次数,则说明它是我们所求的点
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <vector>
#include <cstring>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e5 + ;
int num[maxn], a[maxn];
pair<int, int>pii[maxn]; int main()
{
int n;
scanf("%d", &n);
for(int i=;i<n;i++)
{
int u, v;
scanf("%d%d", &u, &v);
pii[i] = make_pair(u, v);
}
int ans = ;
for (int i = ; i <= n; i++) scanf("%d", &a[i]);
for(int i=;i<n;i++)
{
int u = pii[i].first, v = pii[i].second;
if(a[u]!=a[v])
{
num[u]++;
num[v]++;
ans++;
}
}
for(int i=;i<=n;i++)
{
if(num[i]==ans)
{
printf("YES\n");
printf("%d\n",i);
return ;
}
}
printf("NO\n");
return ;
}
A
这个我觉得挺难的。。。。
网上题解,dp[i]来表示激活第i个位置,从前面往后推到第i个位置,这个塔存留下来的数量。
这个是线性的,后面那个位置都是由前面的那个位置推过来的,如果我们选了后面那个位置,如果后面的无法把前面的那个位置炸掉
那么只能不炸,或者由最后添加的那个点来炸掉之前你需要炸掉的区间。
这个题目简单,是因为可以转化成线性的,不过我觉得好难想。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#define inf 0x3ff3f3f
using namespace std;
const int maxn = 1e6 + ;
int d[maxn], dp[maxn];
int main()
{
int n;
scanf("%d", &n);
int mm = ;
for(int i=;i<=n;i++)
{
int a;
scanf("%d", &a);
scanf("%d", &d[a]);
mm = max(mm, a);
}
if (d[]) dp[] = ;
int res = min(n, n - dp[]);
for(int i=;i<=mm;i++)
{
if (d[i] == ) dp[i] = dp[i - ];
else {
if (d[i] >= i) dp[i] = ;
else {
dp[i] = dp[i - - d[i]] + ;
}
}
res = min(res, n - dp[i]);
}
printf("%d\n", res);
return ;
}
A
dp cf 20190615的更多相关文章
- 数位DP CF 55D Beautiful numbers
题目链接 题意:定义"beautiful number"为一个数n能整除所有数位上非0的数字 分析:即n是数位所有数字的最小公倍数的倍数.LCM(1到9)=2520.n满足是252 ...
- DP CF 319 div1B
http://codeforces.com/contest/319/problem/B 题目大意: 有删除操作,每次都删除数组右边比自己小的.且紧挨着自己的数字.问最小需要删除几次. 思路: 我们定义 ...
- dp cf 1700 最近几天的刷题
C. Number of Ways 这个题目的意思是,把这个n的序列分成三个连续的部分,要求这三个部分的和是一样的.问这种划分的方法有多少种. 这个题目和之前写过的数字划分有点像,这个就是要先进行前缀 ...
- dp cf 20190614
C. Hard problem 这个题目一开始看还感觉比较复杂,但是还是可以写,因为这个决策很简单就是对于这个字符串倒置还是不倒置. 然后我不会一维去转移,直接用二维,第二维用01来表示转移和不转移, ...
- dp cf 20190613
A. Boredom 这个题目不难,但是我做的还比较复杂,不过还是很开心,至少做出来了,开始因为爆int了还wa了一发,搞得我以为自己做错了 #include <cstdio> #incl ...
- 数位dp入门 HDU 2089 HDU 3555
最基本的一类数位dp题,题目大意一般是在a~b的范围,满足某些要求的数字有多少个,而这些要求一般都是要包含或者不包含某些数字,或者一些带着数字性质的要求,一般来说暴力是可以解决这一类问题,可是当范围非 ...
- Codeforces 295C Greg and Friends
BFS+DP.dp[i][j][0]表示有i个50kg,j个100kg的人在左岸,dp[i][j][1]表示有i个50kg,j个100kg的人在右岸.用BFS求最短路的时候记录到达该状态的可能情况. ...
- 题解 AT2390 【Games on DAG】
题目大意 给出一个n个点m条边的DAG,记为G. 可以删掉若干条边成为G′,显然有 2m 种不同的G′. 连边保证:若有 (xi →yi) 边,则 xi < yi . 初始点1和点2有一个标 ...
- 做题记录 To 2019.2.13
2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变 ...
随机推荐
- cmake添加版本号
vVersion.cmake文件内容如下: #vversion.cmake #vDateTime string(TIMESTAMP vDateTime "%Y%m%d-%H%M%S" ...
- Xcode自动注释插件:VVDocumenter-Xcode
VVDocumenter-Xcode 是由 @onevcat 喵神开发的一个Xcode插件,其作用是在Xcode中输入"///"后自动生成规范的文档注释,的确非常好用而且实用. G ...
- Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]
您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...
- Windows下如何将一个程序设为开机自启
1.放在 开始-启动(C:\Users\Qi\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)2.修改注册表[HKEY_L ...
- DLL/OCX文件的注册与数据执行保护DEP
注册/反注册dll或ocx文件时,无论是用regsvr32还是DllRegisterServer/DllUnregisterServer,可能会遇到[内存位置访问无效]的问题: 此时把操作系统的数据执 ...
- nodejs一些比较实用的命令
在学习node的时候是从express开始的,在express中有一个generate,如果在机器上面全局的安装了express-generate的话,可以直接实用[express project_n ...
- 详解 Collection集合
(请关注 本人"集合总集篇"博文--<详解 集合框架>) 首先,本人来讲解下 Collection集合的继承体系: Collection集合 的继承体系: Collec ...
- python列表简介
什么是列表?如何使用列表?https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range 列表相关知识: ...
- golang实现并发爬虫三(用队列调度器实现)
欲看此文,必先可先看: golang实现并发爬虫一(单任务版本爬虫功能) gollang实现并发爬虫二(简单调度器) 上文中的用简单的调度器实现了并发爬虫. 并且,也提到了这种并发爬虫的实现可以提高爬 ...
- 深入分析Redis的主从复制机制
一.前言 最近由于疫情影响,时间比较多,所以开始学习之前一直想学,但是却没时间学的Redis.这两天研究了一下Redis的持久化以及主从复制机制,现在已经很晚了,就不多废话了.这篇博客就来谈一谈R ...