SDSC 2018 day2解题报告
10.12考试总结
T1 最近公共祖先
预估得分: 100
实际得分: 20
最大得分: 100
用时:1小时10分 ~1小时20分
一看题目就知道肯定是找规律题
20pts:
就是直接暴力求lca,很简单
100pts:
以下是打的表:
2
22
142
734
3390
14718
61694
253438
1029118
用excel生成一下函数图像可以看出,是一个指数函数?

卧槽,昨天刚刚看了这东西,爽,这种东东一般都是x^y的加减形式
开始硬凑
由前三项可以看出x应该与2有关系,否则不好凑出2来,所以x取2
2的幂次
2^0 1
2^1 2
2^2 4
2^3 8
2^4 16
2^5 32
2^6 64
2^7 128
#include<bits/stdc++.h>
#define int long long int
using namespace std;
const int mod=1e9+7;
int n;
int ksm(int a,int b) {
	int res=1;
	while(b) {
		if(b&1) res=(res*a)%mod;
		a=(a*a)%mod;
		b>>=1;
	}
	return res;
}
signed main() {
// freopen("commonants.in","r",stdin);
//	freopen("commonants.out","w",stdout);
	cin>>n;
	if(n<=9) {
		if(n==1) {
			cout<<2;
			return 0;
		}
		if(n==2) {
			cout<<22;
			return 0;
		}
		if(n==3) {
			cout<<142;
			return 0;
		}
		if(n==4) {
			cout<<734;
			return 0;
		}
		if(n==5) {
			cout<<3390;
			return 0;
		}
		if(n==6) {
			cout<<14718;
			return 0;
		}
		if(n==7) {
			cout<<61694;
			return 0;
		}
		if(n==8) {
			cout<<253438;
			return 0;
		}
		if(n==9) {
			cout<<1029118;
			return 0;
		}
		//n==10 忘记打表了
	}
	int ans=(ksm(2,2*n+2)-(((4*n)%mod+2)*(ksm(2,n)%mod))-2+mod)%mod;
	while(ans<0)
	{
		ans+=mod;
	}
	ans=(ans+mod)%mod;
	cout<<ans%mod;;
	return 0;
}
错误原因
取模翻车,模出负数来了
应该是
(ans%mod+ans)%mod
T2 即时战略
预估得分:40
实际得分: 40
最大得分:  40
用时: 大约40分钟
10pts:
傻逼部分,差点忘了打上这部分的分,哦我真是傻逼
40pts
直接暴力统计,暴力计算
复杂度:O(n^4)
100pts
感觉上每个点的最大值,和最小值应该和他附近的点有关
感觉可以dp,如果有空再来搞
#include<bits/stdc++.h>
//#define int long long int
using namespace std;
const int N=444;
int w[N][N],n,h,p,ans;
int ans_max=0,ans_min=2147483647;
int d[N][N];//受损程度
#define fre
int main() {
	#ifdef fre
	freopen("rts.in","r",stdin);
	freopen("r1.out","w",stdout);
	#endif
	cin>>n>>h>>p;
	if(p==1) {
	//10pts
		for(int i=1; i<=n; ++i)
			for(int j=1; j<=h; ++j) {
				scanf("%d",&w[i][j]);
				ans_max=max(w[i][j],ans_max);
				ans_min=min(w[i][j],ans_min);
			}
		cout<<ans_min<<' '<<ans_max;
		return 0;
	}
	//30pts
	for(int i=1; i<=n; ++i)
		for(int j=1; j<=h; ++j)
			scanf("%d",&w[i][j]);
	for(int i=1; i<=n; ++i) { //枚举投弹点的横坐标
		for(int j=1; j<=h; ++j) { //枚举投弹点的纵坐标
			ans=0;
			for(int k=1; k<=n; ++k) {
				for(int l=1; l<=h; ++l) {
					d[k][l]=0;
					int tmp=abs(i-k)+abs(j-l);
					d[k][l]=max(0,p-tmp);
					ans+=d[k][l]*w[k][l];
				}
			}
			if(ans>ans_max) ans_max=ans;
			if(ans<ans_min) ans_min=ans;
		}
	}
	cout<<ans_min<<' '<<ans_max;
	#ifndef fre
	fclose(stdin);
	fclose(stdout);
	#endif
	return 0;
}
T3 欧皇
预估得分:25
实际得分:25
最大得分: 	40
用时:大约1小时多一点
10pts
w*h<=2 傻逼部分分,手玩就ok
可是我太菜了。不想手玩,于是就去搞搞其他部分分
25pts
w*h<=8
暴力枚举每个棋子放在那个格子里
卧槽翻车了.....看错时间
40pts
c1 一共就一颜色的棋子
可见就是要从ai个棋子里跳出一部分来放到wh的棋盘上,我们可以反过来搞
让wh的棋盘放ai个棋子有多少种方案,卧槽,这不是组合数嘛!!
C{nm,ai}i1
(⊙o⊙)…组合数怎么求来着.........一个悲惨的故事开始了....
55pts
ai==1 每种颜色的棋子都只有1个
卧槽这不是排列嘛!!!!
(⊙o⊙)…排列怎么求来着.........又一个悲惨的故事开始了....
等等好像不是,卧槽我不会这一档
100pts
卧槽我不会求排列和组合,部分分搞不到了,那就只能去搞搞正解了
没有特殊的限制.....应该去看看题目有什么特殊的性质或者是要求
两种方案不同当且仅当存在一个格子在两种方案中一种放
棋子一种不放棋子或放的棋子不一样
考虑20pts的做法
枚举每个棋子的情况 .仔细观察数据范围可以看出w,h的范围非常小<=30
所以可以直接当做状态来用
用dp[x][i][j]表示x这种棋子放在i,j格子是的合法情况
算了,不搞了,不会 ,不过sjp大佬肯定会!
#include<bits/stdc++.h>
#define int long long int
using namespace std;
const int mod=1e9+7;
const int N=2019;
int w,h,c;
int a[N],flag;
int C[N][N],visit[N][N];
int askC(int n,int k) {
	if(visit[n][k]) return C[n][k];
	if(k>n)return 0;
	if(n==k||k==0) return 1;
	visit[n][k]=1;
	return C[n][k]=(askC(n-1,k-1)+askC(n-1,k))%mod;
}
int pts2() {
	return askC(w*h,a[1]);
}
signed main() {
	freopen("europe.in","r",stdin);
	freopen("europe.out","w",stdout);
	cin>>w>>h>>c;
	for(int i=1; i<=c; ++i) {
		cin>>a[i];
		if(a[i]!=1) flag=1;
	}
	if(c==1) {//第2档分
		cout<<pts2()%mod;
		return 0;
	}
	if(w*h<=2) {//第1档分
		if(!a[1]||!a[2]) {
			cout<<3<<endl;
			return 0;
		} else {
			cout<<0<<endl;
			return 0;
		}
	}
	if(flag==0) { //第3档分~~~想错了咕咕咕。,不是排列
		while(1) {
			break;
		}
		cout<<rand()<<15+rand()<<15%mod;
		return 0;
	}
	cout<<rand()<<15+rand()<<15%mod;
	return 0;
}
												
											SDSC 2018 day2解题报告的更多相关文章
- GX/GZOI2019 day2 解题报告
		
GX/GZOI2019 day2 解题报告 题目链接 逼死强迫症 旅行者 旧词 t1 逼死强迫症 显然地,记 \(f(i)\) 为长度为 \(i\) 的木板的答案,可得: \(\\\) \[f(i)= ...
 - 【NOIP2015】提高day2解题报告
		
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
 - 【未完成0.0】Noip2012提高组day2 解题报告
		
第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...
 - NOIp2016 Day1&Day2 解题报告
		
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
 - 常州培训 day2 解题报告
		
第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大 ...
 - NOIP2018提高组Day2 解题报告
		
前言 关于\(NOIP2018\),详见此博客:NOIP2018学军中学游记(11.09~11.11). \(Day2\)的题目和\(Day1\)比起来,真的是难了很多啊. \(T1\):旅行(点此看 ...
 - NOIP 2018 D1 解题报告(Day_1)
		
总分 205分 T1 100分 T2 95分 T3 10分 T1: 题目描述 春春是一名道路工程师,负责铺设一条长度为 nn 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 ...
 - CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告
		
T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...
 - noip2011提高组day1+day2解题报告
		
Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003 [题目分析] 全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最 ...
 
随机推荐
- 网络基础-------------给电脑设置IP
			
ip 是每一台电脑进入互联网的一个必备钥匙,没有它就不能体会冲浪的乐趣,当我们使用电脑连接无线时我们就会被自动分配一个ip地址(DHCP),这样我们就可以凭借这个IPV4地址来进行冲浪了,但是自动分配 ...
 - linux中断子系统
			
参考引用:http://www.wowotech.net/sort/irq_subsystem wowotech:一个很好的linux技术博客. 一.概述 目的 kernel管理硬件设备的方式:轮询. ...
 - Centos 7.5  安装JDK
			
#wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com ...
 - 【CF285E】Positions in Permutations(动态规划,容斥)
			
[CF285E]Positions in Permutations(动态规划,容斥) 题面 CF 洛谷 题解 首先发现恰好很不好算,所以转成至少,这样子只需要确定完一部分数之后剩下随意补. 然后套一个 ...
 - NIO ByteBuffer的allocate与allocateDirect区别(HeapByteBuffer与DirectByteBuffer的区别)
			
在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类. ByteBuffer提供了两种静态实例方式: public stat ...
 - ASP.NET MVC 过滤、异常过滤器
			
记录下过滤器的学习—_— APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前后如果想再加一些额外的逻辑处理,这样会造成大量代码的重复使用,这不是我们希 ...
 - 2019 vs 如何升级到.net core 3.0 版本
			
写在前面 看到微软的官网都已经更新.NET CORE 3.0的版本了.发现自己的还是.NET CORE 2.1X 的版本. 那应该如果升级到.NET CORE 3.0 的版本呢? 思考 [1]首先,我 ...
 - AspNet Core结合Quartz使用定时任务且通过注入缓存或者配置参数
			
一.经常在项目会用到定时任务同步数据或更新缓存等操作,在很久以前我们可能经常会用一个多线程或timer来做定时任务,这样能实现比较简单轻量级的任务:对于任务多且都调用频率不一样的任务,我们都会用到Qu ...
 - SQL 自动生成序号
			
查询出来的数据的编号,不是按照从1开始的有序进行的,界面上显示想显示有序排序 select RANK() OVER(ORDER BY id ) as ID ,* from reconcilet_det ...
 - php-fpm解读-进程管理的三种模式
			
php-fpm进程管理一共有三种模式:ondemand.static.dynamic,我们可以在同一个fpm的master配置三种模式,看下图1.php-fpm的工作模式和nginx类似,都是一个ma ...