EXAM-2018-8-9

B

水题 注意理解题意 有坑

G

博弈 观察发现 总是会进行到最后两个,或者先手取完全部,再特判一下只有一张牌的情况

H

九连环 通过找规律 我们可以得出递推式:

F[n]=F[n-1]+2*F[n-2]+1

而这个递推式可以通过构造矩阵,然后矩阵快速幂解决:

|F[n-1],F[n-2],1| * A = |F[n],F[n-1],1|

A=
1 1 0
2 0 0
1 0 1

初始矩阵为|2 1 1|

package hgf;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
class InputReader {
BufferedReader buf;
StringTokenizer tok;
InputReader() {
buf = new BufferedReader(new InputStreamReader(System.in));
}
boolean hasNext() {
while (tok == null || !tok.hasMoreElements()) {
try {
tok = new StringTokenizer(buf.readLine());
} catch (Exception e) {
return false;
}
}
return true;
}
String next() {
if (hasNext())
return tok.nextToken();
return null;
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
BigInteger nextBigInteger() {
return new BigInteger(next());
}
BigDecimal nextBigDecimal() {
return new BigDecimal(next());
}
} public class Main {
static InputReader cin=new InputReader();
static PrintWriter cout=new PrintWriter(System.out);
public static void main(String[] args) {
int time,k;
time=cin.nextInt();
BigInteger arr[]=new BigInteger [3];
BigInteger f[][]=new BigInteger [3][3];
for(int z=1;z<=time;z++){
k=cin.nextInt();
if(k==1){
System.out.println(1);
continue;
}
if(k==2){
System.out.println(2);
continue;
}
arr[0]=B(2);arr[1]=B(1);
arr[2]=B(1);
f[0][0]=B(1);f[0][1]=B(1);f[0][2]=B(0);
f[1][0]=B(2);f[1][1]=B(0);f[1][2]=B(0);
f[2][0]=B(1);f[2][1]=B(0);f[2][2]=B(1);
k=k-2;
BigInteger c[]=new BigInteger [3];
BigInteger d[][]=new BigInteger [3][3];
for(;k!=0;k>>=1){
if(k%2==1){
Arrays.fill(c, B(0));
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
c[i] = c[i].add(arr[j].multiply(f[j][i]));
}
}
for(int i = 0; i < 3; i++) { arr[i] = c[i];
} }
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
d[i][j]=B(0);
}
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
for(int p = 0; p < 3; p++) {
d[i][j] = d[i][j].add(f[i][p].multiply(f[p][j])) ;
}
}
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
f[i][j] = d[i][j];
}
}
}
System.out.println(arr[0]); }
cout.close();
}
static BigInteger B(int x) {
return BigInteger.valueOf(x);
} }

BigInteger 申请1e5会超时

M

最讨厌看到有两个因素影响的题.....

题意是有l件衣服,m件洗衣机,n件烘干机,然后每件每次只能工作一件。然后这题是贪心做,最慢洗的配最快烘干的,然后肯定这几个机器是同时工作的,用d[i]维护一下。

单调队列的写法,注意一下。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+7;
const int maxm=1e6+7;
ll l,n,m,w[maxn],d[maxn],t[maxm];
template<class T>
void read(T &res)
{
res = 0;
char c = getchar();
T f = 1;
while(c < '0' || c > '9')
{
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x)
{
if(x < 0)
{
putchar('-');
x = -x;
}
if(x >= 10)
{
out(x / 10);
}
putchar('0' + x % 10);
}
struct node{ll id;ll t;}u,v;
bool operator<(node a,node b){return a.t>b.t;}
priority_queue<node>x,h;
int main()
{
read(l);
read(n);
read(m);
for(int i=1;i<=n;i++){
read(w[i]);
u.id=i;
u.t=w[i];
x.push(u);
}
for(int i=1;i<=m;i++){
read(d[i]);
v.id=i;
v.t=d[i];
h.push(v);
}
for(int i=1;i<=l;i++){
node q=x.top();
x.pop();
t[i]=q.t;
ll ab=q.id;
u.t=q.t+w[ab];
u.id=q.id;
x.push(u);
}
ll ans=0;
for(int i=l;i>=0;i--){
node q=h.top();
h.pop();
t[i]+=q.t;
ll ab=q.id;
v.t=q.t+d[ab];
v.id=q.id;
h.push(v);
ans=max(ans,t[i]);
}
out(ans);
return 0;
}

A

应该要特意总结一下的莫队算法。模板题。先分成sqtr(n)块,然后按块排序,而不是单纯先排左端点再排右端点。然后两个指针跳来跳去的看似暴力却不是暴力的算法。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+10;
ll ans[maxn],ant;
int block,m,n,val[maxn],num[maxn],k;
struct node
{
int l,r,id;
inline bool operator <(node cmp) const {
if(l/block!=cmp.l/block)
return l/block<cmp.l/block;
return r/block<cmp.r/block;
}
}a[maxn];
void init()
{
for(int i=1;i<=n;i++){
scanf("%d",&val[i]);
val[i]^=val[i-1];
}
for(int i=1;i<=m;i++){
scanf("%d %d",&a[i].l,&a[i].r);
a[i].l--;
a[i].id=i;
}
}
inline void add(int i)
{
ant+=num[val[i]^k];
num[val[i]]++;
}
inline void remov(int i)
{
num[val[i]]--;
ant-=num[val[i]^k];
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
block=sqrt(n);
init();
sort(a+1,a+n+1);
ll l=1,r=0;
for(int i=1;i<=m;i++){
while(l>a[i].l){
l--;
add(l);
}
while(l<a[i].l){
remov(l);
l++;
}
while(r>a[i].r){
remov(r);
r--;
}
while(r<a[i].r){
r++;
add(r);
}
ans[a[i].id]=ant;
}
for(int i=1;i<=m;i++)
{
printf("%lld\n",ans[i]);
}
return 0;
}

E

北上广深算法?233333

裸模板题

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
ll g,p,m,a,b,n;
map <ll,ll> mp;
template<class T>
void read(T &res)
{
res = 0;
char c = getchar();
T f = 1;
while(c < '0' || c > '9')
{
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x)
{
if(x < 0)
{
putchar('-');
x = -x;
}
if(x >= 10)
{
out(x / 10);
}
putchar('0' + x % 10);
}
int qpow(ll x,ll k)
{
ll ans=1;
while(k>0)
{
if(k&1)
ans=(ans*x)%p;
x=(x*x)%p;
k>>=1;
}
return ans;
}
ll bsgs(ll x)
{
ll j=0,cnt=1;
for(; j<=m; ++j)
{
if(mp[(cnt*a)%p])
return mp[(cnt*a)%p]-j;
cnt=(cnt*g)%p;
}
return 0;
}
int main()
{
ll i;
read(g);
read(p);
m=ceil(sqrt(p));
ll cnt=qpow(g,m),ans=cnt;
mp[ans]=m;
for(i=2;i<=m;++i)
{
ans=(ans*cnt)%p;
mp[ans]=i*m;
}
read(n);
while(n--)
{
read(a);
read(b);
out(qpow(b,bsgs(a)));
printf("\n");
}
return 0;
}

地址EXAM-2018-8-9

EXAM-2018-8-9的更多相关文章

  1. 2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059

    题意:BaoBao正在进行在线考试(都是选择题),每个题都有唯一的一个正确答案,但是考试系统有m个bug(就是有m个限制),每个bug表示为第u个问题和第v个问题你必须选择相同的选项,题目问你,如果你 ...

  2. CSU 2018年12月月赛 A 2213: Physics Exam

    Description 高中物理老师总认为给学生文本形式的问题比给纯计算形式的问题要求更高.毕竟,学生首先得阅读和理解问题. 因此,他们描述一个问题不像”U=10V,I=5A,P=?”,而是”有一个含 ...

  3. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  4. 20101010 exam

    目录 2018 10.10 exam 解题报告 T1:LOJ #10078 新年好 题目描述(原题来自:CQOI 2005): 输入格式: 输出格式: 样例输入: 样例输出: 数据范围与提示: 思路: ...

  5. 【LeetCode】855. Exam Room 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/exam-roo ...

  6. Linux学习之Exam系统发布

    配置时间:2015年11月27日 配置人:撰写人:微冷的雨   Happy 01.Linux安装图 欢迎页面 桌面 02.Linux命令之文件目录操作 给北大青鸟五道口校区创建三个机房(L4,L5,L ...

  7. 2018. The Debut Album

    http://acm.timus.ru/problem.aspx?space=1&num=2018 真心爱过,怎么能彻底忘掉 题目大意: 长度为n的串,由1和2组成,连续的1不能超过a个,连续 ...

  8. Math.abs(~2018),掌握规律即可!

    Math.abs(~2018) 某前端群的入门问题长姿势了,一个简单的入门问题却引发了我的思考,深深的体会到自己在学习前端技术的同时忽略遗忘了一些计算机的基础知识. 对于 JS Math对象没什么可说 ...

  9. CF534A Exam 构造

    An exam for n students will take place in a long and narrow room, so the students will sit in a line ...

  10. CF Exam (数学)

     Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...

随机推荐

  1. [Qt5] QSlider设置步长

    这是一个小问题,就是QSlider是一个滑动条控件,既然是个滑动条控件,就会想要用鼠标滚轮或者鼠标去移动它来实现某些功能,但是呢,我能说这个控件的一个属性函数设置也是比较奇怪的,它设置步长的函数有 s ...

  2. {转} MJPG流媒体在HTML5的呈现方案

    最近碰到的需求:监控探头视频呈现到html页面上. 视频源协议:HLS; 视频源格式:Motion JPEG 简称 MJPG; 其中Motion JPEG(M-JPEG或MJPEG,Motion Jo ...

  3. dockerfile---apt-get install vim 时 Unable to locate package vim

    在学习 dockerfile 的时候,发现编写的 Dockerfile 中的 apt-get install 命令无法找到要安装的包,所以记录一下这次发生的错误. 环境:宿主机:windows 10 ...

  4. 【One by one系列】一步步学习TypeScript

    TypeScript Quick Start 1.TypeScript是什么? TypeScript是ES6的超集. TS>ES7>ES6>ES5 Vue3.0已经宣布要支持ts,至 ...

  5. CentOS系统安装过程中配置软RAID-0或RAID-1

    什么是RAID-0 RAID-0 (等量模式, stripe):效能最佳.这种模式如果使用相同型号与容量的磁碟来组成时,效果较佳.这种模式的 RAID 会将磁碟先切出等量的区块 (举例来说, 4KB) ...

  6. linux目录和安装目录学习

    我一般会在/opt目录下创建 一个software目录,用来存放我们从官网下载的软件格式是.tar.gz文件,或者通过 wget+地址下载的.tar.gz文件 执行解压缩命令,这里以nginx举例 t ...

  7. 89.QuerySet API常用方法使用详解:count,first,last,aggregate,exists

    1.count():计算数据的个数. 计算数据的个数可以使用count,在python中使用len()也可以计算数据的个数,但是相对来说效率没有使用count()效率高,因为在底层是使用select ...

  8. ruoyi BeanUtils

    package com.ruoyi.common.utils.bean; import java.lang.reflect.Method; import java.util.ArrayList; im ...

  9. java和数据库中所有的锁都在这了

    1.java中的锁 1.1 锁的种类 公平锁/非公平锁 可重入锁/不可重入 独享锁/共享锁 读写锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 1.2 锁详细介绍 1.2.1 公平锁,非公平锁 公平锁 ...

  10. 使用GitHub管理Repository

    对已有的Repository进行修改 将已有的项目克隆到本地 git clone https://github.com/username/project-name 或者同步已经下载的项目 git pu ...