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 ...
随机推荐
- C#程序双击运行之后,界面不显示,但是在任务管理器有进程(一个winform找bug之旅)
最近客户端又出了奇葩事情:http://q.cnblogs.com/q/43038/ 如这篇博问一样.我的一个客户的电脑上程序打开了,进程也有了,就是界面窗体出不来!!! 我是win7是开发机,三四台 ...
- 009-python基础-数据类型-列表和元组
一.列表 在python中叫"列表",其他语言中成为"数组" 元素中可以存储字符串.数字甚至变量. 元素索引顺序从0开始. 例如 name_list[0] 就是 ...
- [转]从普通DLL中导出C++类 – dllexport和dllimport的使用方法(中英对照、附注解)
这几天写几个小程序练手,在准备将一个类导出时,发现还真不知道如果不用MFC的扩展DLL,是怎么导出的.但我知道dllexport可以导出函数和变量,而且MFC扩展DLL就算是使用了MFC的功能,但 ...
- MAC 重置MySQL root 密码
重置MySQL root 密码:当忘记密码,或者想要强行重置 MySQL 密码的时候,可以像下面这样: 1.停止 MySQL 服务 sudo /usr/local/mysql/support-file ...
- 如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统
不久之前,微软公司宣布了 Microsoft Azure Media Services 实时直播服务 ( Live ) 开始进入技术预览阶段,公开接受用户测试. 而这些实时直播服务其实早已被 NBC ...
- python: 命令选项及归类
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresp ...
- 28335 sci fifo send
#include "DSP2833x_Device.h"#include "DSP2833x_Examples.h"char buf[]={0x30,0x32, ...
- iOS 进阶 第十四天(0416)
0416 注意调用关系,如下图: 就是initWithCoder:.initWithFrame.setup方法三元组
- UISegmentedControl swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- 骇客(Hacker)用语
什么是TCP/IP 是一种网络通信协议,他规范了网络上所有的通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.,TCP/IP是INTERNET的基础 ...