20160729noip模拟赛zld
首先显然有多少个奇数,就有多少个回文串是最优的(没有奇数时构造一个回文串
然后有了k个“核心”,把剩下的字符顺序安排到这些的两侧,最后最短的回文串长度就是答案
#include<map>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<complex>
#include<iostream>
#include<assert.h>
#include<algorithm>
using namespace std;
#define inf 1001001001
#define infll 1001001001001001001LL
#define FOR(i,a,n) for(int (i)=a;(i)<=(n);++(i))
#define FOR1(i,n) for(int (i)=1;(i)<=(n);++(i))
#define ll long long
#define dbg(vari) cerr<<#vari<<" = "<<(vari)<<endl
#define gmax(a,b) (a)=max((a),(b))
#define gmin(a,b) (a)=min((a),(b))
#define ios0 ios_base::sync_with_stdio(0)
#define Ri register int
#define gc getchar()
#define il inline
il int read(){
bool f=true;
Ri x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
#define gi read()
#define FO(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
int n,a[];
int main(){
FO(palindromic);
int T=gi;
while(T--){
int cnt=,sum=;
n=gi;
FOR1(i,n){
a[i]=gi;sum+=a[i];
if(a[i]&)cnt++;
}
// printf("%d %d\n",cnt,sum);
if(cnt)
cout<<(sum-cnt)//cnt*+<<endl;
else cout<<sum<<endl;
}
return ;
}
上次做这题:20160430ysy出题的时候
首先任意两点的最短路只有两种情况:曼哈顿距离,曼哈顿距离+2
那么我们考虑怎样的点对曼哈顿距离会被影响
显然是下面这样的:黑色是障碍,红色和蓝点距离加2
那么我们分行列统计这样的对数,就可以(
//fyb
//旅行
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
typedef double ll;
ll tot;
ll gg;
int n,m;
char s[];
int row[],col[];
int fyb(int i,int j,int k){return *(i-)*(k-j);}
ll dorow(){
ll ans=;
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++)
ans=ans+(m-(row[i]>))*(m-(row[j]>))*(j-i)/gg;
for (int i=;i<=n;i++)
if (row[i]){
ans=ans+fyb(row[i],row[i],m)/gg;
for(int j=i-;j>&&row[j]&&row[j]<row[j+];j--) ans=ans + fyb(row[j],row[i],m)/gg;
for(int j=i+;j<=n&&row[j]&&row[j]<row[j-];j++)ans=ans + fyb(row[j],row[i],m)/gg;
}
return ans;
}
ll docol(){
ll ans=;
for (int i=;i<m;i++)
for (int j=i+;j<=m;j++)
ans=ans+(n-(col[i]>))*(n-(col[j]>))*(j-i)/gg;
for (int i=;i<=m;i++)
if (col[i]){
ans=ans+fyb(col[i],col[i],n)/gg;
for(int j=i-;j>&&col[j]&&col[j]<col[j+];j--) ans= ans + fyb(col[j],col[i],n)/gg;
for(int j=i+;j<=m&&col[j]&&col[j]<col[j-];j++) ans=ans + fyb(col[j],col[i],n)/gg;
}
return ans;
}
int main(){
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
tot=;memset(row,,sizeof(row));memset(col,,sizeof(col));
for (int i=;i<=n;i++){
scanf("%s",s);
for (int j=;j<m;j++)
if (s[j]=='G'){
tot++;
row[i]=j+;
col[j+]=i;
break;
}
}
gg=n*m-tot;
gg = gg * gg;
double gg2 = dorow() + docol();
gg2 = gg2 * 2.0;
printf("%.4lf\n", gg2);
}
return ;
}
(出现了玄学的换行
设定ans[i][j]
表示当前时刻,从i-j最早什么时候到达
首先我们发现,加上一条边只会影响这条边的起点出发的边和到达终点的边
那么我们反向加边,每次更新一些ans[i][j]
查询就变得简洁很多了。
#include<map>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<complex>
#include<iostream>
#include<assert.h>
#include<algorithm>
using namespace std;
#define inf 1001001001
#define infll 1001001001001001001LL
#define FOR0(i,n) for(int (i)=0;(i)<(n);++(i))
#define FOR1(i,n) for(int (i)=1;(i)<=(n);++(i))
#define ll long long
#define dbg(vari) cerr<<#vari<<" = "<<(vari)<<endl
#define gmax(a,b) (a)=max((a),(b))
#define gmin(a,b) (a)=min((a),(b))
#define ios0 ios_base::sync_with_stdio(0)
#define Ri register int
#define gc getchar()
#define il inline
il int read(){
bool f=true;
Ri x=;char ch;
while(!isdigit(ch=gc))if(ch=='-')f=false;
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=gc;}
return f?x:-x;
}
#define gi read()
#define FO(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
int n,m,q,u[],v[],ans[];
struct data{
int a,b,c,d,id;
void input(){
a=gi;b=gi;c=gi;d=gi;
}
}a[];
bool operator<(data a,data b){
return a.a<b.a;
}
int dis[][];
int main(){
FO(plan);
n=gi;m=gi;q=gi;
memset(dis,/,sizeof(dis));
FOR1(i,n) dis[i][i]=;
FOR1(i,m) u[i]=gi,v[i]=gi;
FOR1(i,q) a[i].input(),a[i].id=i;
sort(a+,a+q+);
int t=q;
for(int i=m;i>=;i--){
dis[u[i]][v[i]]=dis[v[i]][u[i]]=i;
for(int j=;j<=n;j++) dis[u[i]][j]=min(dis[u[i]][j],max(dis[v[i]][j],i));
for(int j=;j<=n;j++) dis[v[i]][j]=min(dis[v[i]][j],max(dis[u[i]][j],i));
while(t&&a[t].a==i){
if(dis[a[t].c][a[t].d]<=a[t].b)ans[a[t].id]=true;
--t;
}
}
for(int i=;i<=q;i++) if(ans[i]) puts("Yes"); else puts("No");
}
20160729noip模拟赛zld的更多相关文章
- 20160727noip模拟赛zld
首先最优策略肯定是这样的:我们取出这个序列中的最大值,然后将整个序列分为左右两部分, 那么我们一定先把左右两部分合起来然后再与这个值合并 那么我们可以得出一个基于最值查询(rmq)的的算法,但是zld ...
- 20160730noip模拟赛zld
codeforces394E 如果没有在凸多边形内一点的限制,答案肯定是 如果不在凸多边形内,那么目标点肯定在凸多边形边上,我们枚举每条边,在每条边上求出距离平方和最小的点,在这些点中求出最小的 我们 ...
- 20160728noip模拟赛zld
前言:单独对题面描述的评分-> [题解]把相邻长度为2的子串两两连边,跑欧拉路 /*明天再写,先贴一份方老师代码压压惊*/ #include<map> #include<sta ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOI模拟赛 Day1
[考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 小奇模拟赛9.13 by hzwer
2015年9月13日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...
随机推荐
- iOS高仿城觅应用客户端项目(开发思路和代码)
这是一款非常完整的一个ios项目,基本实现了我们常用的一些功能了,而且界面设计个人感觉还是挺不错的,是一个不错的学习ios项目,喜欢的朋友可以参考一下吧. 项目展示,由于没有数据,所以所有的cell显 ...
- sicily 1027 MJ, Nowhere to Hide 字符串匹配与排序
1027. MJ, Nowhere to Hide Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description On BBS, th ...
- 【风马一族_Android】强制activity的横屏与纵屏
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- Uncaught SyntaxError: Unexpected token ILLEGAL【js错误】
应该是逗号的中英文状态错了,应该是英文状态的逗号.还有百度应用后面的逗号.college后面的冒号
- 安装gitolite,并ssh公钥无密码登录
安装gitolite,并ssh公钥无密码登录 gitolite是管理git版本库的一种方案,它将git版本库的管理信息放在了一个特殊git版本库里.gitolite与linux操作系统集成了,需要使用 ...
- 分享:linux下apache服务器的配置和管理
linux下apache服务器的配置和管理. 一.两个重要目录: Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式: Apac ...
- js中的数组
上网查了一下,js中的数组包含的内容还真不少.先给出两个学习的链接: w3school链接:http://www.w3school.com.cn/js/js_obj_array.asp 博客园链接:h ...
- 【面试虐菜】—— Jboss调优
吐血整理了以前Jboss以及JVM在生产环境下的调优参数,各种不同的案例,都是来自网友杜撰.整合后,希望对广大使用jboss作为生产应用服务器的朋友有所帮助. JBOSS参数调优 配置deploy/j ...
- 12、在XAML中定义处理程序
<Grid> <Button x:Name="btnTest" Width="120" Height="36" Conte ...
- RMAN备份失败之:mount: block device /dev/emcpowerc1 is write-protected, mounting read-only
今天再做巡检的时候发现有一台服务器的RMAN备份不正常,有一段时间没能正常备份了.检查了一下脚本,正常,定时任务列表也正常,再检查一下/var/log/cron的内容,也没有问题.尝试在该挂载点上创建 ...