这个场要恶心死我了。。

1001

积分题,不要四舍五入

//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
#define fi first
#define se second
#define db double
#define mp make_pair
#define pb push_back
#define pi acos(-1.0)
#define ll long long
#define vi vector<int>
#define mod 1000000007
#define ld long double
#define C 0.5772156649
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
//#define cd complex<double>
#define ull unsigned long long
#define base 1000000000000000000
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define fio ios::sync_with_stdio(false);cin.tie(0)
template<typename T>
inline T const& MAX(T const &a,T const &b){return a>b?a:b;}
template<typename T>
inline T const& MIN(T const &a,T const &b){return a<b?a:b;}
inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
inline void sub(ll &a,ll b){a-=b;if(a<)a+=mod;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll qp(ll a,ll b){ll ans=;while(b){if(b&)ans=ans*a%mod;a=a*a%mod,b>>=;}return ans;}
inline ll qp(ll a,ll b,ll c){ll ans=;while(b){if(b&)ans=ans*a%c;a=a*a%c,b>>=;}return ans;} using namespace std; const double eps=1e-;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=+,maxn=+,inf=0x3f3f3f3f; int a,b;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%d%d",&a,&b);
double ans=pi*a+2.0*b;
ll ret = ans * ;
printf("%.6f\n", 1.0 * ret / );
}
return ;
}
/******************** ********************/

1012

物理题。。。。

#include<bits/stdc++.h>
using namespace std;
const int N = ;
const int mod = ;
double a, b, x, y;
int main() {
int T; scanf("%d", &T);
while(T--) {
scanf("%lf%lf%lf%lf", &a, &b, &x, &y);
a=fabs(a);
b=fabs(b);
x=fabs(x);
y=fabs(y);
double h = x * (b) / a;
double val = b / sqrt(a * a + b * b);//sin double H=y-h;
double t=sqrt(*9.8*H)/9.8; double hi=;
for(int i = ;i <=; i++) {
hi+=*i*9.8*t*t*val*val;
if(hi>h){
printf("%d\n",i);
break;
}
}
} }

1009

村民永远无法确定,狼只能在只有一条狼边的环里确认,然后找出这些狼反推找其他狼。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define PLI pair<LL, int>
#define PLL pair<LL, LL>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = 1e5 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +;
const double PI = acos(-);
const double eps = 1e-; int to[N], n, a[N];
bool vis[N], is[N];
char s[]; vector<int> edge[N];
int deg[N];
int main() {
int T; scanf("%d",&T);
while(T--){
memset(vis, , sizeof(vis));
memset(deg, , sizeof(deg));
memset(is, , sizeof(is));
queue<int> que, Q;
scanf("%d",&n);
for(int i = ; i <= n; i++) edge[i].clear();
for(int i = ; i <= n; i++) {
scanf("%d%s", &to[i], s);
if(s[] == 'w') {
a[i] = ;
} else {
a[i] = ;
edge[to[i]].push_back(i);
}
deg[to[i]]++;
} for(int i = ; i <= n; i++) {
if(!deg[i]) {
is[i] = true;
Q.push(i);
}
} while(!Q.empty()) {
int u = Q.front(); Q.pop();
int v = to[u];
if(is[v]) continue;
deg[v]--;
if(!deg[v]) {
Q.push(v);
is[v] = true;
}
} for(int i = ; i <= n; i++) {
if(is[i]) continue;
int id = -, cnt = , now = i;
while(!is[now]) {
is[now] = true;
if(a[now]) cnt++, id = to[now];
now = to[now];
}
if(cnt == ) {
vis[id] = true;
que.push(id);
}
} while(!que.empty()) {
int u = que.front(); que.pop();
for(int i = ; i < edge[u].size(); i++) {
int v = edge[u][i];
if(vis[v]) continue;
vis[v] = true;
que.push(v);
}
} int ans = ;
for(int i = ; i <= n; i++)
if(vis[i]) ans++;
printf("0 %d\n", ans);
}
return ;
}
/*
*/

补题****************************************************************************************

1002

我们首先要找出这两个性质。。。

gcd(2 ^ a - 1, 2 ^ b - 1) = gcd(2 ^ (gcd(a, b)) - 1)

gcd(fib[ i ], fib[ j ]) = f [gcd(i , j)]

http://bestcoder.hdu.edu.cn/blog/

题解说的很清楚啦

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = 1e6 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int inv[N << ], f[N << ], finv[N << ], fib[N], bin[N], stk[N], a[N], n, k, tot; int fastPow(int a, int b) {
int ans = ;
while(b) {
if(b & ) ans = 1ll * ans * a % mod;
a = 1ll * a * a % mod; b >>= ;
}
return ans;
} void add(int &a, int b) {
a += b; if(a >= mod) a -= mod;
}
void sub(int &a, int b) {
a -= b; if(a < ) a += mod;
} void init() {
finv[] = f[] = inv[] = f[] = finv[] = fib[] = ;
for(int i = ; i < N * ; i++) {
inv[i] = 1ll * (mod - (mod / i)) * inv[mod % i] % mod;
}
for(int i = ; i < N * ; i++) {
f[i] = 1ll * f[i - ] * i % mod;
finv[i] = 1ll * finv[i - ] * inv[i] % mod;
}
for(int i = ; i < N; i++) fib[i] = (fib[i - ] + fib[i - ]) % (mod - );
} int comb(int n, int m) {
return 1ll * f[n] * finv[m] % mod * finv[n - m] % mod;
} int main() {
init();
int T; scanf("%d", &T);
while(T--) {
memset(a, , sizeof(a)); tot = ;
scanf("%d%d", &n, &k); int ans = ;
for(int i = n; i >= ; i--) {
if(n % i) continue;
a[i] = comb(n / i + k - , k - );
for(int j = i + i; j <= n; j += i)
sub(a[i], a[j]);
add(ans, 1ll * a[i] * (((fastPow(, fib[i]) - + mod) % mod)) % mod);
}
ans = 1ll * ans * fastPow(comb(n + k - , k - ), mod - ) % mod;
printf("%d\n", ans);
}
return ;
}

1004

区间dp,先把线段的两个端点用极坐标离散化一下,总共只有2*n个发射方向。

dp[ i ][ j ]表示把完全位于i, j之间的线段都射穿需要的代价,对于一个区间来说

然后枚举最大需要的能量发射的方向之后变成两个独立区间然后转移。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int n, tot;
LL f[N][N];
struct Point {
LL x, y;
Point(LL x = , LL y = ) : x(x), y(y) { }
} hs[N];
LL cross(const Point &a, const Point &b) {
return a.x * b.y - a.y * b.x;
}
bool operator < (const Point &A, const Point &B) {return cross(A, B) < ;}
bool operator == (const Point &A, const Point &B) {return cross(A, B) == ;}
struct Line {
Point L, R;
int w, l, r;
} a[N];
LL dp(int i, int j) {
if(i >= j) return ;
if(f[i][j] != -) return f[i][j];
int mx = -;
for(int k = ; k <= n; k++)
if(a[k].l >= i && a[k].r <= j && a[k].w > mx)
mx = a[k].w;
if(mx == -) return f[i][j] = ;
f[i][j] = INF;
for(int k = i; k <= j; k++) f[i][j] = min(f[i][j], dp(i, k - ) + dp(k + , j) + mx);
return f[i][j];
} int main() {
int T; scanf("%d", &T);
while(T--) {
memset(f, -, sizeof(f)); tot = ;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
LL h, l, r, w;
scanf("%lld%lld%lld%lld", &h, &l, &r, &w);
a[i].L = Point(l, h); a[i].R = Point(r, h); a[i].w = w;
hs[++tot] = a[i].L; hs[++tot] = a[i].R;
}
sort(hs + , hs + + tot);
tot = unique(hs + , hs + + tot) - hs - ;
for(int i = ; i <= n; i++) {
a[i].l = lower_bound(hs + , hs + + tot, a[i].L) - hs;
a[i].r = lower_bound(hs + , hs + + tot, a[i].R) - hs;
}
printf("%lld\n", dp(, tot));
}
return ;
} /*
*/

hdu多校6的更多相关文章

  1. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  2. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  3. 2015 HDU 多校联赛 5363 Key Set

    2015 HDU 多校联赛 5363 Key Set 题目: http://acm.hdu.edu.cn/showproblem.php? pid=5363 依据前面给出的样例,得出求解公式 fn = ...

  4. 2015 HDU 多校联赛 5317 RGCDQ 筛法求解

    2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据 ...

  5. [HDU多校]Ridiculous Netizens

    [HDU多校]Ridiculous Netizens 点分治 分成两个部分:对某一点P,连通块经过P或不经过P. 经过P采用树形依赖背包 不经过P的部分递归计算 树型依赖背包 v点必须由其父亲u点转移 ...

  6. 【杂题总汇】HDU多校赛第十场 Videos

    [HDU2018多校赛第十场]Videos 最后一场比赛也结束了…… +HDU传送门+ ◇ 题目 <简要翻译> 有n个人以及m部电影,每个人都有一个快乐值.每场电影都有它的开始.结束时间和 ...

  7. hdu多校1002 Balanced Sequence

    Balanced Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  8. HDU多校(Distinct Values)

    Problem Description Chiaki has an array of n positive integers. You are told some facts about the ar ...

  9. hdu 多校第一场

    1001 思路:打表可以发现只有3|n 和 4|n 的情况有解,判一下就好啦. #include<bits/stdc++.h> #define LL long long #define f ...

随机推荐

  1. Leetcode 138. 复制带随机指针的链表

    1.题目要求 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 2.解题思路 (1)笔试思路(求速度,拿分数):使用哈希表 /* ...

  2. 使用tcpdump监控网络消息发送

    tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpd ...

  3. JavaScript设计模式学习之单例模式

    一.单例模式介绍                 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问, ...

  4. Python学习笔记(Django篇)——3、创建第一个数据库模型

    Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习.   第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...

  5. python---aiohttp的使用

    1.aiohttp的简单使用(配合asyncio模块) import asyncio,aiohttp async def fetch_async(url): print(url) async with ...

  6. java加载驱动

    加载驱动方法 1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 2. DriverManager.r ...

  7. js的作用域深入理解

    一.什么是作用域 作用域是指对某一变量和方法具有访问权限的代码空间,Javascript的作用域只有两种:全局作用域和本地作用域,本地作用域是按照函数来区分的(即全局变量和局部变量)) 局部变量:只有 ...

  8. 安装在Linux下的jenkins执行windows下的bat命令

    launch method里面没有 launch agent via java web start 默认是disable 需要改成random 转载自: http://blog.csdn.net/so ...

  9. 【51NOD-0】1137 矩阵乘法

    [算法]简单数学 [题解] 对于A*B=C C中第i行第j列的数字由A中第i行和B中的j列的数字各自相乘后相加得到. 所以两个矩阵能相乘要求A的列数等于B的行数,复杂度为O(n3). #include ...

  10. 基本控件文档-UISlider属性---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址  //转载请注明出处--本文永久链接:http://www.cnblogs.com/C ...