【题目链接】

点击打开链接

【算法】

据说标算是暴力? 从N-200开始搜

不过我用了搜索+一些奇怪的剪枝,也A了....

【代码】

标程

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,cases;
bool check(ll x){
ll tmp=x;
for(int i=;i<=;i++){
tmp+=x%;
x/=;
}
if(tmp==n)return ;
return ;
}
int main(){
scanf("%I64d",&cases);
int flag;
while(cases--)
{
flag=;
scanf("%I64d",&n);
for(ll i=max(1LL,n-);i<=n;i++)
if(check(i)){
printf("%I64d\n",i);
flag=;
break;
}
if (flag==) puts("Stupid SiriusRen");
}
return ;
}

我的程序

#include<bits/stdc++.h>
using namespace std;
#define MAXL 17
typedef long long LL; LL i,j,l,T,N,len,lth,sum;
LL a[MAXL+][MAXL+],s[MAXL+][MAXL+],f[MAXL+],ans[MAXL+];
vector<LL> vec,res;
bool solved; template <typename T> inline void read(T &x) {
int f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
} template <typename T> inline void write(T x) {
if (x < ) { putchar('-'); x = -x; }
if (x > ) write(x/);
putchar(x%+'');
} template <typename T> inline void writeln(T x) {
write(x);
puts("");
} inline void save_answer() {
int i;
for (i = ; i <= len; i++) res.push_back(ans[i]);
} inline void dfs(int dep) {
int i,l,r;
if (solved) return;
if (sum > N) return;
if (sum + * (s[len][len] - s[len][dep-]) < N) return;
if (dep > len) {
if (sum == N) {
solved = true;
save_answer();
}
} else {
l = ; r = ;
if (dep == ) l = ;
for (i = l; i <= r; i++) {
if (solved) break;
if (sum + a[len][dep] * i <= N) {
sum += a[len][dep] * i;
ans[++lth] = i;
dfs(dep+);
sum -= a[len][dep] * i;
--lth;
}
}
}
} void print() {
int i;
for (i = ; i < res.size(); i++) write(res[i]);
cout<<endl;
} int main() { freopen("amy.in","r",stdin);
freopen("amy.out","w",stdout); f[] = ;
for (i = ; i <= MAXL; i++) f[i] = (f[i-] << ) + (f[i-] << );
for (i = ; i <= MAXL; i++) {
a[i][i] = ;
for (j = i - ; j >= ; j--) {
a[i][j] = f[i-j] + ;
}
}
for (i = ; i <= MAXL; i++) {
for (j = ; j <= MAXL; j++) {
s[i][j] = s[i][j-] + a[i][j];
}
}
read(T);
while (T--) {
vec.clear(); res.clear();
solved = false;
read(N);
for (l = ; l <= MAXL; l++) {
if (s[l][l] * < N) continue;
if (a[l][] > N) break;
vec.push_back(l);
}
for (i = ; i < vec.size(); i++) {
lth = sum = ; len = vec[i];
dfs();
if (solved) break;
}
if (solved) print();
else puts("Stupid SiriusRen");
} return ; }

【扬中集训DAY2T2】 机智的AmyZhi的更多相关文章

  1. 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi

    那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11  ...

  2. 【扬中集训 DAY4T3】holiday

    [题目链接] 点击打开链接 [算法] 建C棵线段树即可,注意要用前缀和优化 [代码] 这是标程 #include <bits/stdc++.h> using namespace std; ...

  3. 【扬中集训 DAY4T1】跳马

    [题目链接] 点击打开链接 [算法] 数据范围很大,显然暴力是不能通过的 我们可以先打表,发现答案为 : 41 109 205 325 473 649 853 1085 1345 观察数列的差 68 ...

  4. 【扬中集训DAY1T1】 微信群

    [题目链接] 点击打开链接 [算法] 对问题稍加分析后,发现其实要求的就是 : C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N) 因为N最大10^9,K最大10^ ...

  5. 【扬中集训Day6T1】 白日梦

    [题目描述] 白日梦 (daydream.c/cpp/pas) 时间限制: 1 s  空间限制: 256 MB 题目描述 SR需要相当大的睡眠量 某日,他做了一个奇怪的梦,他梦见自己成为了怪物猎人,为 ...

  6. 【扬中集训DAY5T1】 交换矩阵

    [题目链接] 点击打开链接 [算法] 链表,对于每个点,存它的上,下,左,右分别是谁 [代码] #include<bits/stdc++.h> using namespace std; # ...

  7. [暑假集训Day2T2]走廊泼水节

    给定一棵n个点的图上的最小生成树,让你把它补成完全图,使得新图的MST还是给定的MST且边权和最小,输出需要增加的边权和. 设size[i]表示以i号为祖先的并查集的大小. 首先按边权排序,之后在做M ...

  8. 【集训第二天·翻水的老师】--ac自动机+splay树

    今天是第二天集训.(其实已经是第三天了,只是昨天并没有机会来写总结,现在补上) 上午大家心情都很愉快,因为老师讲了splay树和ac自动机. 但到了下午,我们的教练竟然跑出去耍了(excuse me? ...

  9. [2018HN省队集训D1T3] Or

    [2018HN省队集训D1T3] Or 题意 给定 \(n\) 和 \(k\), 求长度为 \(n\) 的满足下列条件的数列的数量模 \(998244353\) 的值: 所有值在 \([1,2^k)\ ...

随机推荐

  1. (2)git本地生成SSH关联github

    1.安装git 2.打开 Git Bash 输入ssh ,查看是否安装了ssh 这个界面是安装了的意思 3.生成ssh 输入ssh-keygen -t rsa 指令, 再连续按三次回车 会生成两个文件 ...

  2. 使用Crypto对数据进行加密解密

    注释都在代码里: 先撸客户端: from Crypto.Cipher import AES import base64,requests class Message(object): def __in ...

  3. [转] SQL Server中变量的声明和使用方法

    原文地址 SQL Server中变量的声明和使用方法 声明局部变量语法: DECLARE @variable_name DataType 其中 variable_name为局部变量的名称,DataTy ...

  4. mac mysql重置密码

    http://blog.csdn.net/xiaozhuanddapang/article/details/53185775 情况一:在mysql官网直接下载dmg文件进行安装,忘记密码 1.关闭my ...

  5. xgboost原理及并行实现

    XGBoost训练: It is not easy to train all the trees at once. Instead, we use an additive strategy: fix ...

  6. 【转载】C#相等性比较

    本文阐述C#中相等性比较,其中主要集中在下面两个方面 ==和!=运算符,什么时候它们可以用于相等性比较,什么时候它们不适用,如果不使用,那么它们的替代方式是什么? 什么时候,需要自定一个类型的相等性比 ...

  7. hibernate载入持久化对象的两种方式——get、load

    一.get与load对照 在hibernate中get和load方法是依据id取得持久化对象的两种方法.但在实际使用的过程中总会把两者混淆,不知道什么情况下使用get好,什么时候使用load方法效率更 ...

  8. 读书笔记-2java虚拟机的可达性算法与finalize方法

    JAVA通过可达性分析算法来确定堆中哪些对象是应该被回收的. 非常多人包含我曾经在不了解的时候总以为是通过引用计数器来推断某个对象是否应该被回收可是后来想了想包含查阅一些资料发现不是这种.由于假设採用 ...

  9. DRP——Dom4j使用

    dom4j是一个Java的XMLAPI,类似于jdom.用来读写XML文件的.dom4j是一个很很优秀的JavaXMLAPI.具有性能优异.功能强大和极端易用使用的特点.Dom4j是一个易用的.开源的 ...

  10. sanic官方文档解析之streaming(流动,滚动)和class_based_views(CBV的写法)

    1,streaming(流媒体) 1.1请求流媒体 Sanic允许你通过流媒体携带请求数据,如下,当请求结束await request.stream.read()就会返回None,仅仅只有post请求 ...