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 ...
随机推荐
- 【转】代码编辑器(一)-TSynCompletionProposal用法
注意,本系列均转载自http://blog.163.com/zom1995@126/ 网上有人给我一个SynEdit这个东西,因为我很喜欢自己编个代码编辑器,但要是用Delphi直接弄的,就我现在这样 ...
- WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测
近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. ...
- DBGridEh 点击表头排序方法
方法1: (不用编程写代码) 程序中引用 单元 EhLibCDS设置DBGridEh的属性: ColumnDefValues.Title.TitleButton = True Op ...
- async/await的实质理解
async/await关键字能帮助开发者更容易地编写异步代码.但不少开发者对于这两个关键字的使用比较困惑,不知道该怎么使用.本文就async/await的实质作简单描述,以便大家能更清楚理解. 一.a ...
- python SocketServer 源码分析
附上原文链接: http://beginman.cn/python/2015/04/06/python-SocketServer/
- 实战Django:简易博客Part1
舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...
- 9 本免费的 Python 语言编程书籍(转载)
9 本免费的 Python 语言编程书籍 原文地址:http://linuxtoy.org/archives/9-free-python-books.html 2010-03-03 Toy Poste ...
- [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(四)
八.HA环境下配置多节点的sshVIP(s1):[root@s1 ~]# mkdir /opt/PostgresPlus/9.2AS/.ssh[root@s1 ~]# chown enterprise ...
- Android--启动拍照功能并返回结果
因为没有深入学习拍照这块功能,所以只是简单的调用了一下系统的拍照功能,下面代码: //拍照的方法 private void openTakePhoto(){ /** * 在启动拍照之前最好先判断一下s ...
- JavaScript高级程序设计之Date类型
ECMAScript 中的 Date 类型是在早期 Java 的 java.util.Date 类基础上构建的. Date 类型使用自 UTC (国际协调时间)1970年1月1日午夜(零时)开始经过的 ...