思路:模拟,set记录一下。

#include<set>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
set<int>se;
int n,k,x,ans;
int main(){
freopen("del.in","r",stdin);
freopen("del.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++){
scanf("%d",&x);
if(se.find(x)!=se.end()) k--;
else{
se.insert(x);
ans++;
}
}
if(k<=) cout<<ans<<endl;
else cout<<ans-k<<endl;
}

思路:搜索

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <cstdlib>
using namespace std; int board[][], isKing[][];
int dir[][] = {{, }, {, -}, {-, }, {-, -}};
int best_deep;
vector<int> w;
vector<int> ways; void dfs(int step, int x, int y, int isKing)
{
w.push_back(x * + y);
if (step > best_deep)
{
best_deep = step;
ways.clear();
ways.push_back(w[]);
}
else if (step > && step == best_deep)
{
ways.push_back(w[]);
} int dis_limit = isKing ? : ; for (int d = ; d < ; d++)
{
bool pass = false;
int passx = , passy = ;
for (int dis = ; dis <= dis_limit; dis++)
{
int nxtX = x + dis * dir[d][];
int nxtY = y + dis * dir[d][];
if (!( <= nxtX && nxtX < && <= nxtY && nxtY < ))
break;
if (board[nxtX][nxtY] == || board[nxtX][nxtY] == )
break;
if (pass && board[nxtX][nxtY] == )
break;
if (board[nxtX][nxtY] == )
{
pass = true;
passx = nxtX;
passy = nxtY;
}
else
{
if (!pass)
continue;
board[passx][passy] = ;
dfs(step + , nxtX, nxtY, isKing);
board[passx][passy] = ;
}
}
}
w.pop_back();
} bool getAvailable()
{
ways.clear();
w.clear();
best_deep = ;
for (int curX = ; curX < ; curX++)
for (int curY = ; curY < ; curY++)
if (board[curX][curY] == )
dfs(, curX, curY, isKing[curX][curY]);
if (best_deep == )
{
for (int curX = ; curX < ; curX++)
for (int curY = ; curY < ; curY++)
if (board[curX][curY] == )
{
if (isKing[curX][curY])
{
for (int x = curX + , y = curY + ; <= x && x < && <= y && y < ; x++, y++)
if (!board[x][y])
ways.push_back(curX * + curY);
else
break;
for (int x = curX + , y = curY - ; <= x && x < && <= y && y < ; x++, y--)
if (!board[x][y])
ways.push_back(curX * + curY);
else
break;
for (int x = curX - , y = curY + ; <= x && x < && <= y && y < ; x--, y++)
if (!board[x][y])
ways.push_back(curX * + curY);
else
break;
for (int x = curX - , y = curY - ; <= x && x < && <= y && y < ; x--, y--)
if (!board[x][y])
ways.push_back(curX * + curY);
else
break;
}
else
{
if (curX - >= && curY - >= && !board[curX - ][curY - ])
ways.push_back(curX * + curY);
if (curX - >= && curY + < && !board[curX - ][curY + ])
ways.push_back(curX * + curY);
}
}
}
if (!ways.size())
return false;
return true;
} int main(){
freopen("chess.in", "r", stdin);
freopen("chess.out", "w", stdout);
memset(board, , sizeof(board));
memset(isKing, , sizeof(isKing));
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
{
char c;
scanf(" %c", &c);
board[i][j] = c - '';
}
for (int i = ; i < ; i++)
for (int j = ; j < ; j++)
{
char c;
scanf(" %c", &c);
isKing[i][j] = c - '';
}
getAvailable();
if (!ways.size())
printf("0\n");
else {
sort(ways.begin(), ways.end());
printf("%d\n", (int)ways.size());
for (int i = ; i < (int)ways.size(); i++)
printf("(%d,%d)\n", ways[i] / + , ways[i] % + );
}
}

思路:状压DP.

对后续决策有影响的是什么?

现在已经吃了哪些馅饼

令F[i][s]表示考虑前i次馅饼掉落事件,吃了s这个二进制状态表示的馅饼,期望的美味值

对于每一次掉馅饼,枚举掉下来的馅饼是谁

若s&a[j]==a[j](a[j]为前提馅饼集合) F[i][s] -> F[i+1][s|(1<<(j-1))] 注意要 /n

递推的顺序?

一个起始状态,多个目标状态,正推会导致无效状态

反着推

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k,x,y;
int w[],f[];
double dp[][];
int main(){
freopen("bonus.in","r",stdin);
freopen("bonus.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<n;i++){
scanf("%d",&w[i]);
while(scanf("%d",&x)&&x) f[i]|=<<x-;
}
for(int s=;s<(<<n);s++) dp[k][s]=;
for(int i=k-;i>=;i--)
for(int s=;s<(<<n);s++)
for(int j=;j<n;j++)
if((s&f[j])==f[j]) dp[i][s]+=1.0/n*max(dp[i+][s],dp[i+][s|(<<j)]+w[j]);
else dp[i][s]+=1.0/n*dp[i+][s];
printf("%.6f\n",dp[][]);
}

国庆 day 7 上午的更多相关文章

  1. 国庆 day 3 上午

    a[问题描述] 你是能看到第一题的 friends 呢. ——hja 怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给 出了一种分单词的方法,何大爷认为两个单词是同一类的当这两个单词的 ...

  2. 国庆 day 2 上午

    一道图论神题(god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...

  3. 国庆 day 6 上午

    1. 角谷猜想(kakutani.pas/c/cpp)(kakutani.in/out)时间限制:1s/空间限制:256M[题目描述] 某个名字末尾是 654321 的小 A 同学是个大家眼中公认的学 ...

  4. 2018国庆YALI集训游记

    想了想,像之前那样简略地叙述题意和做法,根本没讲清楚,没有任何意义,还不如写写自己的感受. 感觉YALI真的是一所挺不错的学校吧.总是能有一机房的julao轮番吊打你,总是能有集训队的奆佬来给你出dl ...

  5. SSH-Struts第三弹:传智播客视频教程第一天上午的笔记

    一. 框架概述1.三大框架 : 是企业主流 JavaEE 开发的一套架构 Struts2 + Spring + Hibernate 2. 什么是框架?为什么要学框架 ?框架 是 实现部分功能的代码 ( ...

  6. JAVA判断当前时间是上午am还是下午pm

    //结果为"0"是上午 结果为"1"是下午 public class GregorianTest { public static void main(Strin ...

  7. PKUSC 模拟赛 day2 上午总结

    今天上午考得不是很好,主要还是自己太弱QAQ 开场第一题给的图和题意不符,搞了半天才知道原来是走日字形的 然后BFS即可 #include<cstdio> #include<cstr ...

  8. PKUSC 模拟赛 day1 上午总结

    思考了一下第二题,觉得有无数种乱搞做法 类似什么bitset压位,MCS染色之类奇怪的做法 然而都是玄学正确性或者玄学复杂度 先放题解把 第一题显然具有单调性,二分就可以啦 O(nlogn),貌似输出 ...

  9. hihoCoder 1041 国庆出游 (DFS)

    题意: 小Hi和小Ho准备国庆期间去A国旅游.A国的城际交通比较有特色:它共有n座城市(编号1-n):城市之间恰好有n-1条公路相连,形成一个树形公路网.小Hi计划从A国首都(1号城市)出发,自驾遍历 ...

随机推荐

  1. 四、服务器上的 Git

    一个远程仓库通常只是一个裸仓库(bare repository)— 即一个没有当前工作目录的仓库.因为该仓库仅仅作为合作媒介,不需要从磁碟检查快照:存放的只有 Git 的资料.简单的说,裸仓库就是你专 ...

  2. NOIP2018提高组金牌训练营——搜索专题

    NOIP2018提高组金牌训练营——搜索专题 1416 两点 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”.基础级别的时候是在一个n×m单元上玩的.像这样: 每一个单元有包含一个有色点.我们将用不 ...

  3. 初识单点登录及JWT实现

    单点登录 多系统,单一位置登录,实现多系统同时登录的一种技术 (三方登录:某系统使用其他系统的用户,实现本系统登录的方式.如微信登录.支付宝登录) 单点登录一般是用于互相授信的系统,实现单一位置登录, ...

  4. STM32 关于头文件路径没添加错误问题(cannot open source input file "spi.h": No such file or directory)

    error:  #5: cannot open source input file "spi.h": No such file or directory 1.出现这种问题,首先要确 ...

  5. 洛谷 1063 dp 区间dp

    洛谷 1063 dp 区间dp 感觉做完这道提高组T1的题之后,受到了深深的碾压,,最近各种不在状态.. 初看这道题,不难发现它具有区间可并性,即(i, j)的最大值可以由(i, k) 与 (k+1, ...

  6. 任务调度器quartz的使用

    1.quartz的获取. 可參照:Quartz任务调度模型实例 2.开发思路: 要使用定时器quartz.先弄清楚三个概念:调度器.任务.触发器.开发也是依照这三个方面来开发, 1>写一个Job ...

  7. USACO runaround

    /* ID:kevin_s1 PROG:runround LANG:C++ */ #include <iostream> #include <cstdio> #include ...

  8. (转)<![CDATA[]]>和转义字符

    被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”. 此标记用于xml文档中,我们先来看看使用转义符的情 ...

  9. OC 自己定义 setDateFormat 显示格式

    -(NSString *)getStringFromDate:(NSDate *)aDate { NSDateFormatter *dateFormater=[[NSDateFormatter all ...

  10. iOS 自己主动登录,登录过程中一直显示载入页

    iOS开发中 假设client做的人性化一点肯定会考虑自己主动登录 事实上原理非常easy,就是再首次登录成功之后将username和password存入userdefault 下次登录的时候推断us ...