ACdream区域赛指导赛之专题赛系列(1)の数学专场
Contest : ACdream区域赛指导赛之专题赛系列(1)の数学专场
题意:n(<=10^18)的数转化成2进制。翻转后(去掉前导零)输出十进制
思路:water
/*
* this code is made by shiyuan
* Problem: 1095
* Verdict: Accepted
* Submission Date: 2014-05-24 19:06:37
* Time: 0 MS
* Memory: 1676 KB
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
int main(){
int t; scanf("%d",&t);
while(t--){
LL n; scanf("%lld",&n);
string s="";
while(n){
if(n&1) s+="1";
else s+="0";
n/=2;
}
LL ans=0,tmp=1;
int i=s.size()-1;
while(s[i]!='1' && i>=0) i--;
for(;i>=0;i--){
if(s[i]=='1'){
ans+=tmp;
}
tmp*=2;
}
printf("%lld\n",ans);
}
return 0;
}
题意:n(<=1000)仅仅地鼠出现的坐标、被击中的概率以及时间已知,还有锤子的移动速度,求期望的最大值
思路:依据时间排序,用dp[i]表示前i仅仅地鼠被击中的期望,dp[i]=max(dp[i],dp[j]+p[i]) 当且仅当第i仅仅地鼠和第j仅仅地鼠可达(锤子移动的时间够)
/*
* this code is made by shiyuan
* Problem: 1092
* Verdict: Accepted
* Submission Date: 2014-05-24 23:54:42
* Time: 372 MS
* Memory: 1724 KB
*/
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long LL;
struct node{
int x,y,t;
double p;
}P[1010];
double dp[1010];
void init(){
for(int i=0;i<1010;i++) dp[i]=0;
}
bool cmp(node a,node b){
return a.t<b.t;
}
double sq(double x){
return x*x;
}
double dis(node a,node b){
return sqrt(sq(a.x-b.x+0.0)+sq(a.y-b.y+0.0));
}
int main(){
int t; scanf("%d",&t);
while(t--){
int n; LL v; scanf("%d%lld",&n,&v);
init();
for(int i=0;i<n;i++){
scanf("%d%d%d%lf",&P[i].x,&P[i].y,&P[i].t,&P[i].p);
}
sort(P,P+n,cmp);
for(int i=0;i<n;i++){
dp[i]=P[i].p;
for(int j=0;j<i;j++){
if(v*(P[i].t-P[j].t)-dis(P[i],P[j])>=0){
dp[i]=max(dp[i],dp[j]+P[i].p);
}
}
}
double ans=0;
for(int i=0;i<n;i++) ans=max(ans,dp[i]);
printf("%.6lf\n",ans);
}
return 0;
}
tag: polya计数
tag: 莫比乌斯反演
英文题,看了头大。不想做
E.女神的正多面体
题意:分别给出正四面体、正六面体和正十二面体中4、8、6个点。相邻的点可达,告诉起点和终点,问k步内能到达终点的方案数
思路:三种不同的方法构造不同矩阵,多加一行纪录k步以内的全部方案
个人见解:曾经做过一个类似的题,思路几乎相同,可是当时那个题我的理解是已经到达终点了就不该继续往前了。好比1-3-2-3(起点1,终点3)个人觉得应该是属于不合法的方案,所以假设依照这样理解的话,我们在考虑构造矩阵的话,由终点引出的下若干个点的值应该置为0 (当然这题的正讲解的不是这样)
/*
* this code is made by shiyuan
* Problem: 1093
* Verdict: Accepted
* Submission Date: 2014-05-24 19:57:19
* Time: 28 MS
* Memory: 1676 KB
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
const LL mod=1000000007;
struct Matrix{
LL m[10][10];
}E,D;
int n,st,ed;
LL K;
Matrix Multi(Matrix A,Matrix B){
Matrix ans;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
ans.m[i][j]=0;
for(int k=1;k<=n;k++){
ans.m[i][j]=(ans.m[i][j]+A.m[i][k]*B.m[k][j])%mod;
}
}
}
return ans;
}
void init(){
memset(D.m,0,sizeof(D.m));
memset(E.m,0,sizeof(E.m));
for(int i=1;i<=9;i++)
E.m[i][i]=1;
}
Matrix Pow(Matrix A,LL k){
Matrix ans=E;
while(k){
if(k&1) k--,ans=Multi(ans,A);
else k/=2,A=Multi(A,A);
}
return ans;
}
int main(){
int T; scanf("%d",&T);
while(T--){
scanf("%d%lld%d%d",&n,&K,&st,&ed);
init();
Matrix ans;
memset(ans.m,0,sizeof(ans.m));
if(n==4){
memset(D.m,0,sizeof(D.m));
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) D.m[i][j]=0;
else D.m[i][j]=1;
}
}
}
else if(n==6){
n=8;
memset(D.m,0,sizeof(D.m));
D.m[1][2]=D.m[1][4]=D.m[1][5]=1;
D.m[2][1]=D.m[2][3]=D.m[2][6]=1;
D.m[3][2]=D.m[3][4]=D.m[3][7]=1;
D.m[4][1]=D.m[4][3]=D.m[4][8]=1;
D.m[5][1]=D.m[5][6]=D.m[5][8]=1;
D.m[6][2]=D.m[6][5]=D.m[6][7]=1;
D.m[7][3]=D.m[7][6]=D.m[7][8]=1;
D.m[8][4]=D.m[8][5]=D.m[8][7]=1;
}
else{
n=6;
memset(D.m,0,sizeof(D.m));
D.m[1][2]=D.m[1][3]=D.m[1][4]=D.m[1][5]=1;
D.m[2][1]=D.m[2][3]=D.m[2][5]=D.m[2][6]=1;
D.m[3][1]=D.m[3][2]=D.m[3][4]=D.m[3][6]=1;
D.m[4][1]=D.m[4][3]=D.m[4][5]=D.m[4][6]=1;
D.m[5][1]=D.m[5][2]=D.m[5][4]=D.m[5][6]=1;
D.m[6][2]=D.m[6][3]=D.m[6][4]=D.m[6][5]=1;
}
ans.m[st][1]=1;
n++;
for(int i=1;i<n;i++)
D.m[n][i]=D.m[ed][i];
D.m[n][n]=1;
ans=Multi(Pow(D,K),ans);
printf("%lld\n",ans.m[n][1]);
}
return 0;
}
题意:已知一个正n边形上的三个点,求n的最小值以及正n边行中心坐标
思路:依据三个点求三角形的外心。然后遍历n,求得一个n使得三个角都是180/n的倍数
卡精度,输出坐标的时候处理好-0.0001这样的数据
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
#define pi acos(-1.0)
#define eps 1e-6
struct point{
double x,y;
point(double xx=0,double yy=0){
x=xx,y=yy;
}
point operator-(point b)
{
return point(x-b.x,y-b.y);
}
double operator*(point b)
{
return x*b.x+y*b.y;
}
};
struct line{point a,b;};
double sq(double x){
return x*x;
}
double dist(point p1,point p2){
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
point intersection(line u,line v){
point ret=u.a;
double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))
/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));
ret.x+=(u.b.x-u.a.x)*t;
ret.y+=(u.b.y-u.a.y)*t;
return ret;
}
point circumcenter(point a,point b,point c){
line u,v;
u.a.x=(a.x+b.x)/2;
u.a.y=(a.y+b.y)/2;
u.b.x=u.a.x-a.y+b.y;
u.b.y=u.a.y+a.x-b.x;
v.a.x=(a.x+c.x)/2;
v.a.y=(a.y+c.y)/2;
v.b.x=v.a.x-a.y+c.y;
v.b.y=v.a.y+a.x-c.x;
return intersection(u,v);
}
double angle(point a,point b,point c){
point d,e;
d=b-a,e=c-a;
return acos(d*e/(sqrt(sq(d.x)+sq(d.y))*sqrt(sq(e.x)+sq(e.y))));
}
bool is_ok(double n,int i){
double cnt=i*n/pi;
return fabs(cnt-round(cnt))<eps;
}
int main(){
int T; scanf("%d",&T);
while(T--){
point p[3];
for(int i=0;i<3;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
point o=circumcenter(p[0],p[1],p[2]);
double x=angle(p[0],p[1],p[2]);
double y=angle(p[1],p[2],p[0]);
double z=angle(p[2],p[0],p[1]);
int i=3;
for(;i<=100000;i++){
if(is_ok(x,i) && is_ok(y,i) && is_ok(z,i)) break;
}
printf("%.4lf %.4lf %d\n",o.x+eps,o.y+eps,i);
}
return 0;
}
ACdream区域赛指导赛之专题赛系列(1)の数学专场的更多相关文章
- X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp
0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...
- ACdream区域赛指导赛之手速赛系列(2)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/DaiHaoC83E15/article/details/26187183 回到作案现场 ...
- ACdream区域赛指导赛之手速赛系列(5) 题解
A - Problem A Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submi ...
- ACdream区域赛指导赛之手速赛系列(7)
A -Dragon Maze Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Submi ...
- 2018年 第43届ACM-ICPC亚洲区域赛(青岛)现场赛 赛后总结
下了动车后,又颠颠簸簸的在公交车上过了接近一个小时,本来就晕车,于是,到的时候脑子晕死了,而且想吐.可能是没吃早饭的缘故,午饭好好次QWQ. 开幕式 还是第一次在这种环境下参赛,记得以前是看老师发的学 ...
- Digit sum (第 44 届 ACM/ICPC 亚洲区域赛(上海)网络赛)进制预处理水题
131072K A digit sum S_b(n)Sb(n) is a sum of the base-bb digits of nn. Such as S_{10}(233) = 2 + 3 ...
- 【王者荣耀之IT大神版】比赛制度说明(匹配赛、排位赛、赏金赛)
匹配赛(30分钟): 所得金币=6金币/分钟 经验(挂机:玩手机超过30秒): 名次 经验值 胜利条件 失败条件 1 5 提前10min 超出1min 2 4 提前8min 超出3min 3 4 提前 ...
- 【有奖】NOIP普及组模拟赛 个人邀请赛 乐多赛
题目描述 日本数学家角谷有一个猜想:任意一个自然数,经过以下过程,最终会得到1.现在请你打印出任意一个数使用角谷猜想转换为1需要几次. 演变方式: 1.如果这个数为奇数,则将它×3+1.如果这个数为偶 ...
- 【模拟赛】BYVoid魔兽世界模拟赛 解题报告
题目名称(点击进入相关题解) 血色先锋军 灵魂分流药剂 地铁重组 埃雷萨拉斯寻宝 源文件名(.c/.cpp/.pas) scarlet soultap subway eldrethalas 输入文件名 ...
随机推荐
- 什么是JavaScript对象?
对象是JavaScript的基本数据类型.对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值.对象也可看做是属性的无序集合,每个属性都是一个名/值对.属性名是字符串,因 ...
- 数据库得到too many connections”错误信息
查进程 show processlist删除进程 kill ID查完整sql show full processlist; 连数据库 MySQL -S /tmp/mysql.sock 或 ...
- php 获取客户端的真实ip地址 通过第三方网站
<?php include 'simple_html_dom.php'; // 1获取真实IP地址方式 function get_onlineip() { $ch = curl_init('ht ...
- 319 Bulb Switcher 灯泡开关
初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡切换一次开关. 第 3 轮,每三个灯泡切换一次开关(如果关闭,则打开,如果打开则关闭).对于第 i 轮,你每 i 个灯 ...
- EasyUI系列学习(四)-Droppable(放置)
一.创建组件 1.使用标签创建一个放置区 <div id="pox" class="easyui-droppable" style="width ...
- java中使用String的replace方法替换html模板保存文件
在我们的D盘下有这样一个html模板,现在我们要做的就是解析news.template文件,从数据库中提取数据将数据添加到指定的模板位置上 <head> <title>{tit ...
- drupal 8 ——自定义权限
在项目开发里面,我遇到了这么一个需求,就是对于node的title字段,编辑内容的角色不允许对title进行编辑.title字段是创建内容类型时自动生成的字段,不能在drupal8后台直接配置权限,所 ...
- 巧用Eclipse Java编辑器调试
在使用Eclipse开发Java Web应用时,使用的编辑器不但能够为开发者提供代码编写.辅助提示和实时编译等常用功能,而且还能够对Java源代码进行快捷修改.重构和语法纠错等高级操作.通过Eclip ...
- MAC 中安装和使用express
其实window系统和mac的操作在大致上其实是想同的,只是一些细节的区别,以下对在mac下安装和使用express做简要介绍,如有不妥之处请各位大神指教. 一.首先要测试node和npm是否已经正确 ...
- Angular——表单指令
基本介绍 这些指定只能针对input标签 基本使用 <!DOCTYPE html> <html lang="en"> <head> <me ...