SCAU Individual Contest #1
总结一下就是自己太弱。每次打比赛遇到比较难题就喜欢瞎开题,结果都是每题想一下,然后就是结束了。
A:题意让你用小写字母构造一个总共有K个的回文串,比如aba的话就是{a}{b}{a}{aba}四个,比较水,直接a-z一直循环够K个字母就行了,因为这样回文串只能是每个字符自己本身,比赛脑残写成大写WA了一发.题目:https://www.codechef.com/problems/NDIFFPAL
B:题目大意就是给你N个格子,每次必须填连续三个格子而且填相同的数,格子上如果填过数字的话,再填是直接覆盖,给你一个序列,问你能否把格子填成这种形式,输出Yes或者No。解法就是直接扫一次,如果序列里有三个连续相同的数字的话就Y,因为涂的时候我们可以把这三个留在最后填,然后其他就相当于可以一个个填。也是比较水。题目:https://www.codechef.com/problems/MAKEART
下面几题就是开始待机模式了= =
C:题意让你构造一个序列,序列必须是1-x的全排列之一,而且x不能超过100,这个序列还必须有K个最长上升子序列。题目:https://www.codechef.com/problems/MAKELIS
解法真是奥秘重重。。做题质量不够,数量也不够,认识的套路少,太弱。
假如K小于等于100,就可以直接倒序输出。然而没什么卵用啊,题目的K是10^5,然后正确套路就是分解K成其他进制。
官方题解就是差不多这样说吧。。不过看不太懂,因为上面出现一大波乱码。看了下没乱码的公式,YY了下。大概就是这样
[……]表示这个序列的一部分
假如K=6的话,把K分解成二进制就是110(2)=0+2*(1+2),从最里面那个开始看起0+2*(1+[2,1])->0+2*([1]+[2,1])=0+2*([3,2,1])=0+[2,1]*([3,2,1])=[3,2,1,5,4]
乘上二的话,就是在最后面加上两个连续倒序的数。相加的话就是在最前面加上一个数
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <stack>
typedef long long ll;
#define X first
#define Y second
#define mp(a,b) make_pair(a,b)
#define pb push_back
#define sd(x) scanf("%d",&(x))
#define Pi acos(-1.0)
#define sf(x) scanf("%lf",&(x))
#define ss(x) scanf("%s",(x))
#define maxn 10000000
#include <ctime>
const int inf=0x3f3f3f3f;
const long long mod=;
using namespace std;
vector<int> turn(int k)
{
vector<int>a;
while(k)
{
a.pb(k%);
k/=;
}
return a;
}
int main()
{
#ifdef local
freopen("in","r",stdin);
//freopen("data.txt","w",stdout);
int _time=clock();
#endif
int t;
cin>>t;
while(t--)
{
int k;
sd(k);
if(k==)
{
printf("1\n1\n");
continue;
}
vector<int>bit,a,b;
bit=turn(k);
int len=bit.size();
int cnt=;
int head;
for(int i=len-;i>=;i--)
{
if(bit[i]==)
{
head=len-i-;
while(b.size()!=head)
b.pb(cnt++);
}
if(i)
{
a.pb(cnt+);
a.pb(cnt);
cnt+=;
}
}
printf("%d\n",a.size()+b.size());
for(int i=;i<b.size();i++)
printf("%d ",b[i]);
for(int i=;i<a.size();i++)
printf("%d ",a[i]);
putchar('\n');
}
#ifdef local
printf("time: %d\n",int(clock()-_time));
#endif
}
D:给你n个数a1,a2……,an,增长m次,增长规律就是每两个数直接会生成新的数,数的值等于那两个数的和.再给你m,还有x,y问你m次之后,[x,y]区间里面的和是多少。题目:https://www.codechef.com/problems/CHSPARR
官方题解老是乱码。。自己手算好久,推出一个规律...
{1,6,9}->{1,7,6,15,9}
假设sum[m][i]是第m次后的前i项和,a[m][i]是第m次后的第i个元素,m=1,i是奇数的时候,如i=3,我们会发现1+7+6+15=2*(1+6)+(1+6+9-1),发现了吗。奇数位是上一个序列生成的数。。
i&1==1的时候,sum[m][i]=sum[m-1][i/2]*2+sum[m-1][i/2+1]-a[0];
为什么呢,因为sum[m-1][i/2]*2等于[0,i/2]这个区间生成的数+a[0]+a[m-1][i/2],再加上sum[m-1][i/2+1]等于a[m-1][0,i/2]+a[i][i/2+1];
a[m-1][i/2]+a[m-1][i/2+1]等于?,就等于a[m][i]。所以上面的式子成立。
上面是奇数的情况,偶数也差不多这样推。。所以我们可以记忆化递推就可以了
奇数推导(xjb猜)
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
typedef unsigned long long ull;
typedef double db;
#define X first
#define Y second
#define mp(a,b) make_pair(a,b)
#define pb push_back
#define sd(x) scanf("%d",&(x))
#define Pi acos(-1.0)
#define sf(x) scanf("%lf",&(x))
#define ss(x) scanf("%s",(x))
#define maxn 50005
const int inf=0x3f3f3f3f;
const ll mod=;
ll a[];
map<ll,ll>book[];
ll solve(int m,ll x)
{
if(x==)return a[];
if(m==)return a[x];
if(book[m].count(x))return book[m][x];
if(x&)return book[m][x]=(solve(m-,x/+)%mod+*solve(m-,x/)%mod-a[]+mod)%mod;
else return book[m][x]=(*solve(m-,x/)%mod+solve(m-,x/-)%mod-a[]+mod)%mod;
}
int main()
{
#ifdef local
freopen("in","r",stdin);
//freopen("out","w",stdout);
int _time=clock();
#endif
int t;
sd(t);
while(t--)
{
int n,m;
ll x,y;
cin>>n>>m>>x>>y;
x--,y--;
for(int i=;i<n;i++)
{
scanf("%lld",&a[i]);
a[i]+=(i?a[i-]:);
}
for(int i=;i<=m;i++)book[i].clear();
cout<<(solve(m,y)-(x?solve(m,x-):)+mod)%mod<<endl;
}
#ifdef local
printf("time: %d\n",int(clock()-_time));
#endif
}
未完
SCAU Individual Contest #1的更多相关文章
- Individual Contest #1 and Private Training #1
第一次的增补赛,也是第一场个人排位赛,讲道理打的和屎一样,手速题卡了好久还WA了好多发,难题又切不出来,这种情况是最尴尬的吧! Individual Contest #1: Ploblem D: 题意 ...
- JSU 2013 Summer Individual Ranking Contest - 5
JSU 2013 Summer Individual Ranking Contest - 5 密码:本套题选题权归JSU所有,需要密码请联系(http://blog.csdn.net/yew1eb). ...
- AtCoder Beginner Contest 050 ABC题
A - Addition and Subtraction Easy Time limit : 2sec / Memory limit : 256MB Score : 100 points Proble ...
- Competing in a data science contest without reading the data
Competing in a data science contest without reading the data Machine learning competitions have beco ...
- zoj 3823 Excavator Contest 构造
Excavator Contest Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/show ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
- Contest with Drinks Easy
/* Problem Statement Joisino is about to compete in the final round of a certain programming competi ...
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
随机推荐
- java实现截屏
import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit ...
- 基于Spring Security 的JSaaS应用的权限管理
1. 概述 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源.资源包括访问的页面,访问的数据等,这在传统的应用系统中比较常见.本文介绍的则是基于Saas系统 ...
- mac jmeter 的使用
1.下载 mac下载地址:http://jmeter.apache.org/download_jmeter.cgi,下载apache-jmeter-3.1.tgz 2.下载完毕后解压,得到安装包 3. ...
- c++中enum的用法——枚举类型
将变量的可取值全部列举出来,写在程序的开头,使用该类型的时候显示地指定取值即可(即对枚举变量进行赋予元素操作,这里之所以叫赋元素操作不叫赋值操作就是为了说明枚举变量是不能直接赋予算数值的). 如: e ...
- (function($){….})(jQuery)一种js插件写法
我们先看第一个括号里边的内容:function($){….},这不就是一个匿名的函数吗?但是它的形参比较奇怪,是$,这里主要是为了不与其它的库冲突. 这样我们就比较容易理解第一个括号内的内容就是定义了 ...
- Xamarin.Forms+Prism(3)—— 简单提示UI的使用
这次给大家介绍两个比较好用的提示插件,如成功.等待.错误提示. 准备: 1.新建一个Prism Xamarin.Forms项目: 2.右击解决方案,添加NuGet包: 1)Acr.UserDialog ...
- Vue 普通对象数据更新与 file 对象数据更新
最近在做一个多图片上传的组件,需求是做到多文件依次上传,并显示上传进度条. 逻辑部分实现了以后,在更新进度条视图的时候出现一点问题:动态计算生产的进度 progress 属性不会自动更新. 原来的代码 ...
- JS 部分常见循环、分支、嵌套练习
图形题思路:1.确定图形一共几行,即为外层的循环次数2.确定每行有几种元素,代表有几个内层循环3.确定每种元素的个数,即为每个内层循环的次数 通常,找出每种元素个数,与行号的关系式,即为当前内层循 ...
- 在Android Studio上测试运行,Unity发布成Android包的环境搭建步骤
我用的是unity5.4.3版本,jdk是1.8.0_131版本,Android-SDK是r24.4.1版本,Android-NDK是r13b版本,作者是刚开始写博客,希望对在unity摸索的人有 ...
- springmvc 方法参数自定义的解析
1.实现HandlerMethodArgumentResolver接口: 2.在配置文件中添加配置<mvc:argument-resolvers> <bean class=&qu ...