2015上海邀请赛

这次上海邀请赛差一点就能拿到牌子了,好可惜。。。。。

Game回来写了下,刚开始把重链写成了最大权子树,无限WA,然后一直在调。。。。。

发现我一旦提交上去错了就始终在找程序BUG,从来没想过是不是思路哪里错掉了。。。。其实这种交上去WA之后应该先去找思路上的错误,而不是怀疑题目有陷阱什么的。。。

#include<stdio.h>
#include<string.h>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<math.h>
using namespace std;
#define out(x) cout<<#x<<": "<<x<<endl
const double eps(1e-8);
const int maxn=100100;
const long long inf=-1u>>1;
typedef long long ll;
struct Edge{
	int v,next;
}edge[maxn<<1];
int n,tot,k,cnt;
int head[maxn];
ll a[maxn],sum[maxn],p[maxn],num[maxn];
ll ans;
void addedge(int u,int v){
	edge[tot].v=v;
	edge[tot].next=head[u];
	head[u]=tot++;
}
void dfs1(int u){
	int post=edge[head[u]].v;
	sum[u]=a[u];
	for(int i=head[u];i!=-1;i=edge[i].next){
		int v=edge[i].v;
		dfs1(v);
		if(sum[v]>sum[post]) post=v;
		//sum[u]+=sum[v];
	}
	if(head[u]!=-1) sum[u]+=sum[post];
}
void dfs2(int u){

	int post=edge[head[u]].v;
	if(num[u]==0){
		p[cnt++]=a[u];
	}
	else{
		for(int i=head[u];i!=-1;i=edge[i].next){
			int v=edge[i].v;
			if(sum[v]>=sum[post]) {
				post=v;
			}
		}
		a[post]+=a[u];
		for(int i=head[u];i!=-1;i=edge[i].next){
			int v=edge[i].v;
			dfs2(v);
		}
	}
}
void init() {
	memset(head,-1,sizeof(head));
	memset(num,0,sizeof(num));
	memset(p,0,sizeof(p));
	memset(sum,0,sizeof(sum));
	scanf("%d%d",&n,&k);
	tot=0;
	cnt=0;
	int u,v;
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	for(int i=2;i<=n;i++) {
		scanf("%d%d",&u,&v);
		num[u]++;
		addedge(u,v);
	}
}
void work() {
	dfs1(1);
	dfs2(1);
	sort(p,p+cnt);
	ans=0;
	for(int i=1;i<=k&&cnt-i>=0;i++){
		ans+=p[cnt-i];
	}
	//printf("%lld\n",ans);
}

int main() {
	#ifndef ONLINE_JUDGE
	freopen("in.txt","r",stdin);
	#endif
	int t,cas=1;
	scanf("%d",&t);
	while(t--){
		init();

		work();
		printf("Case #%d: %lld\n",cas++,ans);
	}
	return 0;
}

friends:

这道题知道结论了就好简单。。。。

先单独考虑一门语言的情况,假设其有k种可能,则两门语言的时候则是k*k种语言,依次类推。。。。

像这种数学题其实都应该先从简单的数据去想,只有先找到简单数据的做法,再试着根据简单的数据推至复杂的数据,或者从简单的数据里找规律

高精度加快速幂一下。。

#include<stdio.h>
#include<string.h>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<math.h>
using namespace std;
#define out(x) cout<<#x<<": "<<x<<endl
const double eps(1e-8);
const int maxn=10100;
const long long inf=-1u>>1;
typedef long long ll;
int n;
struct BigInt{
	const static int mod=10000;
	const static int DLEN=4;
	int a[6000],len;
	BigInt(){
		memset(a,0,sizeof(a));
		len=1;
	}
	BigInt(int v){
		memset(a,0,sizeof(a));
		len=0;
		do{
			a[len++]=v%mod;
			v/=mod;
		}while(v);
	}
	BigInt operator +(BigInt &b){
		BigInt res;
		res.len=max(len,b.len);
		for(int i=0;i<=res.len;i++) res.a[i]=0;
		for(int i=0;i<res.len;i++){
			res.a[i]+=((i<len)?a[i]:0)+((i<b.len)?b.a[i]:0);
			res.a[i+1]+=res.a[i]/mod;
			res.a[i]%=mod;
		}
		if(res.a[res.len]>0) res.len++;
		return res;
	}
	BigInt operator *(BigInt b){
		BigInt res;
		for(int i=0;i<len;i++){
			int up=0;
			for(int j=0;j<b.len;j++){
				int tmp;
				tmp=a[i]*b.a[j]+res.a[i+j]+up;
				up=tmp/mod;
				res.a[i+j]=tmp%mod;
			}
			if(up!=0){
				res.a[i+b.len]=up;
			}
		}
		res.len=len+b.len;
		while(res.a[res.len-1]==0&&res.len>1) res.len--;
		return res;
	}
	void output(){
		printf("%d",a[len-1]);
		for(int i=len-2;i>=0;i--){
			printf("%04d",a[i]);
		}
		printf("\n");
	}
};
void init() {
	scanf("%d",&n);
}

int main() {
	#ifndef ONLINE_JUDGE
	//freopen("in.txt","r",stdin);
	#endif
	int t,cas=1;
	scanf("%d",&t);
	while(t--){
		init();
		BigInt ans=BigInt(1),b=BigInt(32);
		while(n){
			if(n&1) ans=ans*b;
			b=b*b;
			n>>=1;
		}
		printf("Case #%d: ",cas++);
		ans.output();
	}

	return 0;
}
时间: 2024-09-30 19:16:06

2015上海邀请赛的相关文章

[java线段树]2015上海邀请赛 D Doom

题意:n个数 m个询问 每个询问[l, r]的和, 再把[l, r]之间所有的数变为平方(模为9223372034707292160LL) 很明显的线段树 看到这个模(LLONG_MAX为9223372036854775807) 很明显平方时会爆LL 很容易发现所有数平方模了几次之后值就不再改变了 而且这个“几次”相当小 因此直接暴力搞就好了 public static void main(String[] args) { Scanner in = new Scanner(System.in);

[java]2015上海邀请赛 B Base64

题意: 给n和一个字符串(可以有空格) 求字符串编码n次后的字符串 编码方式:字符串的每个字符转化成ASCII码, ASCII码转化成8位2进制,    将二进制数分割成6位为一组的(不够的补0), 再变成十进制数 依次按照以下方式变成字母 转化成字母后, 若长度不是4的整数倍, 在字符串后面补= 举个例子, The的ASCII码分别为84,104,101 转成8位2进制为01010100,01101000,01100101 分割成6位的为010101,000110,100001,100101

HDU 5242 GAME 2015上海邀请赛G题

题目链接:hdu 5242 题意:给定一颗以1号节点为根节点的有向树,每个节点有一个权值,问从1号节点出发k次,能到达的所有节点的和的最大值. 思路:贪心的把树的链按照权值和从大到小剖分成若干条链(过程可以根据上交书上的熟练剖分模版做细小改动),然后根据每条链的权值排序取最大的k个就是答案. 代码: #include <cstdio> #include <cmath> #include <iostream> #include <cstring> #inclu

上海邀请赛之热身赛2_2013成都邀请赛

先写总结. 感觉这次跟scf和sjc组队有种瞬间碉堡了的感觉,虽然是临时组建的队伍凑齐准备去上海参加邀请赛,从这次比赛磨练配合. 今天比赛难度比前天那次的难度低,感觉更适合我们来练习. 话说好像比赛提早了5分钟,我们三个人都不知道,五分钟后一看A题学长已经A了,一想肯定特水...我就没看题,sjc和scf两个看了题,scf就开始敲了,我刚开始负责翻译题,虽然我英语是个渣渣...没办法,没翻译他们几乎做不出题...我就没做题,翻译了B和G.scf敲了貌似好久才完成(赛后重做,特水,基本3分钟就可以

[POI 2001+2014acm上海邀请赛]Gold Mine/Beam Cannon 线段树+扫描线

Description Byteman, one of the most deserving employee of The Goldmine of Byteland, is about to retire by the end of the year. The Goldmine management would like to reward him in acknowledgment of his conscientious work. As a reward Byteman may rece

A Computer Graphics Problem 4176 2013上海邀请赛

A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 968    Accepted Submission(s): 688 Problem Description In this problem we talk about the study of Computer Graphics.

2015全国邀请赛--上海大都会赛

第一次参加的正式比赛,61名```是的,60是银,61就是铜了.弱就不能怪服务器,就算手速再快一点罚时挤进银也没用,仍然没有实力拿银. 这场比赛我仍然是从后往前看题,J本来是个水题,但是我不确定就没有细想,这是我们罚时落后的重大原因.然后刻盘说F水,E也有人过了,接着凯神和刻盘讨论之后敲E,我出了几组E的数据之后和刻盘想F,刻盘想出大体思路的时候我还不是很有头绪.凯神A掉E之后说C有印象,然后我看C他开始敲,敲完测了一发数据交了T了.此时刻盘想出F,刻盘敲,凯神准备优化C,我看B.此前大约整整一

HDU 5093Battle ships(2014上海邀请赛)

题目: Battle ships Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 477    Accepted Submission(s): 197 Problem Description Dear contestant, now you are an excellent navy commander, who is responsi

HDOJ Page Rank 5097【2014上海邀请赛H题-简单矩阵】

Page Rank Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others) Total Submission(s): 282    Accepted Submission(s): 77 Problem Description Evaluation and rank of web pages is a hot topic for many internet companies and