20230417-20230423
20230417
闲话
每天都写太麻烦了所以合并一下...
感觉有点找到状态了,虽然在某些时候会被打回原形。
早上同桌换衣服了在操场上走了半圈没认出来。明天争取跑两圈()。什么时候能跑三圈啊(思索)
想和同学打球了。感觉羽毛球太有意思了。就是说很喜欢一起的友好的感觉。菜也没什么(应该)和同学在一起真的很有意思啊!!
就是说 crescent 真的很可爱。(扭曲)(阴暗的爬行)。
这人也太好了吧......
所以我到底性取向是什么(思索)
写作业的时候好像突然看懂了千与千寻的隐喻...
感觉应该练习一下语言能力,以后尽量写个题意。
题
【POJ3744】Scout YYF I
摆烂 不想写。
20230418
今日废话
什么时候能拥有一个稳定的精神状态啊...
就是说不论如何都很崩溃。
有点想结束某些东西,烦了,这种羁绊真的很无趣,不知道为什么有人会在乎这种无趣的东西...
有时候真的感觉自己像小丑一样。惦记那破几把友情。
真的总是,笑但是笑不出来...
人家还不一定惦记着你。你在主动什么
凡是不想想自己配不配吗
就我这样的人,怎么配拥有我期待的友情捏捏捏。
就是说凭什么我没有破防的权利。压力之下不破防才是不正常的吧...
不想接收别人的负面情绪。
是不是做不到秒回就可以逐渐忘却捏。
想吃零食了..... 好崩溃......
今天的题
P8382 [POI2004] Gra
[TJOI2015]组合数学 | P3974
其实这题可以贪,但是还是看一下这个结论。
Dilworth 定理:最长反链=最小链覆盖=最大独立集
最小链覆盖:指选出最少的链 (可以重复) 使得每个点都在至少一条链中
最大独立集:指最大的集合使集合中任意两点不可达
此题中独立集显然是一个满足集合中任意两点都是左下 - 右上的关系的集合。最大独立集即在图中选出一些点,使得它们两两不可达且权值和最大。
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int T,mp[1005][1005],n,m,dp[1005][1005];
int main(){
ios::sync_with_stdio(false),cin.tie(0);cin>>T;
while(T--){
cin>>n>>m;memset(mp,0,sizeof(mp)),memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>mp[i][j];
for(int i=1;i<=n;i++)for(int j=m;j>=1;j--)
dp[i][j]=max(dp[i-1][j+1]+mp[i][j],max(dp[i-1][j],dp[i][j+1]));
cout<<dp[n][1]<<"\n";
}
return 0;
}
20230419
废话一堆
跟一些深陷八卦之中的同学聊过之后感觉自己还是太单纯了。
不过其实无所谓,毕竟、好像都一样。
既然也想晨跑那就一起去吧。
但说实话感觉八卦真的很烦()但是这么可爱的同桌难道我能不想草吗
首先我是变态。
失败的我,失败的人生。
精神压力好大...
突然意识到是因为早上那两声不成人生的呜咽...?或者我更愿意称为动物性的释放。但是大喊大叫还是要看别人心情的是什么人阿,奴隶吗。
呜。
想看点书但是好像挺没时间的。
就是说语文能力真的差得不行。
是那种看祝福什么都看不出来的孩子。
是那种被老师表扬一下能开心一天甚至一周甚至能记一辈子的人。
真的,好开心...
甚至知道老师还记得我都很开心。
和老师说话很开心,
不被同学孤立也很开心。
很容易就感到开心是一件令人开心的事情,但是我总感到可悲。
洛浔今天水什么题
bzoj4767 两双手
首先解一个方程,解出来从原点到终点和障碍点需要多少步。
设从原点走到这个点需要两种分别走 , 步,从原点走到这里不经过任何障碍的方案数为 。
如果不考虑障碍物 。
然后考虑一条路径经过某个障碍点。从原点走到障碍点,从障碍点走到终点。
所以 。
排个序然后容斥 dp 就可以了。
//#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
const int N=1000005+5,mod=1000000007;
int n;
class inv_init{
public:
void init(){
inv[0]=inv[1]=1;
for(int i=2;i<=1000005;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
jc[0]=jcn[0]=jc[1]=jcn[1]=1;
for(int i=2;i<=1000005;i++) jc[i]=jc[i-1]*i%mod;
for(int i=2;i<=1000005;i++) jcn[i]=jcn[i-1]*inv[i]%mod;
}
int C(int nn,int mm){
if(nn>mm) return 0;
if(nn<0||mm<0)return 0;
return jc[mm]*jcn[nn]%mod*jcn[mm-nn]%mod;
}
private:
ll jc[N],jcn[N],inv[N];
}INV;
int ax,ay,bx,by,ex,ey;
void calc(int &x,int &y){
int t1,t2,dx,dy,tmp;
dx=x,dy=y;
tmp=by*ax-bx*ay;
if(tmp==0) {x=-1,y=-1;return;}
t1=(dy*ax-dx*ay),t2=(dx*by-dy*bx);
if((t1/tmp)*tmp!=t1||(t2/tmp)*tmp!=t2) {x=-1,y=-1;return;}
x=t1/tmp,y=t2/tmp;
return ;
}
struct node{int x,y;}a[N];
ll f[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>ex>>ey>>n>>ax>>ay>>bx>>by;
calc(ex,ey);
for(int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y,calc(a[i].x,a[i].y);
if(a[i].x<0||a[i].y<0||a[i].x>ex||a[i].y>ey)i--,n--;
}
a[++n]=(node){ex,ey};
sort(a+1,a+n+1,[](node u,node v){return (u.x==v.x)?(u.y<v.y):(u.x<v.x);});
INV.init();
for(int i=1;i<=n;i++){
f[i]=INV.C(a[i].x,a[i].x+a[i].y);
if(!f[i]) continue;
for(int j=1;j<i;j++)
f[i]-=f[j]*INV.C(a[i].x-a[j].x,a[i].x-a[j].x+a[i].y-a[j].y)%mod,f[i]=(f[i]%mod+mod)%mod;
}
cout<<f[n];
return 0;
}
P3160 [CQOI2012] 局部极小值
题意
给定一个 的矩阵 (),给定一些点,有且仅有它们是矩阵的局部最小值(定义为八联通中最小的值)。问填入互不相同的的方案数。
题解
首先不考虑有且仅有的限制。
设 表示 选出的集合为 i,现在已经填到 j 的方案,然后这个东西好做的。
考虑有且仅有的条件。就是多一个的时候减掉,多两个的时候加上。以此类推。然后就可以 dp 了。
#include<bits/stdc++.h>
using namespace std;
const int P=10,S=1000+5;
const int mod=12345678,MR=10,MC=10;
const int N=MC*MR+2;
#define int long long
int n,m,ans;
int f[S][N],x[P],y[P],tp;
bool vis[10][10];
char g[10][10];
bool inmap(int x,int y){return x>=0&&y>=0&&x<n&&y<m;}
int calc(){
tp=0;
for(int i=0;i<n;i++)for(int j=0;j<m;j++) if(g[i][j]=='X') x[tp]=i,y[tp]=j,tp++;
memset(f,0,sizeof(f));
f[0][0]=1;
for(int s=0;s<(1<<tp);s++){
memset(vis,1,sizeof(vis));
for(int i=0;i<tp;i++){
if(!(s&(1<<i)))
for(int dx=-1;dx<=1;dx++)
for(int dy=-1;dy<=1;dy++)
if(inmap(x[i]+dx,y[i]+dy)) vis[x[i]+dx][y[i]+dy]=0;
}
int cnt=0;
for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(vis[i][j]) cnt++;
for(int i=0;i<=cnt;i++)
if(f[s][i]){
f[s][i+1]=(f[s][i+1]+f[s][i]*(cnt-i))%mod;
for(int j=0;j<tp;j++)
if(!(s&(1<<j))) f[s|(1<<j)][i+1]=(f[s|(1<<j)][i+1]+f[s][i])%mod;
}
}
return f[(1<<tp)-1][n*m];
}
void dfs(int x,int y,int k){
if(x>=n) ans=(ans+k*calc()%mod+mod)%mod;
else if(y>=m)dfs(x+1,0,k);
else{
dfs(x,y+1,k);
bool flag=1;
for(int dx=-1;dx<=1;dx++)
for(int dy=-1;dy<=1;dy++)
if(inmap(x+dx,y+dy)&&g[x+dx][y+dy]=='X') flag=0;
if(!flag) return ;
g[x][y]='X';
dfs(x,y+1,-k);
g[x][y]='.';
}
}
main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)cin>>g[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(g[i][j]=='X'){
for(int dx=-1;dx<=1;dx++)
for(int dy=-1;dy<=1;dy++)
if((dx||dy)&&inmap(i+dx,j+dy)&&g[i+dx][j+dy]=='X') {cout<<0;return 0;}
}
ans=0;
dfs(0,0,1);
cout<<ans %mod;
return 0;
}
20230420
废话一车
刚想看鹅妈妈有没有其他版本,然后想想 wwk 可能没时间调...
然后发现耳机续航真不错。
摆烂摆烂摆大烂
看二项式反演来着 我是傻逼 没看到文字说明对着组合意义查了2h/cy
20230421
中午去听朗诵会发现一班牛逼!!!
和可爱同桌一起感觉真的要被掰弯了()怎么有全身上下这么符合我 xp 的人????
感觉其实没什么想说的才不是因为全都忘了呢。但是回家有火锅吃,呜呜,真的很开心。
20230422
喵
今天上午搞了搞 yt 直播。能用 但是画质很低。梯子还是太 naive 了。
然后摆烂 下午打歌 pj 月赛随便打打。
但是我喝贡茶为什么还会肚子疼捏/xin。
感觉这茶不保真啊...
和日记错过两次(悲)我上楼他下楼,我下楼他上楼。
晚上听日记讲树套树,线段树套平衡树是好的。
啥都写不了了,看看 AT 的题吧。
problems
P3166 ALO
当时调破防了,现在一看数组开小了。
《int 是 32 位捏》
P4859 已经没有什么好害怕的了
看了很久的二项式反演,虽然还是没太看懂。
就是 存在 k 个是好做的,用 dp 就行,记为 f(i)。
然后就二项式反演一下。
就完事力。
代码不放了,懒得找。
大概是总结
其实效率很低,完全不知道为什么,但就是效率低。
大概是又不知道是干嘛了,又开始伤春悲秋了吧。
太傻逼了,不如和同桌贴贴。
但是他妈的为什么那个男生对她这么好,她也对他那么有感觉啊。
资源群太垃圾退了 px 没文看了我要自闭了。
哪里有高质量的文哼哼啊啊啊啊。
本文作者:洛浔
本文链接:https://www.cnblogs.com/Artemis-lx/p/17327512.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步