(迟到的)湖南湘潭程序设计邀请赛后感想

来到如此遥远的地域挑战未知,少有惊喜却多有险阻。
第一个签到题D题的疏忽几乎引起我的疯狂WA。实际上只是简单的边界问题的处理(分数值等于0)胡牛和张学长的仔细列举检验奏效了。
我个人花大量精力为F题写的线段树惨烈地挂了。Lazy标记未能体现出应有的使用价值。多种不同的修改操作与统计操作的优先级,必是平时练习时漏洞密布之处。
E题简单的计算几何遭遇了一些磕绊。张学长所归纳的方程是正确的,只是计算过程中变量范围的设置不甚合理。
相比之下,A题递推的实现较为顺利。
I题和J题是既面熟又陌生的题型。尽管全队坚持到了最后一刻,却未能再争取关键的突破。
赛后听解题报告会,发现原题无不存在破解的可能性?

【150707】Blog主题更换 - Amativeness(改) → Clearision

感谢不知名的作者提供的Amativeness主题,附带了华丽的特效,更给我一个精美的CSS调试用样例。
可是面对多样化的文章、页面类型,背景有待完善。
QQ截图20150707201448
WP-Touch插件未能及时更新,失去了移动端的前台支持。
所以下定决心,寻找自适应的主题,迎来了本blog第一次真正的主题更替。
钉子菊苣设计的Clearision主题就是这样的出彩而不浮华。
QQ截图20150707202342
向着网页前台的无限设计机遇的原始森林探险。

改良Eclipse Java EE IDE,使它的界面更顺眼、更酷炫

  • 当前使用的版本是 Luna Service Release 2 (4.4.2)

从所给的【链接】 下载Dark Juno主题,它修改了Eclipse所有的视图的颜色,工具栏也变成了暗黑主题。另外还需要修改编辑器的颜色主题。
下载Eclipse的颜色主题(Color Themes)插件,可通过Eclipse的Marketplace找到Eclipse Color Theme插件。

主题包下载完成后,请解压到Eclipse安装目录的dropins子目录下。
重启Eclipse,并选择菜单”Preferences”->”General”->”Appearance”,并选择Dark Juno主题。
代码高亮的颜色主题在它的下级选项Color Theme中选择。
QQ截图20150707135444
体验到如VS一般的酷黑风格了吧?
QQ截图20150707140352

=================================================
其实本该是这个样子的,可是总有什么不一样的地方?
http://blog.csdn.net/chszs/article/details/8301884

===========2015-07补充============================
进入Settings->General->Keys,修改Context Assist项目,可提供代码补全的快捷键支持。

6月底7月初兴风作浪折腾UEFI+GPT+Clover+Mac

太久没更新博客了,原因之一是此番折腾的曲折历程!

Stage 1

在硬盘前部空余空间(上次折腾后的预留空间)建立了200MB的fat32分区,并用bcdboot命令写入了win7引导文件,炮制了一个有“水分”的EFI分区。
主板早已启用UEFI,自然重启操作系统成功。接着心一急,手一横,没切换到PE系统就动用DG专业版转换分区表格式。结果出乎意料,却合情合理,win 7直接蓝屏。
心急火燎地喊来PE,把分区表格式从GPT转回MBR,可是DG不配合工作,在即将转成时报错终止。
直到此时,看似MBR,实则硬盘分区表出了隐性故障。win7启动卡在飘动的徽标处,再也进不去了。

Stage 2

三番五次倒腾分区与分区表,多次取用先前的C盘的ghost备份镜像,没有实际作用。

Stage 3

经百度经验查实,win7及其安装光盘所带的diskpart能够安全实现MBR与GPT互转。可是代价是丢失所有分区。
赶紧备份所有必要资料,把win7安装镜像搬到U盘。较为耗时的流程。
这下分区表重建了,而后手动建立了各个所需的分区方休。
还通过电话激活解决了不少工具束手无策的额外的win7 UEFI激活问题。

Cylinder Candy - The 15th Zhejiang University Programming Contest 求积分

原题地址
比赛时卡在这种题上,很是要命

Edward the confectioner is making a new batch of chocolate covered candy. Each candy center is shaped as a cylinder with radius r mm and height h mm.

The candy center needs to be covered with a uniform coat of chocolate. The uniform coat of chocolate is d mm thick.

You are asked to calcualte the volume and the surface of the chocolate covered candy.

Input

There are multiple test cases. The first line of input contains an integer T(1≤ T≤ 1000) indicating the number of test cases. For each test case:

There are three integers r, h, d in one line. (1≤ r, h, d ≤ 100)

Output

For each case, print the volume and surface area of the candy in one line. The relative error should be less than 10^-8.

Sample Input

2
1 1 1
1 3 5

Sample Output

32.907950527415 51.155135338077
1141.046818749128 532.235830206285

Author: ZHOU, Yuchen Source: The 15th Zhejiang University Programming Contest

在底面半径r mm,高h mm的圆柱体糖块外裹上一层厚度均匀的壳,求它的体积和表面积。
设外壳厚度为$ a $ mm(只是为了避免与微分符号混淆,原题中用d表示),

求体积

  • (1)糖果顶上和底下的各一个侧面圆滑的类台体
    $ z^2+{(y-r)}^2=a^2(y\ge r),y=\sqrt {a^2-z^2} +r.$
    $$
    \begin{array}
    \newline
    V_{台体}=\int_0^a{\pi (\sqrt {a^2-z^2} +r)^2 {\rm d}z}
    \newline\left( 或V_{台体}=\int_0^a {\rm d}z\int_0^{2\pi}{\rm d}\theta \int_0^{r+a\sqrt{1-\frac{z^2}{a^2}}}r{\rm d}r \right)
    \newline=\int_0^a \pi \left(r+a\sqrt{1-\frac{z^2}{a^2}}\right)^2 {\rm d}z
    \newline=\int_0^a \left( \pi r^2+\pi a^2\left(1-\frac{z^2}{a^2}\right)+2\pi ar\sqrt{1-\frac{z^2}{a^2}} \right) {\rm d}z
    \newline=\int_0^a \left( \pi r^2+\pi a^2 \right) {\rm d}z-\int_0^a \pi z^2{\rm d}z + \int_0^a 2\pi r\sqrt{a^2-z^2}{\rm d}z
    \newline=\pi a^3+\pi ar^2-\frac{\pi a^3}{3}+\frac{\pi^2 a^2r}{2}\newline
    \end{array}
    $$

  • (2)糖果中部的圆柱体
    $ V_{圆柱}=Sh=\pi r^2h=\pi(r+a)^2h$

  • (3)总体积
    $ V=2V_{台体}+V_{圆柱}=\frac{4\pi a^3}{3}+2\pi ar^2+\pi^2a^2r+\pi(r+a)^2h $

求表面积

  • (1)求上下各一个环状曲面的面积
    这个曲面(轮胎面)的参数方程为
    $$
    \begin{cases}
    x = (r+a {\rm cos}\varphi) {\rm cos}\theta \newline
    y = (r+a {\rm cos}\varphi) {\rm sin}\theta \newline
    z = a {\rm sin}\varphi
    \end{cases}
    $$
    用向量值函数表示为:$ \vec{f}(\theta,\varphi)=x(\theta,\varphi)\vec{i}+y(\theta,\varphi)\vec{j}+z(\theta,\varphi)\vec{k}$
    该曲面上某一点(x,y,z)处的基本法向量
    $$
    \vec{n}=(-\frac{\partial z}{\partial x},-\frac{\partial z}{\partial y},1)=\frac{\partial \vec{f}}{\partial \theta}\times\frac{\partial \vec{f}}{\partial \varphi}
    $$
    积分区域$ \Sigma=$ { $ \left(\theta,\varphi \right) | 0\le \theta \le 2\pi,0\le \varphi \le\frac{\pi}{2} $ }
    $$
    \begin{array}
    \newline
    S_{环}=\iint_\Sigma {\rm d}S=\iint_\Sigma |\vec{n}| {\rm d}x{\rm d}y\newline
    =\iint_\Sigma \sqrt{\left(-\frac{\partial z}{\partial x}\right)^2+\left(-\frac{\partial z}{\partial y}\right)^2+1}{\rm d}x{\rm d}y\newline
    =\iint_\Sigma \left|\frac{\partial \vec{f}}{\partial \theta}\times\frac{\partial \vec{f}}{\partial \varphi}\right| {\rm d}x{\rm d}y\newline
    =\int_0^\frac{\pi}{2} {\rm d}\varphi \int_0^{2\pi} a(r+a {\rm cos}\varphi) {\rm d}\theta\newline
    =\int_0^\frac{\pi}{2} 2\pi a(r+a {\rm cos}\varphi){\rm d}\varphi\newline
    =2\pi a\left.(r+a {\rm cos}\varphi)\right|_0^\frac{\pi}{2}=\pi^2 ar+2\pi a^2\newline
    \end{array}
    $$

  • (2)求侧面积
    $$
    S_{侧}=2 \pi(r+a)h
    $$

  • (3)求底面积
    $$
    S_{底}=\pi r^2
    $$

  • (4)总表面积
    $$
    S=S_{环}+S_{侧}+2S_{底}=\pi^2 ar+2\pi a^2+2 \pi(r+a)h+2 \pi r^2
    $$

Java 输入输出效率优化黑科技get

刚开始,用最常规的输入输出:

import java.util.*;
Scanner scan=new Scanner(System.in);
System.out.println("...");

面对海量输入输出数据,TLE妥妥的

接着有了下面这种姿势(输入流?):

import java.util.*;
import java.io.*;
Scanner scan=new Scanner(new BufferedInputStream(System.in));

效果不太理想。
最后查阅大神用于处理水题的代码,获得以下终极模板:

import java.io.*;
/*...*/
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
while(in.nextToken() != StreamTokenizer.TT_EOF){
    n=(long)in.nval;
    in.nextToken();
    m=(long)in.nval;
    out.println(n+" "+m);
}
out.flush();//刷新。若本行放循环体内,则毎输入一组数据即输出一组答案,但是效率降低
out.close();
}

2015 ACM-ICPC 上海5 24 现场状态

比赛过程中忘了写chs函数导致无论如何都调试不成
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define CLEAR(a,n) memset((a),0,n*sizeof((a)[0]))

using namespace std;

typedef long long LL;
typedef unsigned long long ULL;
const int maxn=1010;
const int inf=0x7fffffff;
const double eps=1e-3;

const int m1=0x00fc0000;
const int m2=0x0003f000;
const int m3=0x00000fc0;
const int m4=0x0000003f;

char str[maxn];

char chs(char ch)
{
if (ch>=0&&ch<26) return ch+’A’;
else if (ch>=26&&ch<52) return ch-26+’a’;
else if (ch>=52&&ch<62) return ch-52+’0’;
else if (ch==62) return ‘+’;
else if (ch==63) return ‘/‘;
}

void solve(char str[maxn])
{
char s[maxn]={‘&#92;&#48;’};
int len=strlen(str);
int tmp=0;
int pos=0;
for(int i=0;i<len;i++)
{
tmp<<=8;tmp+=int(str[i]);
if (!((i+1)%3))
{
s[pos++]=chs((tmp&m1)>>18);
s[pos++]=chs(((tmp&m2)>>12));
s[pos++]=chs(((tmp&m3)>>6));
s[pos++]=chs((tmp&m4));
tmp=0;
}
}
if (len%3)
{
tmp<<=(3-len%3)*8;
if ((tmp&m1)>0) s[pos++]=chs((tmp&m1)>>18);
if ((tmp&m2)>0) s[pos++]=chs(((tmp&m2)>>12));
if ((tmp&m3)>0) s[pos++]=chs(((tmp&m3)>>6));
if ((tmp&m4)>0) s[pos++]=chs((tmp&m4));
}
int sum=4-strlen(s)%4;
char *t=s+strlen(s);
if (sum<4)
for(int j=1;j<=sum;j++) *t++=’=’;
*t=’&#92;&#48;’;
strcpy(str,s);
}

int main()
{
int T;
scanf(“%d”,&T);
while(T–)
{
int k;
scanf(“%d%s”,&k,str);
for(int i=1;i<=k;i++) solve(str);
printf(“%s\n”,str);
}
return 0;
}
[/cpp]

2015 ACM-ICPC 上海大都会赛简要总结

别看一个ACMer在线上有多神通广大,到了现场赛变得多憋屈。
去了现场赛一定能学到很多实验室里体验不到的教训。

热身赛
二分图匹配用在棋盘覆盖上,省时省力!
容斥原理的变式应用,贪心;抓住了一些要点,但处理手段欠缺点

正式赛
卡题时间长
字符串模拟,手动实现Base64编码,写不好真是跟自己过不去。
概率计算不当,因为缺乏对边界线重叠的考虑;几何分布的概型应用时正确的。