Codeforces Round #263 (Div. 2)
吐槽:一辈子要在DIV 2混了。
A,B,C都是简单题,看AC人数就知道了。
A:如果我们定义数组为N*N的话就不用考虑边界了
#include<iostream>
#include <string>
#include <vector>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f
#define N 12345
typedef long long ll;
int a[N];
char s[][];
int main()
{
int n;
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%s",s[i]+); int flag=;
for (int i=;i<=n;i++)
for (int j=;j<=n;j++){
int ans=;
if (s[i-][j]=='o') ans++;
if (s[i][j-]=='o') ans++;
if (s[i][j+]=='o') ans++;
if (s[i+][j]=='o') ans++;
if (ans&) {flag=;break;}
} if (flag) printf("YES");
else printf("NO");
return ;
}
B:语文实在...。。
可以是贪心。。。
只要对26个字母排序
233
#include<iostream>
#include <string>
#include <vector>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f
#define N 123456
typedef long long ll;
ll a[N];
string s;
int main()
{
int n;
ll k;
cin>>n>>k;
cin>>s;
for (int i=;i<s.size();i++)
a[s[i]-'A']++;
sort(a,a+);
ll ans=;
for (int i=;i>=;i--)
{
if (k>=a[i]) {ans+=a[i]*a[i];k-=a[i];
}
else {ans+=k*k;break;}
}
cout<<ans<<endl;
return ;
}
这题也是贪心做法。。
因为我们要加的数的个数是一定的。。。
如果排序好,尽量加大的,就OK了。。所以每次我们把最小的踢出去。
就可以算出每个数要加多少。
#include<iostream>
#include <string>
#include <vector>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
#define inf 0x3f3f3f
#define N 323456
typedef long long ll;
ll a[N];
string s;
int main()
{
int n;
cin>>n;
for (int i=;i<=n;i++)cin>>a[i];
ll ans=;
sort(a+,a+n+);
for (int i=;i<n;i++)
ans+=a[i]*(i+);
ans+=a[n]*n;
cout<<ans;
return ;
}
D:练了不少树形DP了,但是这题完全没思路。真是渣一辈子DIV 2。
思路:定义DP[I][1]表示以I为根的数中有BLACK节点
DP[I][0]表示没有BLACK节点。。
转移方程
U是ROOT的子节点
初始:DP[ROOT][COLOR[ROOT]]=1;
DP[ROOT][1]=DP[ROOT][1]*DP[U][1]+DP[ROOT][0]*DP[U][1]+DP[ROOT][1]*DP[U][0];
DP[ROOT][0]=DP[ROOT][0]*DP[U][0]+DP[ROOT][0]*DP[U][1];
#include<iostream>
#include <string>
#include <vector>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define N 112345
#define inf 1000000007
typedef long long ll;
using namespace std;
vector<int>G[N];
ll dp[N][];
int col[N];
int n; void dfs(int root,int pre)
{
dp[root][col[root]]=;
for (int i=;i<G[root].size();i++)
{
int x=G[root][i];
if (x==pre) continue;
dfs(x,root);
dp[root][]=(dp[root][]*dp[x][]%inf+dp[root][]*dp[x][]+dp[root][]*dp[x][])%inf;
dp[root][]=(dp[root][]*dp[x][]%inf+dp[root][]*dp[x][]%inf)%inf;
}
} int main()
{
scanf("%d",&n);
for (int i=;i<n;i++)
{
int x;
scanf("%d",&x);
G[i].push_back(x);
G[x].push_back(i);
}
for (int i=;i<n;i++)
scanf("%d",&col[i]);
dfs(,-);
printf("%d\n",dp[][]);
return ;
}
后记:
树形DP比较抽象。。。多做题才能提高
Codeforces Round #263 (Div. 2)的更多相关文章
- 贪心 Codeforces Round #263 (Div. 2) C. Appleman and Toastman
题目传送门 /* 贪心:每次把一个丢掉,选择最小的.累加求和,重复n-1次 */ /************************************************ Author :R ...
- Codeforces Round #263 (Div. 1)
B 树形dp 组合的思想. Z队长的思路. dp[i][1]表示以i为跟结点的子树向上贡献1个的方案,dp[i][0]表示以i为跟结点的子树向上贡献0个的方案. 如果当前为叶子节点,dp[i][0] ...
- Codeforces Round #263 Div.1 B Appleman and Tree --树形DP【转】
题意:给了一棵树以及每个节点的颜色,1代表黑,0代表白,求将这棵树拆成k棵树,使得每棵树恰好有一个黑色节点的方法数 解法:树形DP问题.定义: dp[u][0]表示以u为根的子树对父亲的贡献为0 dp ...
- Codeforces Round #263 (Div. 2) D. Appleman and Tree(树形DP)
题目链接 D. Appleman and Tree time limit per test :2 seconds memory limit per test: 256 megabytes input ...
- Codeforces Round #263 (Div. 2) A B C
题目链接 A. Appleman and Easy Task time limit per test:2 secondsmemory limit per test:256 megabytesinput ...
- Codeforces Round #263 (Div. 1) C. Appleman and a Sheet of Paper 树状数组暴力更新
C. Appleman and a Sheet of Paper Appleman has a very big sheet of paper. This sheet has a form of ...
- Codeforces Round #263 (Div. 2) proC
题目: C. Appleman and Toastman time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #263 (Div. 2)C(贪心,联想到huffman算法)
数学家伯利亚在<怎样解题>里说过的解题步骤第二步就是迅速想到与该题有关的原型题.(积累的重要性!) 对于这道题,可以发现其实和huffman算法的思想很相似(可能出题人就是照着改编的).当 ...
- Codeforces Round #263 (Div. 2) proB
题目: B. Appleman and Card Game time limit per test 1 second memory limit per test 256 megabytes input ...
随机推荐
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- 西门子SIMATIC IT平台
西门子公司的SIMATIC IT平台基于ANSI/ISA S95标准开发,包含的功能组件覆盖了ISA S95规定的生产业务操作模型,同时也满足MESA所确定的MES系统11项功能要求. SIMATIC ...
- 数据结构学习笔记05图(最小生成树 Prim Kruskal)
最小生成树Minimum Spanning Tree 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 树: 无回路 |V|个顶 ...
- 开始认真学计算机网络----computer network学习笔记(一)
什么是计算机网络,就是连一堆计算机,计算机不单单指pc,还包括打印机啦,手机啦巴拉巴拉一堆 为什么要连,share data共享数据 数据? 文档,图片,视频,巴拉巴拉 网络有什么类型? LAN--- ...
- hdu 1195 Open the Lock
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1195 Open the Lock Description Now an emergent task f ...
- SQL Server 2008 表变量参数(表值参数)用法
表值参数是 SQL Server 2008 中的新参数类型.表值参数是使用用户定义的表类型来声明的.使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程 ...
- 使用angular封装echarts
Echarts是一个开源的图表组件,图表比较丰富,工作中需要用到它来搭建一个数据展示系统.但是系统原有的框架是基于angular的,而echarts是基于原生js的,如果直接使用的话就丢失了angul ...
- 10个 iOS 用户暂可以嘲笑 Android 的特点
Android 与 iOS 设备之间的争斗从未停止,毕竟一切高科技产品的理念和实际表现方式都不相同.就拿 Android 来说,很多功能令用户并 不太开心,甚至是令人愤怒,下面让我们来简单的盘点 10 ...
- [转]ldconfig几个需要注意的地方
[转]ldconfig几个需要注意的地方 http://www.cnblogs.com/arci/archive/2011/03/19/1988952.html 1. 往/lib和/usr/lib里面 ...
- 60.ISE PhysDesignRules ERROR
PhysDesignRules:2100 - Issue with pin connections and/or configuration on block:<U_ila_pro_0/U0/I ...