All X

等比数列求和一下 A/B MOD C = A MOD (B*C) / B  或者分治一下

Sitting in Line

状压+拓扑dp

dp(i, j)表示当前二进制状态为j,当前状态的最后一个数字是a[i],然后按照拓扑序dp进行更新,并用一个bool数组记录是否在队列中。

网上还有其他优美的姿势,按某种枚举方式可以达到拓扑序。

 #include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[], p[], n; //输入的第i个数是否固定
int vis[], now[];//输出的第i个数是否确定
ll dp[][<<];
bool isin[][<<];
struct P{
int x, y;
P(){}
P(int x, int y):x(x), y(y){}
}; int main(){
int T, ca = ;
cin>>T;
while(T--){
memset(vis, , sizeof(vis));
cin>>n;
for(int i = ; i < n; i++){
cin>>a[i]>>p[i];
if(p[i] != -){
vis[ p[i] ] = true;
now[ p[i] ] = i;
}
} memset(dp, 0x80, sizeof(dp));
memset(isin, , sizeof(isin));
queue<P> Q;
if(vis[]){
dp[ now[] ][ <<now[] ] = ;
isin[ now[] ][ <<now[] ] = true;
Q.push( P(now[], <<now[]) );
}
else{
for(int i = ; i < n; i++)
if(p[i] == -){
dp[i][<<i] = ;
isin[i][<<i] = true;
Q.push( P(i, <<i) );
}
} for(int i = ; i < n; i++){//pos
int size = Q.size();
for(int j = ; j < size; j++){
P pp = Q.front();
Q.pop();
if(vis[i]){
dp[ now[i] ][ pp.y|(<<now[i]) ] = max(dp[ now[i] ][ pp.y|(<<now[i]) ] , dp[pp.x][pp.y]+a[pp.x]*a[ now[i] ]);
if(isin[ now[i] ][ pp.y|(<<now[i]) ] == false)
Q.push( P(now[i], pp.y|(<<now[i])) ), isin[ now[i] ][ pp.y|(<<now[i]) ] = true;
}
else{
for(int k = ; k < n; k++){
if( (pp.y&(<<k)) == &&p[k] == -){
dp[k][pp.y|(<<k)] = max(dp[k][pp.y|(<<k)] , dp[pp.x][pp.y]+a[pp.x]*a[k]);
if(isin[ k ][ pp.y|(<<k) ] == false)
Q.push( P(k, pp.y|(<<k)) ), isin[ k ][ pp.y|(<<k) ] = true;
}
}
}
}
} ll ans = -1e17;
for(int i = ; i < n; i++)
ans = max(ans, dp[i][ (<<n)- ]);
printf("Case #%d:\n", ca++);
cout<<ans<<endl;
}
return ;
}

BD String

从某个点断开后,后面的部分折到前面来,刚好和前面部分的后半段拼成一个整体。

 #include <bits/stdc++.h>
typedef long long ll;
using namespace std; ll getsum(ll x){
if(x <= )
return x; ll fir = ;
while( fir* <= x)
fir <<= ; return 1LL+x-fir + getsum( fir-(x-fir)- );
}
int main(){
int t, ca = ;
ll l, r;
cin>>t;
while(t--){
cin>>l>>r;
ll ans = getsum(r)-getsum(l-);
cout<<ans<<endl;
}
return ;
}

Gym Class

SB拓扑排序即可。

百度之星Astar2016 Round2A的更多相关文章

  1. 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  2. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  3. HDU 5690:2016"百度之星" - 初赛 All X

    原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  4. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  5. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  6. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  7. HDU 5685:2016"百度之星" - 资格赛 Problem A

    原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    ...

  8. 百度之星A

    Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 【百度之星2014~初赛(第二轮)解题报告】Chess

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载.可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

随机推荐

  1. Git的搭建和使用技巧完整精华版

    [Git使用技巧] 1.把一个已经存在于版本库中的文件加入忽略提交文件(.gitignore)中,需要如下代码: git rm --cached [文件路径] 例如: git rm --cached  ...

  2. shell小细节

    1.使用变量的时候无需首先声明其类型 2 cut 剪切数据 3.sed 定址 4.read 读取文件(管道) 5 expr 整值计算 6 lp 打印

  3. ACM题目————A除以B

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中依次给出A和B,中间以1空格分隔. 输出格 ...

  4. android Activity的启动模式

    Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...

  5. 连接无线设备——与Wi-Fi直接连接

    原文链接:http://developer.android.com/intl/zh-CN/training/connect-devices-wirelessly/wifi-direct.html 目录 ...

  6. Django的第一个web程序及深入学习

    本学习历程参照Practical Django Projects和http://djangobook.py3k.cn上翻译的内容进行 注:本例以本机加以说明: 根据Django的安装过程可知:在命令行 ...

  7. js实现图片的瀑布流

    先看效果: 初始状态:

  8. 使用存储过程来动态调用数据(SELECT)

    USE [MyTestDb] GO /****** Object: StoredProcedure [dbo].[PROC_GetChannelList] Script Date: 04/09/201 ...

  9. 【20160924】GOCVHelper 图像增强部分(1)

    图像增强是图像处理的第一步.这里集成了一些实际使用过程中有用的函数.   //读取灰度或彩色图片到灰度     Mat imread2gray(string path){         Mat sr ...

  10. Java 使用 Stream API 筛选 List

    前言 上课的时候看到老师用迭代器来遍历 List 中的元素的时候,我的内心是极其嫌弃的,这种迭代方法不能直接访问当前的元素,而且写起来也麻烦.于是上网查了查 Java 有没有类似于 Linq 的东西, ...