Codeforces Round #263 (Div. 2)
来源:互联网 发布:淘宝店铺被恶意举报 编辑:程序博客网 时间:2024/05/29 02:38
好久没写题解了。。。。。。
A.水题
直接搞
B.排序一下直接算.....
不过要注意用long long
当时搞了个大数据 hack了一发
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;char s[100100];__int64 N, K;__int64 num[30];int main(){ scanf( "%I64d%I64d", &N, &K ); scanf( "%s", s ); memset( num, 0, sizeof( num ) ); for( int i = 0; i < N; i++ ){ num[s[i]-'A']++; } sort( num, num + 26 ); __int64 ans = 0; for( int i = 25; i >= 0; i-- ){ if( num[i] >= K ){ ans += K * K; break; }else{ ans += num[i] * num[i]; K -= num[i]; } } printf( "%I64d\n", ans ); return 0;}
C.排序一下,然后每次分开最小的一个,这样能够使大的尽可能多次的被加
哈哈 当时也搞了个大数据hack了一个没用long long的
233333333
AC代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;__int64 N, num[400000];__int64 ans;int main(){ scanf( "%I64d", &N ); for( int i = 1; i <= N; i++ ){ scanf( "%I64d", &num[i] ); } if( N == 1 ){ ans = num[1]; }else{ sort( num + 1, num + 1 + N ); for( int i = N - 1; i >= 1; i-- ){ num[i] += num[i+1]; } ans = num[1]; for( int i = 1; i < N; i++ ){ ans += num[i]; } } printf( "%I64d\n", ans ); return 0;}
D.树形DP
dp【i】【0】表示以i为根的子树没有1的种类数
dp【i】【1】表示以i为根的子树有1的种类数
树dp实在是太弱了,当时半小时写了前三题,还有一个半小时不敢做这题......T_T.....哎.....还是蒟蒻
AC代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const __int64 MOD = 1e9 + 7;struct Edge{ int to, next;};int N;Edge edge[4*100000+10];int head[100000+5], tot;int col[100000+5];__int64 dp[100000+5][2];bool mark[100000+5];void add_edge( int a, int b ){ edge[tot].to = b; edge[tot].next = head[a]; head[a] = tot++; edge[tot].to = a; edge[tot].next = head[b]; head[b] = tot++;}void DFS( int pos ){ dp[pos][col[pos]] = 1; mark[pos] = true; for( int i = head[pos]; i != -1; i = edge[i].next ){ int to = edge[i].to; if( mark[to] ) continue; DFS( to ); dp[pos][1] = ( dp[pos][1] * ( dp[to][0] + dp[to][1] ) % MOD + dp[pos][0] * dp[to][1] % MOD ) % MOD; // int t = dp[pos][1]; dp[pos][0] = dp[pos][0] * ( dp[to][0] + dp[to][1] ) % MOD; // int t1 = dp[pos][0]; }}int main(){ scanf( "%d", &N ); tot = 0; memset( head, -1, sizeof( head ) ); for( int i = 1; i < N; i++ ){ int temp; scanf( "%d", &temp ); add_edge( i, temp ); } for( int i = 0; i < N; i++ ){ scanf( "%d", &col[i] ); } memset( dp, 0, sizeof( dp ) ); memset( mark, false, sizeof( mark ) ); DFS( 0 ); printf( "%I64d\n", dp[0][1] ); return 0;}
0 0
- Codeforces Round #263 (Div. 2)
- Codeforces Round#263(Div.2)
- Codeforces Round #263 (Div. 2)
- Codeforces Round #263 (Div. 2)
- Codeforces Round #263 (Div. 2)
- Codeforces Round #263 (Div. 2) proA
- Codeforces Round #263 (Div. 2) proB
- Codeforces Round #263 (Div. 2) proC
- Codeforces Round #263 (Div. 2) A-D
- Codeforces Round #263 (Div. 2) D
- Codeforces Round #263 (Div. 2) E
- 【索引】Codeforces Round #263 (Div. 2)
- Codeforces Round #263 (Div. 1)
- Codeforces Round #263 (Div. 1)
- Codeforces Round #102 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #103 (Div. 2)
- Codeforces Round #104 (Div. 2)
- linux\uinux
- ccsprite使用setTexure,解决动作中同精灵换图变形问题
- java socket多线程使用-整理篇
- 斐波那契查找
- 简介(二)
- Codeforces Round #263 (Div. 2)
- JAVA编程思想-第一章 对象导论
- linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义
- Java方法的可变参数个数
- 浅析Java web程序之客户端和服务器端交互原理
- Logback和Logstash的集成
- 虚继承和虚函数继承
- 如何在Cocos2d-x中集成安卓版微信SDK
- linux kernel测试初探(转)