Regionals 2012 :: Asia - Dhaka
题意:求每个点的度数
分析:可以在,每个字母的的两个端点里求出的的出度,那么除了起点外其他点还有一个入度,再+1
/************************************************
* Author :Running_Time
* Created Time :2015/11/4 星期三 13:22:03
* File Name :B.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e3 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = acos (-1.0);
int vis[33];
char s[N];
int p1[33], p2[33];
int ans[33]; int main(void) {
int T, cas = 0; scanf ("%d", &T);
while (T--) {
scanf ("%s", &s);
memset (ans, -1, sizeof (ans));
memset (vis, 0, sizeof (vis));
memset (p1, -1, sizeof (p1));
memset (p2, -1, sizeof (p2));
int len = strlen (s);
for (int i=0; i<len; ++i) {
if (ans[s[i]-'A'] == -1) ans[s[i]-'A'] = 0;
if (p1[s[i]-'A'] == -1) p1[s[i]-'A'] = i;
else p2[s[i]-'A'] = i;
}
for (int i=0; i<len; ++i) {
if (vis[s[i]-'A'] == 1) continue;
int j = p1[s[i]-'A'] + 1;
if (j == p2[s[i]-'A']) {
//ans[s[i]-'A'] = 1; vis[s[i]-'A'] = 1;
continue;
}
while (j < p2[s[i]-'A']) {
ans[s[i]-'A']++;
j = p2[s[j]-'A'] + 1;
}
vis[s[i]-'A'] = 1;
}
for (int i=0; i<26; ++i) ans[i]++;
ans[s[0]-'A']--; printf ("Case %d\n", ++cas);
for (int i=0; i<26; ++i) {
if (ans[i] <= 0) continue;
printf ("%c = %d\n", 'A' + i, ans[i]);
}
} //cout << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; return 0;
}
水 C Memory Overflow
/************************************************
* Author :Running_Time
* Created Time :2015/11/4 星期三 12:55:22
* File Name :C.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 5e2 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = acos (-1.0);
char s[N]; int main(void) {
int T, cas = 0; scanf ("%d", &T);
while (T--) {
int n, k; scanf ("%d%d", &n, &k);
scanf ("%s", &s);
int ans = 0;
for (int i=0; i<n; ++i) {
bool flag = false;
for (int j=max (0, i-k); j<i; ++j) {
if (s[j] == s[i]) {
flag = true; break;
}
}
if (flag) ans++;
}
printf ("Case %d: %d\n", ++cas, ans);
} //cout << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; return 0;
}
暴力/高斯消元 E Poker End Games
只会暴力
/************************************************
* Author :Running_Time
* Created Time :2015/11/4 星期三 18:34:27
* File Name :E.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = acos (-1.0); int main(void) {
int T, cas = 0; scanf ("%d", &T);
while (T--) {
int a, b; scanf ("%d%d", &a, &b);
double p = 1.0, round = 0, win = 0;
int n = 1e6;
for (int i=1; i<=n; ++i) {
if (a == b) {
round += p * i;
win += p * 0.5;
break;
}
if (a > b) {
a -= b; b += b;
round += p * i * 0.5;
win += p * 0.5;
}
else if (a < b) {
b -= a; a += a;
round += p * i * 0.5;
}
p *= 0.5;
}
printf ("Case %d: %.6f %.6f\n", ++cas, round, win);
} //cout << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; return 0;
}
题意:判断能否根据某个点是'*'来区别出形状,必须是‘*',其他的都是'.'才行。
/************************************************
* Author :Running_Time
* Created Time :2015/11/4 星期三 14:03:02
* File Name :F.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = acos (-1.0);
char s[40][20][50];
char ss[40];
int id[40];
int ans[20]; int f(char ch) {
if (ch >= 'A' && ch <= 'Z') return ch - 'A';
else return 26 + (ch - '0');
} int main(void) {
int n, m, cas = 0; scanf ("%d%d", &n, &m);
scanf ("%s", &ss);
//printf ("%s\n", ss);
memset (id, -1, sizeof (id));
for (int i=0; i<n; ++i) {
id[f (ss[i])] = i;
for (int j=0; j<17; ++j) {
scanf ("%s", s[i][j]);
}
/*
for (int j=0; j<17; ++j) {
printf ("%s\n", s[i][j]);
}
*/
} for (int i=0; i<m; ++i) {
scanf ("%s", &ss);
int len = strlen (ss);
for (int j=0; j<len; ++j) {
ans[j] = 0;
if (id[f (ss[j])] == -1) continue;
for (int k=0; k<16 && !ans[j]; ++k) { //row
for (int l=0; l<43 && !ans[j]; ++l) { //col
bool flag = true;
if (s[id[f (ss[j])]][k][l] != '*') continue;
for (int ii=0; ii<len; ++ii) {
if (ii == j) continue;
if (id[f (ss[ii])] == -1) continue;
if (s[id[f (ss[ii])]][k][l] != '.') {
flag = false; break;
}
}
if (flag) ans[j] = 1;
}
}
}
printf ("Query %d: ", ++cas);
for (int i=0; i<len; ++i) {
printf ("%c", ans[i] ? 'Y' : 'N');
}
puts ("");
} //cout << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; return 0;
}
DP I Learning Vector
题意:给了一些向量,问选出一些与x坐标轴组成的多变形面积最大
分析:开始以为贪心,因为很难想DP把之前的选的向量保存起来。看题解才知道,dp[i][j][h] 表示前i个选择了j个,最后高度为h组成的面积,那么状态转移时不需要知道之前的长度,用梯形面积公式累加多出来的面积就行了。另外,向量应该先极角排序。
/************************************************
* Author :Running_Time
* Created Time :2015/11/4 星期三 15:47:19
* File Name :I_2.cpp
************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double EPS = 1e-10;
const double PI = acos (-1.0);
int dcmp(double x) { //三态函数,减少精度问题
if (fabs (x) < EPS) return 0;
else return x < 0 ? -1 : 1;
}
struct Vec {
int x, y;
Vec () {}
Vec (int x, int y) : x (x), y (y) {}
}vs[55];
bool cmp(Vec A, Vec B) {
return dcmp (A.x * B.y - A.y * B.x) < 0;
} int dp[55][55][2550]; int main(void) {
int T, cas = 0; scanf ("%d", &T);
while (T--) {
int n, k; scanf ("%d%d", &n, &k);
int H = 0;
for (int x, y, i=1; i<=n; ++i) {
scanf ("%d%d", &vs[i].x, &vs[i].y);
H += vs[i].y;
}
sort (vs+1, vs+1+n, cmp);
memset (dp, -1, sizeof (dp));
dp[0][0][0] = 0;
for (int i=0; i<n; ++i) {
for (int j=0; j<=i && j<=k; ++j) {
for (int h=0; h<=H; ++h) {
if (dp[i][j][h] == -1) continue;
dp[i+1][j][h] = max (dp[i+1][j][h], dp[i][j][h]);
if (j < k) {
int hh = h + vs[i+1].y;
dp[i+1][j+1][hh] = max (dp[i+1][j+1][hh], dp[i][j][h] + (h + hh) * vs[i+1].x);
}
}
}
} int ans = 0;
for (int i=0; i<=H; ++i) if (ans < dp[n][k][i]) ans = dp[n][k][i];
printf ("Case %d: %d\n", ++cas, ans);
} //cout << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; return 0;
}
Regionals 2012 :: Asia - Dhaka的更多相关文章
- [Regionals 2012 :: Asia - Tokyo ]
链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=56 ...
- Regionals 2012, Asia - Jakarta 解题报告
啥都不会做了.. 做题慢死 A.Grandpa's Walk 签到题. 直接DFS就行. 注意先判断这个点可以作为一个路径的起点不. 然后再DFS. 否则处理起来略麻烦 #include <io ...
- 2015 UESTC Winter Training #4【Regionals 2008 :: Asia - Tehran】
2015 UESTC Winter Training #4 Regionals 2008 :: Asia - Tehran 比赛开始时电脑死活也连不上WIFI,导致花了近1个小时才解决_(:зゝ∠)_ ...
- HDU-4432-Sum of divisors ( 2012 Asia Tianjin Regional Contest )
Sum of divisors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4436 str2int(后缀自动机)(2012 Asia Tianjin Regional Contest)
Problem Description In this problem, you are given several strings that contain only digits from '0' ...
- Regionals 2012 :: Chengdu
题目连接 排行榜 A和I都是签到题 按位BFS K Yet Another Multiple Problem 题意:给一些可以用的数字,求最小的数,它由特定的数字组成且是n的倍数 分析:暴力枚举不可行 ...
- Regionals 2012 :: HangZhou
题目传送门排行榜 一个人做了12年北大出的题,自己还是太弱了,图论的知识忘光光,最小生成树裸题写不来,Dijkstra TLE不知道用SPFA. 简单几何(点到线段的距离) + 三分 B Steali ...
- 2012 Asia Chengdu Regional Contest
Browsing History http://acm.hdu.edu.cn/showproblem.php?pid=4464 签到 #include<cstdio> #include&l ...
- 2012 Asia Hangzhou Regional Contest
Friend Chains http://acm.hdu.edu.cn/showproblem.php?pid=4460 图的最远两点距离,任意选个点bfs,如果有不能到的点直接-1.然后对于所有距离 ...
随机推荐
- 完美串(区间dp)
完美串 Description 爱美之心人皆有之,GG也不例外.所以GG他对于完美串有一种热衷的爱.在GG眼中完美串是一个具有无比魅力的01子串.这个子串有之其魅力之处,对它取反后水平翻转,它又和它原 ...
- shell kill掉含同一字符的关键字的进程
如何kill掉进程名包含某个字符串的一批进程:kill -9 $(ps -ef|grep 进程名关键字|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ') 观 ...
- 资源池设计模式 (Resource Pool)和数据池的简单实现
本人摘自:http://sourcemaking.com/design_patterns/object_pool Object Pool Design Pattern Intent Object po ...
- CSS3实现二十多种基本图形
CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出.直接用CSS3画出这些图形,要比贴图性能更好,体验更加,是一种非常好的网页美观方式. 这32种图形分别为圆形,椭圆形,三角形,倒三角形, ...
- [Effective JavaScript 笔记]第59条:避免过度的强制转换
js是弱类型语言.许多标准的操作符和代码库会把输入参数强制转换为期望的类型而不是抛出错误.如果未提供额外的逻辑,使用内置操作符的程序会继承这样的强制转换行为. functin square(x){ r ...
- 第19章 使用PXE+Kickstart部署无人值守安装
章节概述: 本章节将教会您通过PXE+DHCP+TFTP+VSftpd+Kickstart服务程序搭建出无人值守安装系统,从而批量部署客户机系统. 这种系统能够实现自动化运维.避免了重复性劳动,帮助提 ...
- Unity导出iOS真机测试教程
原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发 ...
- openCV的基本操作
http://www.cnblogs.com/luluathena/archive/2010/09/29/1838471.html
- C++ Set
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...
- 速度之王 — LZ4压缩算法(三)
LZ4使用 make / make clean 得到可执行程序:lz4.lz4c Usage: ./lz4 [arg] [input] [output] input : a filename Argu ...