【扬中集训DAY2T2】 机智的AmyZhi
【题目链接】
【算法】
据说标算是暴力? 从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的更多相关文章
- 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi
那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11 ...
- 【扬中集训 DAY4T3】holiday
[题目链接] 点击打开链接 [算法] 建C棵线段树即可,注意要用前缀和优化 [代码] 这是标程 #include <bits/stdc++.h> using namespace std; ...
- 【扬中集训 DAY4T1】跳马
[题目链接] 点击打开链接 [算法] 数据范围很大,显然暴力是不能通过的 我们可以先打表,发现答案为 : 41 109 205 325 473 649 853 1085 1345 观察数列的差 68 ...
- 【扬中集训DAY1T1】 微信群
[题目链接] 点击打开链接 [算法] 对问题稍加分析后,发现其实要求的就是 : C(N,K) + C(N,K+1) + C(N,K+2) + ... + C(N,N) 因为N最大10^9,K最大10^ ...
- 【扬中集训Day6T1】 白日梦
[题目描述] 白日梦 (daydream.c/cpp/pas) 时间限制: 1 s 空间限制: 256 MB 题目描述 SR需要相当大的睡眠量 某日,他做了一个奇怪的梦,他梦见自己成为了怪物猎人,为 ...
- 【扬中集训DAY5T1】 交换矩阵
[题目链接] 点击打开链接 [算法] 链表,对于每个点,存它的上,下,左,右分别是谁 [代码] #include<bits/stdc++.h> using namespace std; # ...
- [暑假集训Day2T2]走廊泼水节
给定一棵n个点的图上的最小生成树,让你把它补成完全图,使得新图的MST还是给定的MST且边权和最小,输出需要增加的边权和. 设size[i]表示以i号为祖先的并查集的大小. 首先按边权排序,之后在做M ...
- 【集训第二天·翻水的老师】--ac自动机+splay树
今天是第二天集训.(其实已经是第三天了,只是昨天并没有机会来写总结,现在补上) 上午大家心情都很愉快,因为老师讲了splay树和ac自动机. 但到了下午,我们的教练竟然跑出去耍了(excuse me? ...
- [2018HN省队集训D1T3] Or
[2018HN省队集训D1T3] Or 题意 给定 \(n\) 和 \(k\), 求长度为 \(n\) 的满足下列条件的数列的数量模 \(998244353\) 的值: 所有值在 \([1,2^k)\ ...
随机推荐
- Wannafly挑战赛11 D 题 字符串hash + 卡常
题目链接 https://ac.nowcoder.com/acm/contest/73#question map与order_map https://blog.csdn.net/BillCYJ/art ...
- (1)Swing创建窗体
本系列使用Intellij IDEA 2017.3.4版本 一.运行窗体 1. 2. 3. 4. 5. 6. 给JPanel起个名字 -如From 7. 8. 9. 生成 import javax.s ...
- 图说OSI七层网络模型
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际 ...
- codevs——1036 商务旅行
1036 商务旅行 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 某首都城市的商人要经常 ...
- 使用fastJson把对象转字符串首字母大小写问题的解决
例如:文档中要求传输的字段为 但是转成json字符串后却变成了: 解决方式: 在实体类的get方法上添加@JSONField(name = " ") 注解后问题解决: 输出:
- expect实现无交互操作
按两下tab linux总共2000个命令,,常用的200个命令. 只要文件改变了,MD5值就会变!
- iOS开发之计算两个日期的时间间隔
//首先创建格式化对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDate ...
- mui + vue 模板
示例代码: (function(mui, doc) { // 定义全局变量(计时器) var timer; // mui初始化 mui.init(); // 创建vue的实例 var app = ne ...
- C#3.0之神奇的Lambda表达式和Lambda语句
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to” ...
- 李洪强iOS开发之-修改状态栏的字体的颜色
李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [ ...